MCP دیگه session نداره
خلاصهٔ کاملتر
تو این مقاله از وبلاگ New Relic اومده که Model Context Protocol تو هجده ماه از یه اسپک ناشناخته به رایجترین پروتکل وصلکردن ایجنتهای هوش مصنوعی به ابزارها، APIها و منابع داده تبدیل شده؛ بیش از ۱۵۰ سازمان روش ساختن و هر سه ابر بزرگ پشتیبانی بومی دارن. حالا در ۲۸ ژوئیه بزرگترین بازنگری اسپک از زمان انتشار میرسه و تیتر اصلیش اینه: MCP داره stateless میشه.
مشکل مدل قبلی سر همون دستدادن اولیه بود: کلاینت initialize میفرستاد، سرور یه mcp-session-id میساخت و اون آیدی باید روی همهٔ درخواستهای بعدی میاومد. برای یه نمونهٔ تکی مشکلی نداشت، ولی پشت لودبالانسر درخواست بعدی میتونست بره روی پادی که هیچ سابقهای از اون session نداره و فقط یه ۴۰۴ بیتوضیح برگردونه. راهحلها هم sticky session، لودبالانسر session-aware، یه انبار مشترک session (یعنی Redis) و درینکردن session سر هر دیپلوی بود.
تو اسپک جدید هر درخواست چیزی که سرور لازم داره — نسخهٔ پروتکل، هویت کلاینت و قابلیتها — رو تو یه آبجکت _meta با خودش میبره، پس هر نمونهای میتونه هر درخواستی رو هندل کنه. هزینهش کمی بزرگتر شدن پیلوده و نویسنده میگه بهتره با حجم واقعی درخواستهاتون بنچمارک بگیرین. ضمناً SDK دو هدر Mcp-Method و Mcp-Name به هر درخواست اضافه میکنه تا گیتویها بدون پارسکردن بدنهٔ JSON-RPC روتینگ و ریتلیمیت کنن.
برای کارهایی که واقعاً به حالت نیاز دارن — مثل یه session مرورگر یا ویرایش چندمرحلهای فایل — سرور یه شناسهٔ ارجاع برمیگردونه که ایجنت تو فراخوانیهای بعدی پاسش میده؛ یعنی حالت بهجای حافظهٔ سرور تو خود پیلود میشینه و قابل دیدن، لاگگرفتن و دیباگکردنه. sampling و elicitation هم منسوخ شدن و جاشون رو Multi Round-Trip Requests گرفته. تو همین نسخه Tasks و MCP Apps رسمی شدن و مجوزدهی با OAuth 2.1 و OpenID Connect همتراز شده.
چون سرور ریموت حالا یه سرویس HTTP معمولیه، لودبالانس round-robin، اتواسکیل و حتی توزیع چندمنطقهای بدون هماهنگی بین نمونهها جواب میده. تغییر مهم بعدی به مانیتورینگ برمیگرده: کانال لاگ اختصاصی MCP که لاگهاش تو جزیرهٔ خودش میموند، جاش رو به OpenTelemetry داده و استاندارد W3C Trace Context هم رسمی شده — یعنی یه فراخوانی ابزار رو از ایجنت تا سرور MCP تا API بیرونی و دیتابیس، تو یه تریس بههمپیوسته میبینی.
نکات کلیدی:
- اسپک جدید MCP دستدادن initialize و mcp-session-id رو حذف میکنه
- هر درخواست کانتکست خودش رو تو _meta حمل میکنه، پس sticky session و Redis لازم نیست
- دو هدر Mcp-Method و Mcp-Name روتینگ و ریتلیمیت رو تو لایهٔ زیرساخت ممکن میکنن
- حالتِ لازم حالا با یه شناسهٔ ارجاع تو پیلود جابهجا میشه
- sampling و elicitation منسوخ شدن و جایگزینشون MRTR شده
- Tasks و MCP Apps رسمی شدن و مجوزدهی با OAuth 2.1 همتراز شده
- لاگ اختصاصی جاش رو به OpenTelemetry و W3C Trace Context داده
- این تغییر عمدتاً روی دیپلویهای ریموت اثر داره، نه ابزارهای لوکال




