أعلنت Microsoft إصدار 2.0 من حزمة تطوير البرمجيات الرسمية لـ MCP بلغة C#، بالتزامن مع تطبيق مواصفة 2026-07-28. يغيّر الإصدار طريقة تشغيل خوادم MCP عبر HTTP بجعلها عديمة الحالة افتراضياً، ويضيف ترويسات HTTP موحدة، ويدعم الطلبات متعددة الجولات التي تتيح للأدوات طلب مدخلات من المستخدم أو نموذج اللغة من دون الاعتماد على جلسة مستمرة.
ويستهدف الإصدار المطورين الذين يبنون خوادم وعملاء MCP على .NET، مع الحفاظ على عمل واجهات برمجة التطبيقات المستقرة في الإصدار 1.x، ودعم أطر net8.0 وnet9.0 وnet10.0، إضافة إلى netstandard2.0 للاستخدام مع .NET Framework.
خوادم عديمة الحالة افتراضياً
في الإصدارات السابقة، كان استخدام Streamable HTTP يتطلب إتمام مصافحة التهيئة وإنشاء جلسة، ثم إرسال ترويسة Mcp-Session-Id مع كل طلب لاحق. وكان ذلك يربط الطلبات بمثيل الخادم الذي أصدر المعرّف، ما يستلزم التوجيه الثابت أو نقل الجلسات عند تشغيل عدة مثيلات.
تلغي مواصفة 2026-07-28 مصافحة initialize وinitialized وترويسة Mcp-Session-Id، وتنقل إصدار البروتوكول والقدرات ضمن كل طلب. ونتيجة لذلك، يمكن لأي مثيل خادم معالجة أي طلب، من دون الحاجة إلى جلسات ثابتة أو مخازن جلسات مشتركة على مستوى البروتوكول. ويجعل ذلك نشر خوادم MCP ضمن بيئات serverless أو متعددة المثيلات أو الحافة أقرب إلى تشغيل تطبيق ASP.NET Core عادي خلف موازن أحمال.
يصبح الخيار HttpServerTransportOptions.Stateless مضبوطاً على true افتراضياً في الإصدار 2.0، مع إمكانية تفعيل الوضع ذي الحالة عند الحاجة إلى رسائل غير مطلوبة من الخادم إلى العميل أو إلى حالة نقل مرتبطة بالجلسة. وتظل الجلسات خياراً متاحاً، لكنها لم تعد الإعداد الأساسي.
ترويسات HTTP للتوجيه والمراقبة
يحوّل النمط عديم الحالة طلب MCP إلى طلب HTTP POST مكتفٍ بذاته، ما يسمح للبنية التحتية المعتادة بالتعامل معه مثل أي حركة HTTP أخرى. وتتيح المواصفة ترويسات مثل Mcp-Method وMcp-Name، إلى جانب إمكانية ترقية بعض معاملات الأداة إلى ترويسات من نمط Mcp-Param-*.
يمكن لموازن الأحمال أو الوكيل أو البوابة أو جدار حماية تطبيقات الويب استخدام هذه الترويسات للتوجيه والمراقبة من دون تحليل جسم طلب JSON-RPC. ويظل جسم الطلب هو المصدر الموثوق؛ فإذا اختلفت قيمة الترويسة عن القيمة الموجودة في الجسم، يرفض الخادم الطلب بخطأ HeaderMismatch. كما يدعم التصميم ترميز القيم غير المدعومة في الترويسات، مثل القيم غير ASCII، باستخدام مؤشر Base64.
طلبات متعددة الجولات للأدوات التفاعلية
تضيف ميزة Multi Round-Trip Requests، أو MRTR، طريقة للتعامل مع الأدوات التي لا تستطيع إتمام عملها خلال استدعاء واحد. فبدلاً من أن يتصل الخادم بالعميل عبر جلسة حية أثناء تنفيذ الطلب، يعيد نتيجة من نوع InputRequiredResult تتضمن طلبات الإدخال وحالة غير شفافة باسم requestState.
ينفذ العميل المطلوب، مثل طلب تأكيد من المستخدم أو استدعاء نموذج لغوي أو عرض جذور مساحات العمل، ثم يعيد إرسال استدعاء الأدوات نفسه مرفقاً بـ inputResponses وrequestState. ويمكن تكرار العملية لعدة جولات، فيما تنتقل معلومات الاستمرارية داخل الحمولة، ولذلك لا تحتاج العملية إلى جلسة.
يتولى McpClient عالي المستوى معالجة MRTR تلقائياً بعد تسجيل المعالجات المناسبة. كما يستطيع الإصدار استخدام جسر توافق مع العملاء الأقدم عند وجود جلسة ذات حالة. أما العميل الأقدم الذي يعمل بلا جلسة فلا يمكنه تنفيذ التفاعل متعدد الجولات، ولذلك يجب أن توفر الأداة مساراً بديلاً، مثل تمرير القيمة المطلوبة مباشرة في معامل الاستدعاء.
التوافق والحزم المتاحة
تستمر واجهات 1.x المستقرة وغير المتقادمة في الترجمة والتنفيذ ضمن 2.0، بينما تظهر التغييرات المتقادمة على شكل تحذيرات لا عمليات حذف. ويستطيع عميل 2.0 استخدام مصافحة التهيئة القديمة عند الاتصال بخادم أقدم، كما يقبل خادم 2.0 تلك المصافحة من عميل قديم.
الاستثناء الوحيد في توافق البروتوكول هو امتداد Tasks؛ إذ يحل تصميمه المعاد في 2.0 محل Tasks التجريبي الموجود في مواصفة 2025-11-25، وهو غير متوافق معه على مستوى الواجهة أو البروتوكول. وتتوفر Tasks الآن ضمن الحزمة المنفصلة ModelContextProtocol.Extensions.Tasks، بينما تأتي MCP Apps التجريبية ضمن ModelContextProtocol.Extensions.Apps.
تضم الحزم الأساسية ModelContextProtocol.Core للعميل والمكونات منخفضة المستوى، وModelContextProtocol لمعظم الخوادم، وModelContextProtocol.AspNetCore لخوادم Streamable HTTP. ويشير المنشور إلى أن التركيز التالي في سلسلة 2.x سيكون المصادقة والتفويض الشاملين، بالاستناد إلى توافق أوثق مع OAuth وOpenID Connect.