Mcp
عیبیابی MCP#
بیشتر شکستهای MCP مشکل پیکربندیاند، نه ایراد سرور. از بیرون به درون پیش بروید: نخست endpoint را تأیید کنید، سپس توکن، بعد صلاحیت و در آخر شعبه.
تشخیص سریع#
| نشانه | علت احتمالی | رفع |
|---|---|---|
| کلاینت وصل نمیشود | URL غلط یا شبکه مسدود | از https://<host>/mcp/business استفاده کنید و ترافیک خروجی را باز بگذارید |
404 روی /mcp/test | محوطه آزمون غیرفعال است | تنها در local/testing با debug وجود دارد |
405 روی GET | انتقال فقط-POST است | با نوار آدرس مرورگر کاوش نکنید |
401 | توکن غایب، غلط یا لغوشده | سرّ را از تنظیمات دوباره کپی کنید |
403 api_ability_denied | صلاحیت یا مجوز زنده غایب است | صلاحیت و مجوز صفحه را اعطا کنید |
403 branch_scope_denied | شعبه بیرون از دامنه | از یک شعبه اعطاشده استفاده کنید |
422 branch_required | اعتبارنامه چندشعبهای بدون شعبه | branch_id یا سرصفحه بفرستید |
429 | محدودیت انفجاری یا سهمیه | Retry-After را رعایت کنید |
| هیچ ابزاری فهرست نمیشود | دستدادن شکست خورده | Accept و پاسخ JSON-RPC را بررسی کنید |
| نتیجههای خالی | شعبه یا پالایندهها همه را بیرون کردهاند | دامنه شعبه یا بازه تاریخ را گسترش دهید |
شکستهای احراز هویت#
401 integrationcredentialrequired#
هیچ توکنی به سرور نرسیده، یا توکن یک توکن یکپارچهسازی نیست.
- تأیید کنید سرصفحه
Authorization: Bearer <token>است، شامل واژهBearer. - تأیید کنید کلاینت هنگام پل زدن از stdout به HTTP سرصفحهها را حذف نمیکند.
- تأیید کنید
/mcp/businessرا فرا میخوانید، نه/api/v2را.
401 integrationcredentialinvalid#
اعتبارنامه لغو شده، تجارت غیرفعال است، یا توکن به کاربری جز کاربر اعتبارنامه تعلق دارد.
- وضعیت اعتبارنامه را در تنظیمات بررسی کنید.
- فعال بودن اشتراک و وضعیت تجارت را تأیید کنید.
- در مورد تردید، اعتبارنامه را گردش دهید؛ گردش همیشه یک توکن معتبر تولید میکند.
403 integrationmembershipinactive#
کارمند اخراج شده یا عضویتش برداشته شده است. برای یک کارمند فعال اعتبارنامه بسازید؛ راهی برای زنده کردن اعتبارنامه کهنه وجود ندارد.
شکستهای مجوزدهی#
403 apiabilitydenied#
اعتبارنامه آن صلاحیت را ندارد، یا نقش کارمند دیگر صفحه پشت آن را نمیدهد.
- تنظیمات را باز کنید و تأیید کنید صلاحیت روی اعتبارنامه علامت خورده است.
- صفحه دسترسی کارمند را باز کنید و تأیید کنید مجوز صفحه اعطا شده است.
- کلاینت را دوباره بارگذاری کنید؛ ارزیابی برای هر درخواست انجام میشود، بنابراین یک تلاش تازه پس از رفع کافی است.
403 branchscopedenied#
شعبه درخواستشده در مجموعه اعطاشده اعتبارنامه نیست، یا به تجارت تعلق ندارد.
branch_scope.allowed_branch_idsرا از/api/v2/contextبخوانید.- یکی از آن idها را استفاده کنید، یا آرگومان شعبه را بردارید تا پیشفرض به کار رود.
- idهای دیگر را به امید موفقیت یکی دوباره امتحان نکنید؛ این کار بهعنوان رد دامنه ثبت میشود.
422 branch_required#
اعتبارنامه به چند شعبه محدود است و فراخوانی هیچکدام را نام نبرده بود. branch_id را در آرگومانهای ابزار یا X-Business-Branch را در پیکربندی کلاینت بفرستید.
شکستهای محدودیت نرخ#
429 apiburstlimit_exceeded#
بیش از 60 درخواست در یک دقیقه از یک اعتبارنامه. منتظر Retry-After بمانید و سپس نرخ درخواست را کم کنید. یک دستیار که روی فراخوانی ابزار حلقه بزند به سرعت به این حد میرسد.
429 apiquotaexceeded#
مقدار اجازه روزانه یا ماهانه تمام شده است. scope، period، limit، used و reset_at را از بدنه بخوانید. گزینهها:
- منتظر زمان بازنشانی بمانید.
- فراوانی پرسوجویی یا اندازه صفحه را کم کنید.
- درباره پلان بالاتر از مدیر بپرسید.
- اگر جداسازی سهمیه مهم است، یکپارچهسازیها را میان صاحبان تقسیم کنید.
مشکلات انتقال#
| مشکل | توضیح | رفع |
|---|---|---|
| 405 روی GET یا DELETE | سرور فقط POST را میپذیرد | از کلاینت MCP استفاده کنید، نه مرورگر |
| اتصال زود بسته میشود | بافرینگ یا تایماوت پروکسی | بافرینگ را برای مسیر MCP غیرفعال کنید |
| خطاهای نشست | MCP-Session-Id پیش فرستاده نمیشود | از کلاینت مدیر نشست، یا یک پل استفاده کنید |
| HTML بهجای JSON | Accept: application/json غایب است | سرصفحه را اضافه کنید |
| محلی کار میکند، در production نه | محوطه آزمون در برابر اعتبارنامه واقعی | از اعتبارنامه production استفاده کنید |
نتیجههای ابزاری که غلط به نظر میرسند#
- فهرست خالی: شعبه در دوره درخواستشده داده ندارد، یا اعتبارنامه به شعبه دیگری دامنه شده است.
Purchase not found: id بیرون از دامنه دید است، یا سند حذف شده است.- مبلغها شبیه رشتهاند: آنها را اعشاری تجزیه کنید؛ برخی کلاینتها اعداد JSON را رشته نمایش میدهند.
- نام محصولات به زبان نادرست:
language_codeبفرستید؛ پیشفرض از تنظیم زبان برنامه پیروی میکند.
تأیید سالم بودن سرور#
GET /api/v2/healthنتیجه{"data":{"status":"ok"}}میدهد.GET /api/v2/contextبا همان توکن، دامنه و سهمیه را میدهد.tools/listپنج ابزار برمیگرداند.- یک فراخوانی
productsباper_page: 1یک سطر برمیگرداند.
اگر گام 2 کار کرد و گام 4 شکست، مشکل در آرگومانهای ابزار است نه در اتصال.
چه زمانی با پشتیبانی تماس بگیریم#
- endpoint context موفق باشد اما هر ابزار با
403شکست بخورد، درحالی که مجوزها بررسی شدهاند. - ابزاری داده از شعبهای بیرون از دامنه اعطاشده برگرداند.
- مصرف سهمیه بدون درخواست افزایش یابد.
- سرور برای یک ابزار بهطور پیوسته
500بدهد.
نام اعتبارنامه (هرگز خودِ توکن)، زمان، نام ابزار، آرگومانها و کد خطای بازگرداندهشده را شامل کنید.