المفاهيم · فصل ٥

الإصدارات: التاريخ هو الرقم

YYYY-MM-DD · Draft · Current · deprecation · negotiation
🎯 الهدف: تفهم ليه رقم الإصدار تاريخ، وإزاي الطرفين يتفقوا عليه في كل ريكوست.

MCP بيستخدم معرف نصي بالشكل YYYY-MM-DD. التاريخ ده آخر يوم حصل فيه تغيير بيكسر التوافق، مش كل يوم فيه تحسين.

حالات المراجعة

  • Draft: المواصفة لسه بتتشغل عليها، مش جاهزة للاستخدام.
  • Current: الإصدار الحالي الجاهز، وممكن ياخد تعديلات متوافقة. الحالي 2026-07-28.
  • Final: إصدارات قديمة مكتملة، مش هتتغير.

لما ميزة تتلغى

الميزة تفضل في المواصفة وهي Deprecated: لسه موجودة بس متجدولة للإزالة، ولازم يكون فيه مسار ترحيل (أو تقول إنه مش محتاج). بتفضل ١٢ شهر على الأقل، أو ٩٠ يوم على الأقل في استثناء الإزالة السريعة، قبل ما تبقى مؤهلة للشيل. بعدها ممكن تتشال في مراجعة جاية.

المسجل حاليًا في سجل الميزات الملغاة: Roots و Sampling و Logging.

المسار: نشطة، ثم ملغاة، ثم متشالة في المراجعة اللي بعد المدة.

التفاوض

كل ريكوست يعلن الإصدار في _meta بمفتاح io.modelcontextprotocol/protocolVersion. السيرفر يقبل أو يرفض كل ريكوست لوحده. على Streamable HTTP نفس القيمة بتتبعت كمان في هيدر MCP-Protocol-Version.

الكلاينت والسيرفر ممكن يدعموا كذا إصدار في نفس الوقت. لو السيرفر مش داعم الإصدار، يرجع UnsupportedProtocolVersionError وفيه الإصدارات المدعومة. الكلاينت يعيد بإصدار مشترك، أو يعرض خطأ لليوزر لو مفيش مشترك.

عايز تختار الإصدار من الأول؟ نادي server/discover. النداء إجباري على السيرفر واختياري للكلاينت.

خلّصت الفصل لما

🧠 اختبر نفسك
١) اتضاف حقل اختياري جديد من غير ما يكسر حاجة. الإصدار هيتغير؟
لأ. الرقم ما بيزيدش طول ما التعديل متوافق.
٢) إيه أقل مدة لميزة deprecated قبل إزالتها عادة؟
١٢ شهر. الاستثناء السريع ٩٠ يوم.
٣) السيرفر مش داعم إصدار الكلاينت. يحصل إيه؟
UnsupportedProtocolVersionError بالإصدارات المدعومة. الكلاينت يعيد بإصدار مشترك أو يعرض خطأ.