الكلاينتس بيعملها الـ host عشان يكلموا سيرفرات معينة. الـ host (زي Claude.ai أو الـ IDE) بيدير تجربة اليوزر وبينسّق بين كلاينتس كتير. كل كلاينت بيتعامل مع سيرفر واحد بس.
إيه اللي الكلاينت يقدّمه للسيرفر؟
Elicitation لسه شغال: السيرفر يطلب معلومة منظمة من اليوزر وقت التفاعل، زي تفضيل المقعد أو نوع الأوضة.
Roots و Sampling اتلغوا من 2026-07-28 ومتجدولين للإزالة. هنفهمهم عشان تلاقيهم في سيرفرات قديمة، بس التنفيذ الجديد يستخدم البديل.
Elicitation
بدل ما السيرفر يطلب كل حاجة من الأول أو يفشل لما داتا ناقصة، يوقف ويطلب مدخل محدد. في وضعين:
السيرفر يدي schema، والكلاينت يبني فورم ويعمل تحقق على الرد. للداتا المنظمة العادية.
السيرفر يدي رابط اليوزر يفتحه. التفاعل بره الكلاينت، والداتا ما بتعديش عليه. ده مكان الباسوردات ومفاتيح الـ API والتوكنز وبيانات الدفع و OAuth لطرف تالت.
ممنوع وضع الفورم للحاجات الحساسة دي، عشان ما تعديش على الكلاينت ولا على سياق الموديل. الكلاينت يقدر يرفض الطلب المشبوه، ويخلي اليوزر يراجع الفورم قبل الإرسال.
في وضع الرابط: اعرض العنوان كامل، وخد موافقة صريحة، ومتفتحهوش أوتوماتيك. الكلاينت يعرف بس هل اليوزر وافق. التفاعل نفسه بين اليوزر والموقع.
نمط MRTR
الاسم Multi Round-Trip Requests. السيرفر وهو بيعالج tools/call يرد بـ InputRequiredResult وفيه inputRequests (طلب elicitation/create أو أكتر) و requestState اختياري. الكلاينت يجمع الإدخال ويعيد الريكوست الأصلي ومعاه inputResponses، ويرجّع الـ requestState زي ما السيرفر حاطه.
اليوزر يقدر يجاوب، أو يرفض مع شرح اختياري، أو يلغي العملية كلها. الكلاينت يوضح مين السيرفر اللي بيسأل، وليه محتاج المعلومة، وهتتستخدم إزاي.
Roots اتلغى
كان الكلاينت يقول للسيرفر يركز على أنهي فولدرات، بمسارات file:// بس. الحدود استشارية: المواصفة بتقول السيرفرات SHOULD تحترمها، مش MUST، لأن السيرفر بيشغّل كود الكلاينت مش متحكم فيه. الأمان الحقيقي على نظام التشغيل أو الـ sandbox. الهدف منع الحوادث مش وقف الأذى المتعمد.
البديل: مرّر الملفات والفولدرات كمعاملات أداة، أو URIs لموارد، أو إعدادات السيرفر.
القائمة كانت بتتغير مع المشاريع، والسيرفر يشوفها المرة الجاية في roots/list.
Sampling اتلغى
كانت الفكرة: السيرفر يعمل مهمة محتاجة موديل من غير ما يدفع لمزود، ويطلب من الكلاينت اللي عنده الموديل يعملها. الكلاينت كان متحكم في الصلاحيات، والطلب ماشي بنفس MRTR عبر sampling/createMessage. اليوزر يراجع البرومبت والرد قبل ما يرجع للسيرفر.
السيرفر كان يقدر يطلب أدوات جوه الـ sampling بمصفوفة tools، بشرط الكلاينت يكون معلن قدرة sampling.tools. ممنوع يبعت أدوات لكلاينت ما أعلنهاش.
البديل: تكامل مباشر مع واجهة مزود الموديل.