نسخه ۲ MCP در تاریخ ۲۸ جولای ۲۰۲۶ عرضه می‌شود. این نسخه تمامی handshakeها، هدرهای session-ID و سه زیرسیستم قدیمی را که Model Context Protocol (MCP) را به سرورهای sticky-session وابسته می‌کرد، حذف می‌کند. این پروتکل کاملاً stateless (بدون وضعیت) می‌شود، بنابراین هر نمونه autoscaled یا serverless می‌تواند بدون نیاز به حفظ وضعیت کلاینت، هر درخواستی را مدیریت کند.

چرا این تغییر اهمیت دارد

در MCP v1، کلاینت مجبور بود یک نشست (session) را با یک handshake از نوع initialize شروع کند؛ سپس سرور یک Mcp-Session-Id اختصاص می‌داد. هر فراخوانی بعدی باید آن هدر را همراه خود می‌داشت که باعث می‌شد کاربر به یک گره (node) بک‌اِند خاص محدود شود. متعادل‌کننده‌های بار (Load balancers) مجبور بودند session affinity را اعمال کنند که باعث افزایش تأخیر (latency) و اصطکاک عملیاتی می‌شد.

حالت stateless این اصطکاک را از بین می‌برد. اکنون تمام کانتکست‌ها در فیلدهای متا (meta fields) اختصاصی قرار دارند که همراه با هر فراخوانی HTTP ارسال می‌شوند. یک درخواست می‌تواند روی هر نمونه‌ای فرود بیاید، پردازش شود و به محض ارسال پاسخ، آن نمونه می‌تواند حذف شود. تیم‌هایی که از پلتفرم‌های serverless، کلاسترهای مدیریت‌شده با کانتینر (container-orchestrated clusters) یا هر محیطی که پادها (pods) را بر اساس تقاضا بالا و پایین می‌برد استفاده می‌کنند، اکنون می‌توانند پروتکل را با زیرساخت خود هماهنگ کنند.

موارد بازنشسته شده

سه زیرسیستم که به اتصالات پایدار (persistent connections) وابسته بودند، رسماً منسوخ (deprecated) شده‌اند:

  • Sampling – در نسخه v1، سرور می‌توانست از کلاینت بخواهد متنی تولید کند، الگویی که مستلزم یک نشست باز بود. در نسخه v2 انتظار می‌رود سرور مستقیماً با ارائه‌دهنده large-language-model تماس بگیرد یا از الگوی InputRequiredResult استفاده کند، که در آن کلاینت ورودی‌های ناقص را در یک درخواست بعدی ارائه می‌دهد.
  • Roots – پیش از این، کلاینت‌ها URIهایی را ارسال می‌کردند که دید سرور نسبت به منابع خارجی را محدود می‌کرد. رویکرد جدید، آن URIها را به عنوان پارامترهای ابزار (tool parameters) ارسال می‌کند یا آن‌ها را در فیلدهای resource درخواست جاسازی می‌کند و مرحله جداگانه مذاکره "roots" را حذف می‌نماید.
  • Logging – هدرهای لاگینگ در سطح پروتکل حذف می‌شوند. برای دیباگ کردن محلی از stderr استفاده کنید یا برای مشاهده‌پذیری (observability) در محیط عملیاتی، OpenTelemetry را به کار بگیرید.

بازه زمانی منسوخ شدن یک سال طول می‌کشد. ویژگی‌های منسوخ شده در این مدت همچنان کار می‌کنند تا به تیم‌ها فرصت بازنویسی (refactor) کد قبل از اینکه پروتکل آن‌ها را رد کند، داده شود.

علاوه بر stateless بودن، چه چیزهای جدیدی اضافه شده است؟

نسخه MCP v2 دو افزونه رسمی اضافه می‌کند:

  • MCP Apps – روشی سبک برای توصیف رابط‌های کاربری رندر شده توسط سرور (server-rendered user interfaces) که پروتکل می‌تواند آن‌ها را فراخوانی کند.
  • Tasks – الگویی برای مدیریت عملیات‌های طولانی‌مدت که ممکن است چندین چرخه درخواست-پاسخ را در بر بگیرد.

هر دو افزونه مدل درخواست stateless را فرض کرده و از وضعیت نشست‌های پنهان (hidden session state) اجتناب می‌کنند.

ریسک‌ها و نکات متقابل

این تغییر یک ارتقای ساده (plug-and-play) نیست. SDKهای نسخه v2 هنوز در مرحله بتا هستند و APIهای عمومی آن‌ها ممکن است قبل از انتشار نسخه پایدار تغییر کنند. برای بارهای کاری عملیاتی (production workloads) که نمی‌توانند تغییرات ساختاری (breaking changes) را تحمل کنند، تا زمانی که SDK نسخه v2 به مرحله نهایی برسد، از SDK پایدار v1 استفاده کنید.

توسعه‌دهندگان همچنین باید کدهای موجود را برای هر یک از سه زیرسیستم منسوخ شده بازبینی (audit) کنند.

یک نقشه راه عملیاتی برای مهاجرت

  1. امروز بازبینی کنید – سرویس‌های خود را برای استفاده از handshake، Mcp-Session-Id، فراخوانی‌های sampling، URIهای roots و لاگینگ در سطح پروتکل اسکن کنید. کدهایی که در مدل stateless از کار می‌افتند را شناسایی کنید.
  2. روی یک گره غیرحیاتی تست کنید – هنگامی که یک SDK پایدار برای v2 منتشر شد، یک سرور sandbox را راه‌اندازی کنید، آن را به یک کلاینت تست متصل کنید و بررسی کنید که آیا تمام فیلدهای متای مورد نیاز وجود دارند و به درستی تفسیر می‌شوند یا خیر.
  3. مهاجرت کامل قبل از مهلت مقرر – برای جلوگیری از رد شدن درخواست‌ها در زمان اجرا، جابجایی را در تمام گره‌های عملیاتی قبل از پایان دوره مهلت یک‌ساله تکمیل کنید.

آنچه باید در ادامه زیر نظر داشت

  • انتشار SDK پایدار – SDKهای بتا منجمد (frozen) شده و یک بسته پایدار نسخه‌بندی شده منتشر خواهد شد. آن نسخه، هدف امنی برای هرگونه استقرار حیاتی خواهد بود.

این انتقال مستلزم تغییرات کد و یک دوره کوتاه آزمایش با SDKهای بتا است، اما پاداش آن، یک نقطه ادغام تمیزتر و مقیاس‌پذیرتر برای هر اپلیکیشن مبتنی بر LLM خواهد بود.

نکته کلیدی: اگر پشته تکنولوژی (stack) شما هنوز به handshakeهای MCP یا سه زیرسیستم منسوخ شده وابسته است، بازبینی را از همین حالا شروع کنید؛ مهلت یک‌ساله سخاوتمندانه است، اما هزینه واقعی، تلاش برای بازنویسی (refactor) است، نه مهلت زمانی.