پرش به محتوای اصلی
پرش به محتوای مقاله

۴ نقطه شکست بحرانی در استقرار سرورهای MCP با احراز هویت OAuth

·۲۴ مرداد ۱۴۰۵۴ دقیقه مطالعه۴ بازدید
راهنما
چهار مشکل OAuth در راه‌اندازی سرور MCP ریموت: تجربه عملی
چهار مشکل OAuth در راه‌اندازی سرور MCP ریموت: تجربه عملی
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

افشای تضاد میان استانداردهای رسمی MCP و رفتار واقعی کلاینت‌های اصلی (Claude/Cursor)؛ به‌ویژه در بخش مذاکره نسخه و شناسایی OAuth که در مستندات ذکر نشده است.

اگر همین حالا در حال توسعه ابزارهای متصل به مدل‌های زبانی هستید، احتمالاً متوجه شده‌اید که فاصله زیادی میان «مستندات رسمی» و «واقعیت اجرا» وجود دارد. استقرار یک سرور MCP از راه دور به ندرت به سادگیِ دنبال کردن مشخصات فنی است. طبق گزارش منتشر شده در ۱۵ اوت ۲۰۲۶، تیم ClearBounce — سرویس پشت یک ابزار جدید تأیید ایمیل برای هوش مصنوعی — دریافت که پیچیده‌ترین چالش‌های استقرار سرورهای پروتکل زمینهٔ مدل (MCP) در «نقاط خاکستری» نهفته است؛ یعنی جایی که کلاینت‌ها و دایرکتوری‌ها بر سر نحوه پیاده‌سازی با یکدیگر اختلاف نظر دارند. این تیم چهار نقطه شکست اصلی را شناسایی کرد که می‌تواند باعث خرابی خاموش یکپارچگی در محیط عملیاتی شود.

زمینه (Context)

برای توسعه‌دهندگان، پروتکل زمینه مدل (MCP) به دستیاران هوش مصنوعی اجازه می‌دهد تا با داده‌ها و ابزارهای خارجی تعامل داشته باشند. اگرچه این پروتکل برای ایجاد قابلیت همکاری (Interoperability) طراحی شده است، اما اکوسیستم واقعی آن تکه‌تکه است. این وضعیت را شبیه به ساختن دری تصور کنید که طبق تمام قوانین معماری ساخته شده است، اما متوجه می‌شوید کلیدهایی که توسط محبوب‌ترین تولیدکنندگان قفل ارائه شده‌اند، کمی شکل متفاوتی دارند و در قفل نمی‌خورند.

از آنجا که این پروتکل هنوز در حال تکامل است، توسعه‌دهندگان اغلب درمی‌یابند که مستندات رسمی، حرف آخر نیستند. نحوه پیاده‌سازی بین کلاینت‌های بزرگی مانند Claude، ChatGPT و Cursor متفاوت است و دایرکتوری‌هایی که این سرورها را فهرست (Index) می‌کنند، اغلب الزامات متضاد خود را دارند.

