# سرور MCP > https://docs.errora.org/products/mcp ارورا یک نقطهٔ **Model Context Protocol** در اختیار می‌گذارد تا ایجنت‌های هوش مصنوعی بتوانند خطاهایتان را تفکیک کنند: ردپا بخوانند، لاگ جست‌وجو کنند و باگ ببندند — همه محدود به آنچه صاحب توکن اجازهٔ دیدنش را دارد. ```text POST https:///mcp Authorization: Bearer errora_pat_… ``` پروتکل JSON-RPC 2.0 با متدهای استاندارد `initialize`، `tools/list` و `tools/call`. ## ۱. ساخت توکن دسترسی شخصی **پروفایل ← توکن‌های دسترسی شخصی ← توکن جدید**. یک‌بار کپی‌اش کنید؛ فقط پیشوند آن برای نمایش ذخیره می‌شود. نگاه کنید به [توکن‌های دسترسی شخصی](/account/tokens). ## ۲. وصل‌کردن کلاینت برای Claude Code یا Claude Desktop (فایل `.mcp.json` یا تنظیمات MCP خود برنامه): ```json { "mcpServers": { "errora": { "type": "http", "url": "https://errora.example.com/mcp", "headers": { "Authorization": "Bearer errora_pat_…" } } } } ``` Cursor و بقیهٔ کلاینت‌های MCP هم همین زوج آدرس و هدر را می‌گیرند. ## ابزارها | ابزار | چه می‌کند | | --- | --- | | `whoami` | کاربر احراز شده و سازمان‌هایش | | `list_projects` | پروژه‌های در دسترس کاربر، در صورت نیاز با فیلتر `organization_slug` | | `list_issues` | خطاهای یک پروژه — `query` به سبک Sentry، فیلترهای `status`، `environment`، `user`، مرتب‌سازی `sort` (`times_seen` یعنی تعداد رخداد) و `limit` | | `get_issue` | یک ایشو: برای خطا آخرین رویداد (استثنا و فریم‌های ردپا) و برای ایشوی کارایی، جزئیات زمان‌بندی | | `list_performance_issues` | مسیرها و جاب‌های کند همراه با p50/p75/p95/p99، توان عبوری و نرخ خطا | | `get_performance_issue` | زمان یک تراکنش کجا می‌رود: تفکیک به ازای op (کوئری، کش، HTTP، اجرای جاب)، کندترین اسپن‌ها و نمونه‌های اخیر | | `update_issue_status` | حل‌کردن / نادیده‌گرفتن / بازکردن دوباره (نیازمند دسترسی نوشتن روی خطا) | | `search_logs` | جست‌وجوی لاگ ساخت‌یافته: `query`، `level`، `user`، `stats_period`، `limit` | | `get_wallet_balance` | موجودی، سقف اعتبار و هزینهٔ مصرف دورهٔ جاری به تفکیک سرویس | هر ابزار به عضویت‌های صاحب توکن محدود است — ایجنت هرگز پروژه‌ای را نمی‌بیند که کاربرش نمی‌بیند. مقدار `user` می‌تواند دامنه‌دار باشد (`id:42`، `email:ada@example.com`، `username:ada`، `ip:10.0.0.9`) یا مقدار ساده‌ای که با هر کدام از این فیلدها مطابقت کند — همان نحوی که فیلتر کاربر در داشبورد در URL می‌گذارد. ## نمونهٔ یک نشست ```jsonc // tools/call {"jsonrpc":"2.0","id":2,"method":"tools/call", "params":{"name":"list_issues", "arguments":{"project":"checkout","query":"timeout","status":"unresolved","limit":10}}} ``` یک پرامپت مفید بعد از وصل‌شدن: > به مهم‌ترین خطاهای باز پروژهٔ `checkout` نگاه کن، ردپای بدترینشان را بخوان، کد متناظرش را در > این مخزن پیدا کن و یک اصلاح پیشنهاد بده. ## رصد ترافیک MCP خودتان اسپن‌هایی که سرورهای MCP تولید می‌کنند (`mcp.*`) داشبورد **MCP Server** را در [رصد هوش مصنوعی](/products/insights) تغذیه می‌کنند — ترافیک، کلاینت‌ها، متدها و پرکاربردترین ابزارها. ## امنیت - هر توکن شخصی **دسترسی‌های صاحب خودش** را دارد. به ایجنت‌ها توکنی از حسابی بدهید که دقیقاً همان دسترسی موردنظرتان را دارد. - توکن‌ها هش‌شده ذخیره می‌شوند و هر لحظه از همان صفحه قابل ابطال‌اند. - این نقطه عمداً فقط با توکن کار می‌کند — بدون کوکی، بدون نشست و بدون مسیر CSRF. ## عیب‌یابی | نشانه | علت / راه‌حل | | --- | --- | | پاسخ `401` | اشتباه تایپی در توکن، توکن باطل‌شده، یا نبود پیشوند `Bearer ` | | کلاینت هیچ ابزاری نمی‌بیند | `initialize` را کامل نکرده، یا انتظار SSE دارد — ارورا JSON-RPC روی HTTP ساده حرف می‌زند | | `403` روی `update_issue_status` | صاحب توکن روی آن پروژه `issue:write` ندارد | | `list_projects` خالی است | کاربر عضو سازمان هست ولی روی هیچ پروژه‌ای `project:read` ندارد |