نخستین تله بزرگ، مذاکره بر سر نسخه پروتکل است. Claude Code اگر سرور نسخه‌ای جدیدتر از آنچه کلاینت انتظار دارد بازگرداند، از اتصال امتناع می‌کند. برای مثال، بازگرداندن نسخه‌ای مانند 2026-07-28 می‌تواند باعث شود کلاینت با خطای «نسخه پروتکل سرور پشتیبانی نمی‌شود» (Server's protocol version is not supported) ارتباط را قطع کند.

به جای تبلیغ آخرین نسخه پشتیبانی شده، توسعه‌دهندگان باید دقیقاً همان نسخه‌ای را که کلاینت در فیلد params.protocolVersion درخواست کرده است، بازگردانند (Echo کنند). تیم ClearBounce توصیه می‌کند هر نسخه‌ای را که کلاینت در قالب یک تاریخ معقول درخواست می‌کند بپذیرید و همان را بازگردانید؛ یعنی این فرآیند را به جای «تبلیغ قابلیت‌ها»، به عنوان یک «مذاکره محتوایی» (Content Negotiation) مدیریت کنید.

چالش دوم و گیج‌کننده‌تر، شناسایی OAuth است. برای فعال شدن جریان اتصال حساب در claude.ai یا ChatGPT، سرور باید یک پاسخ ۴۰۱ (Unauthorized) را همراه با هدر WWW-Authenticate ارسال کند که به متادیتای منبع محافظت‌شده اشاره می‌کند (مثلاً https://example.com/.well-known/oauth-protected-resource/mcp). اگر سرور پاسخ ۴۰۳ (Forbidden) بدهد یا لیستی از ابزارها را به صورت ناشناس از طریق tools/list نمایش دهد، کلاینت‌ها هرگز جریان OAuth را آغاز نخواهند کرد.

تناقض اینجاست که پیروی از این مشخصات فنی منجر به بررسی‌های سلامت (Health Checks) متناقض می‌شود. اسکنرِ یک دایرکتوری، سروری را که پاسخ ۴۰۱ می‌دهد به عنوان «ناسالم» (Unhealthy) علامت می‌زند، در حالی که دایرکتوری دیگر دقیقاً همین پاسخ را برای شناسایی OAuth الزامی می‌داند. در نتیجه، پیاده‌سازی از نظر فنی درست، منجر به دریافت یک «نشان قرمز» شکست در محیط عمومی می‌شود.

جزئیات (Details)

پایش این نقاط انتهایی (Endpoints) بسیار حیاتی است زیرا یک اکوسیستم نامرئی از خزنده‌ها در حال فعالیت است. ClearBounce در اولین روز استقرار خود، حدود ۲۰۰ فراخوانی initialize بدون احراز هویت از کلاینت‌های ناشناس ثبت کرد.

  • اکوسیستم خزنده‌ها: این تیم بات‌هایی مانند mcpbeat 0.1 ،smithery-probe ،agent-tools.cloud 0.1 ،zdi-well-wirer 1.0 ،agentic-resource-search 0.4 ،trimtab-verifier 0.1 و glama-mcp-inspector 1.0.0 را شناسایی کرد.
  • رفتار کاوشگرانه: برخی از این خزنده‌ها حتی متدهای ناموجود (مانند this/method/does/not/exist) را فراخوانی کردند تا بررسی کنند آیا مدیریت خطای سرور منطقی و سالم است یا خیر.
  • ابزار اندازه‌گیری: برای ردیابی این موارد، تیم یک جدول «ارسال و فراموش» (fire-and-forget) پیاده‌سازی کرد که برای هر درخواست JSON-RPC، مواردی چون متد، نام ابزار، نام کلاینت، نوع احراز هویت، وضعیت موفقیت/خطا و مدت زمان پاسخ‌دهی را ثبت می‌کرد.

از آنجا که MCP بدون وضعیت (Stateless) است، تنها فراخوانی initialize حاوی اطلاعات کلاینت (clientInfo) است. برای شناسایی درخواست‌های بعدی، تیم به جای استفاده از نام‌های دوستانه که ممکن است منجر به خطاهای آماری شود، بر اولین توکن User-Agent (مثلاً claude-code/2.1.231) تکیه می‌کند. برای کاربرانی که از OAuth استفاده می‌کنند، افزودن Client ID به عنوان یک Claim در توکن دسترسی (Access Token)، امکان ردیابی را بدون نیاز به وضعیت نشست (Session State) فراهم می‌کند.

در نهایت، تیم یک شکست خاموش در Cursor شناسایی کرد. لینک‌های نصب تک‌کلیکی (Deeplink) — که از یک Payload کدگذاری شده با base64 شامل URL سرور استفاده می‌کنند — در نسخه‌های پایین‌تر از ۳.۱۵.۱۲ خراب هستند. کاربرانی که از نسخه‌های قدیمی‌تر استفاده می‌کنند، می‌بینند که پنل تنظیمات باز می‌شود، اما هیچ کارت نصبی ظاهر نمی‌شود و هیچ خطایی هم داده نمی‌شود. این موضوع باعث می‌شود یک باگ سمت کلاینت، شبیه به یک لینک سرور اشتباه یا بدساخت به نظر برسد.

برای بهبود تجربه توسعه‌دهندگان و سازگاری با اسکنرها، این تیم چندین اصلاحیه را پیشنهاد می‌کند:

  • توضیحات ابزار (Tool Annotations): افزودن outputSchema و نشانه‌هایی (Hints) مانند readOnlyHint ،destructiveHint ،idempotentHint و openWorldHint به هر ابزار.
  • کاوش قابلیت‌ها: آگاه باشید که resources/list و prompts/list حتی اگر تعریف نشده باشند، مورد بررسی قرار می‌گیرند. اگرچه بازگرداندن کد خطای -32601 طبق مشخصات فنی قانونی است، اما اغلب باعث ایجاد هشدار در لاگ‌های اسکنر می‌شود.
  • مدیریت هزینه: برای ابزارهایی که هزینه مالی دارند، حتماً یادداشتی در توضیحات ابزار بگنجانید. ابزار ClearBounce لیستی از کاندیداها را به همراه هزینه هر بررسی بازمی‌گرداند و به دستیار هوش مصنوعی دستور می‌دهد که موارد را یکی‌یکی تأیید کند و در اولین نتیجه مناسب متوقف شود.

این تجربه، این فرض را که «پیروی از مشخصات MCP برای محیط عملیاتی کافی است» تغییر می‌دهد. این موضوع فاش می‌کند که بخش «سمت کلاینت» این پروتکل در حال حاضر یک هدف متحرک است و توسعه‌دهندگان باید به جای آخرین نسخه مستندات، برای «پایین‌ترین مشترک» (Lowest Common Denominator) رفتار کلاینت‌ها برنامه‌ریزی کنند.

توسعه‌دهندگان اکنون باید کدهای خطای MCP و مدیریت نسخه‌های خود را بازبینی کنند تا سازگاری در تمامی IDEهای اصلی هوش مصنوعی تضمین شود. همچنین باید تغییرات نسخه‌های Cursor و Claude Code را به دقت دنبال کنند، زیرا این کلاینت‌ها در حال حاضر محرک‌های اصلی استاندارد پیاده‌سازی MCP هستند.

گام بعدی شما

  • کدهای خطای سرور MCP خود را بازبینی کنید تا مطمئن شوید پاسخ‌های ۴۰۱ و ۴۰۳ با رفتار کلاینت‌های هدف همخوانی دارد.
  • در صورت استفاده از OAuth، متادیتای protected-resource را در مسیر .well-known بررسی کنید.
  • تغییرات نسخه‌های Cursor و Claude Code را دنبال کنید، زیرا این دو در حال حاضر استانداردهای عملیاتی MCP را تعریف می‌کنند.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این یافته‌ها بر اساس تجربه عملی استقرار در مقیاس وسیع است و نشان می‌دهد که شکاف بین تئوری و اجرا در MCP می‌تواند منجر به شکست کامل یکپارچگی شود. اعتبار این تحلیل از رصد واقعی ۲۰۰ خزنده‌ی مختلف در محیط عملیاتی می‌آید.

تأثیر برای ایران

برای توسعه‌دهندگان ایرانی که در حال ساخت ابزارهای Agentic برای بازار جهانی هستند، رعایت این نکات فنی برای جلوگیری از رد شدن سرورها توسط کلاینت‌های بین‌المللی حیاتی است.

·نگاه ما
تحریریه دات‌هوش

تکیه بر استانداردهای رسمی در مراحل اولیه یک پروتکل نوظهور، ریسک عملیاتی بالایی دارد. این گزارش ثابت می‌کند که در دنیای AI، «رفتار واقعی کلاینت» (De facto standard) بسیار مهم‌تر از «مستندات رسمی» (De jure standard) است. توسعه‌دهندگان باید رویکردی دفاعی در پیش بگیرند و برای ناسازگاری‌های نسخه‌ای آماده باشند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.