ليرة تركية؛دكتور: يوفر Hugging Face Official MCP Server خيارات تخصيص فريدة لمساعدي الذكاء الاصطناعي الذين يصلون إلى المركز، إلى جانب الوصول إلى الآلاف من تطبيقات الذكاء الاصطناعي من خلال عنوان URL بسيط واحد. لقد استخدمنا نقل MCPs “Streamable HTTP” للنشر، وفحصنا بالتفصيل المقايضات التي يمتلكها مطورو الخادم.
لقد تعلمنا أشياء كثيرة حول إنشاء خادم MCP مفيد في الشهر الماضي – وسنصف رحلتنا هنا.
مقدمة
يفي بروتوكول السياق النموذجي (MCP) بوعده بأن يكون المعيار لربط مساعدي الذكاء الاصطناعي بالعالم الخارجي.
في Hugging Face، يعد توفير الوصول إلى Hub عبر MCP خيارًا واضحًا، وتشارك هذه المقالة تجربتنا في تطوير hf.co/mcp خادم MCP.
اختيارات التصميم
يستخدم المجتمع Hub للبحث والتطوير وإنشاء المحتوى والمزيد. أردنا أن نسمح للأشخاص بتخصيص الخادم ليناسب احتياجاتهم الخاصة، بالإضافة إلى الوصول بسهولة إلى الآلاف من تطبيقات الذكاء الاصطناعي المتوفرة على Spaces. وهذا يعني جعل خادم MCP ديناميكيًا عن طريق ضبط أدوات المستخدمين بسرعة.
أردنا أيضًا أن نجعل الوصول بسيطًا عن طريق تجنب التنزيلات والتكوينات المعقدة، لذلك كان من الضروري جعل الوصول إليه عن بعد عبر عنوان URL بسيط أمرًا ضروريًا.
الخوادم البعيدة
عند إنشاء خادم MCP عن بعد، فإن القرار الأول هو تحديد كيفية اتصال العملاء به. تقدم MCP العديد من خيارات النقل، مع مقايضات مختلفة. ليرة تركية؛دكتور: يدعم كودنا المفتوح المصدر جميع المتغيرات، ولكن بالنسبة للإنتاج اخترنا استخدام الإصدار الأحدث. يتناول هذا القسم الخيارات المختلفة بالتفصيل.
منذ إطلاقه في نوفمبر 2024، شهد MCP تطورًا سريعًا مع 3 مراجعات للبروتوكول في 9 أشهر. وقد شهد ذلك استبدال SSE Transport بـ Streamable HTTP، بالإضافة إلى تقديم الترخيص وإعادة صياغته.
تعني هذه التغييرات السريعة أن الدعم لميزات MCP المختلفة ومراجعات تطبيقات العميل تختلف، مما يوفر تحديات إضافية لخيارات التصميم لدينا.
فيما يلي ملخص مختصر لخيارات النقل التي يقدمها بروتوكول السياق النموذجي وحزم تطوير البرامج (SDK) المرتبطة به:
| ينقل | ملحوظات |
|---|---|
STDIO |
يتم استخدامه عادةً عند تشغيل خادم MCP على نفس جهاز الكمبيوتر الذي يستخدمه العميل. قادر على الوصول إلى الموارد المحلية مثل الملفات إذا لزم الأمر. |
HTTP with SSE |
يستخدم للاتصالات عن بعد عبر HTTP. تم إهماله في إصدار 26-03-2025 من MCP ولكنه لا يزال قيد الاستخدام. |
Streamable HTTP |
نقل HTTP عن بعد أكثر مرونة يوفر خيارات أكثر للنشر مقارنة بإصدار SSE الصادر |
كلاهما STDIO و HTTP with SSE تكون ثنائية الاتجاه بشكل افتراضي – مما يعني أن العميل والخادم يحتفظان باتصال مفتوح ويمكنهما إرسال رسائل لبعضهما البعض في أي وقت.
يشير SSE إلى “الأحداث المرسلة من الخادم” – وهي طريقة لخوادم HTTP للحفاظ على اتصال مفتوح وإرسال الأحداث استجابةً للطلب.
فهم HTTP القابل للتدفق
يواجه مطورو خادم MCP الكثير من الخيارات عند إعداد نقل HTTP القابل للتدفق.
هناك 3 أنماط اتصال رئيسية يمكنك الاختيار من بينها:
- الاستجابة المباشرة – طلب/استجابة بسيطة (مثل واجهات برمجة تطبيقات REST القياسية). يعد هذا مثاليًا للعمليات المباشرة عديمة الحالة مثل عمليات البحث البسيطة.
- طلب التدفقات ذات النطاق – تدفقات SSE المؤقتة المرتبطة بطلب واحد. يعد هذا مفيدًا لإرسال تحديثات التقدم إذا استغرق استدعاء الأداة وقتًا طويلاً – مثل إنشاء الفيديو. بالإضافة إلى ذلك، قد يحتاج الخادم إلى طلب معلومات من المستخدم من خلال الاستنباط، أو إجراء طلب أخذ العينات.
- تيارات دفع الخادم – اتصال SSE طويل الأمد يدعم الرسائل التي يبدأها الخادم. يؤدي ذلك إلى تمكين إشعارات تغيير الموارد والأدوات وقائمة الموجهات أو أخذ العينات والاستنباطات المخصصة. تحتاج هذه الاتصالات إلى إدارة إضافية مثل آليات البقاء على قيد الحياة والاستئناف عند إعادة الاتصال.
عند استخدام طلب التدفقات ذات النطاق مع حزم SDK الرسمية، استخدم ملف
sendNotification()وsendRequest()الأساليب المنصوص عليها فيRequestHandlerExtraالمعلمة (TypeScript) أو قم بتعيينrelated_request_id(بايثون) لإرسال الرسائل إلى الدفق الصحيح.
هناك عامل إضافي يجب مراعاته وهو ما إذا كان خادم MCP نفسه يحتاج إلى الحفاظ على الحالة لكل اتصال أم لا. يتم تحديد ذلك بواسطة الخادم عندما يرسل العميل طلب التهيئة الخاص به:
| عديمي الجنسية | فخم | |
|---|---|---|
| معرفات الجلسة | ليست هناك حاجة | يستجيب الخادم بـ mcp-session-id |
| ماذا يعني | كل طلب مستقل | يحافظ الخادم على سياق العميل |
| التحجيم | تحجيم أفقي بسيط: يمكن لأي مثيل التعامل مع أي طلب | تحتاج إلى تقارب الجلسة أو آليات الحالة المشتركة |
| استئناف | ليست هناك حاجة | قد يعيد تشغيل الرسائل للاتصالات المعطلة |
يلخص الجدول أدناه ميزات MCP ونمط الاتصال المدعوم الخاص بها:
| ميزة MCP | دفع الخادم | نطاق الطلب | الاستجابة المباشرة |
|---|---|---|---|
| الأدوات، المطالبات، الموارد | ي | ي | ي |
| أخذ العينات / الاستنباط | يبدأ الخادم في أي وقت | ذات صلة بطلب بدأه العميل | ن |
| اشتراكات الموارد | ي | ن | ن |
| تغييرات القائمة/الأداة | ي | ن | ن |
| إشعار تقدم الأداة | – | ي | ن |
مع تدفقات الطلب ذات النطاق، تحتاج طلبات أخذ العينات والاستنباط إلى اتصال ذو حالة بحيث يمكن mcp-session-id يمكن استخدامها لجمعية الاستجابة.
خادم Hugging Face MCP مفتوح المصدر – ويدعم نشر STDIO وSSE وHTTP القابل للتدفق في كل من وضع الاستجابة المباشرة ودفع الخادم. يمكنك تكوين مهلة استمرار النشاط وآخر نشاط عند استخدام تدفقات دفع الخادم. توجد أيضًا لوحة معلومات مدمجة يمكنك استخدامها لفهم كيفية إدارة العملاء المختلفين للاتصالات والتعامل مع إشعارات تغيير قائمة الأدوات.
توضح الصورة التالية لوحة معلومات اتصال خادم MCP الخاصة بنا والتي تعمل في وضع HTTP القابل للتدفق “Server Push”:

نشر الإنتاج
بالنسبة للإنتاج، قررنا إطلاق خادم MCP الخاص بنا مع HTTP القابل للتدفق في تكوين استجابة مباشرة بدون حالة للأسباب التالية:
عديمي الجنسية بالنسبة للمستخدمين المجهولين، نقدم مجموعة قياسية من الأدوات لاستخدام Hub بالإضافة إلى Image Generator. بالنسبة للمستخدمين المعتمدين، تشتمل حالتنا على أدواتهم المختارة وتطبيقات Gradio المختارة. نتأكد أيضًا من تطبيق حصة ZeroGPU للمستخدمين بشكل صحيح على حساباتهم. تتم إدارة هذا باستخدام الموردة HF_TOKEN أو بيانات اعتماد OAuth التي نبحث عنها عند الطلب. لا تتطلب منا أي من أدواتنا الحالية الحفاظ على أي حالة أخرى بين الطلبات.
يمكنك استخدام تسجيل الدخول OAuth عن طريق إضافة
?loginإلى عنوان URL لخادم MCP – على سبيل المثالhttps://huggingface.co/mcp?login. قد نجعل هذا هو الإعداد الافتراضي بمجردclaude.aiالتكامل عن بعد يدعم أحدث مواصفات OAuth.
الاستجابة المباشرة يوفر أقل تكلفة لموارد النشر – وليس لدينا حاليًا أي أدوات تتطلب أخذ العينات أو الاستنباط أثناء التنفيذ.
الدعم المستقبلي عند الإطلاق، كان النقل “HTTP with SSE” لا يزال هو الخيار الافتراضي البعيد في الكثير من عملاء MCP. ومع ذلك، لم نرغب في الاستثمار بكثافة في إدارتها نظرًا لإيقافها الوشيك. ولحسن الحظ، بدأ العملاء المشهورون بالفعل في إجراء التبديل (VSCode وCursor)، وفي غضون أسبوع من الإطلاق claude.ai وأضاف أيضا الدعم. إذا كنت بحاجة إلى الاتصال بـ SSE، فلا تتردد في نشر نسخة من خادمنا على FreeCPU Hugging Face Space.
قائمة الأدوات تغيير الإخطارات
في المستقبل، نود أن ندعم إشعارات تغيير قائمة الأدوات في الوقت الفعلي عندما يقوم المستخدمون بتحديث إعداداتهم على Hub. ومع ذلك، فإن هذا يثير مسألتين عمليتين:
أولاً، يميل المستخدمون إلى تكوين خوادم MCP المفضلة لديهم في عملائهم وتركها ممكنة. وهذا يعني أن العميل يظل متصلاً أثناء فتح التطبيق. إن إرسال الإشعارات يعني الحفاظ على عدد كبير من الاتصالات المفتوحة مثل العملاء النشطين حاليًا – بغض النظر عن الاستخدام النشط – في حالة قيام المستخدم بتحديث تكوين الأداة الخاصة به.
ثانيًا، يتم قطع اتصال معظم خوادم وعملاء MCP بعد فترة من عدم النشاط، ويتم استئنافها عند الضرورة. وهذا يعني حتماً أنه سيتم تفويت إشعارات الدفع الفورية – حيث سيتم إغلاق قناة الإشعارات. ومن الناحية العملية، يكون من الأسهل على العميل تحديث الاتصال وقائمة الأدوات حسب الحاجة.
ما لم يكن لديك تحكم معقول في زوج العميل/الخادم، فإن استخدام تيارات دفع الخادم يضيف الكثير من التعقيد إلى النشر العام، عند وجود حلول منخفضة الموارد لتحديث قائمة الأدوات.
تجربة مستخدم URL
قبل الإطلاق مباشرة، @julien-c أرسل علاقات عامة تتضمن تعليمات ودية للمستخدمين الزائرين hf.co/mcp. يؤدي هذا إلى تحسين تجربة المستخدم بشكل كبير – فالاستجابة الافتراضية تكون بخلاف ذلك جزءًا غير ودي من JSON.
في البداية، وجدنا أن هذا قد ولّد قدرًا هائلاً من حركة المرور. بعد قليل من التحقيق وجدنا أنه عند إرجاع صفحة ويب بدلاً من خطأ HTTP 405، فإن VSCode سوف يستطلع نقطة النهاية عدة مرات في الثانية!
الإصلاح الذي اقترحه @coyotte508 كان اكتشاف المتصفحات بشكل صحيح وإرجاع الصفحة فقط في تلك الظروف. شكرًا أيضًا لفريق VSCode الذي قام بإصلاح المشكلة بسرعة.
على الرغم من عدم ذكر ذلك على وجه التحديد – إرجاع الصفحة بهذه الطريقة يفعل تبدو مقبولة ضمن مواصفات MCP.
سلوك عميل MCP
يرسل بروتوكول MCP عدة طلبات أثناء التهيئة. تسلسل الاتصال النموذجي هو: Initialize, Notifications/Initialize, tools/list وثم prompts/list.
نظرًا لأن عملاء MCP سوف يتصلون ويعيدون الاتصال أثناء الفتح، وحقيقة أن المستخدمين يقومون بإجراء مكالمات دورية، نجد أن هناك نسبة تبلغ حوالي 100 رسالة تحكم MCP لكل استدعاء أداة.
يرسل بعض العملاء أيضًا طلبات لا معنى لها بالنسبة لتكوين الاستجابة المباشرة عديمي الحالة لدينا – على سبيل المثال، الأصوات أو الإلغاءات أو محاولات إدراج الموارد (وهي ليست إمكانية نعلن عنها حاليًا).
شهد الأسبوع الأول من يوليو 2025 وصول 164 عميلًا مختلفًا إلى خادمنا بشكل مذهل. ومن المثير للاهتمام أن إحدى الأدوات الأكثر شيوعًا هي mcp-remote. يستخدمه ما يقرب من نصف العملاء كجسر للاتصال بخادمنا البعيد.
خاتمة
يتطور MCP بسرعة، ونحن متحمسون لما تم تحقيقه بالفعل عبر تطبيقات الدردشة وبيئات التطوير المتكاملة والوكلاء وخوادم MCP خلال الأشهر القليلة الماضية.
يمكننا أن نرى بالفعل مدى قوة دمج Hugging Face Hub، كما أن دعم Gradio Spaces يجعل الآن من الممكن توسيع LLMs بسهولة باستخدام أحدث تطبيقات التعلم الآلي.
فيما يلي بعض الأمثلة الرائعة على الأشياء التي كان يفعلها الأشخاص باستخدام خادم MCP الخاص بنا حتى الآن:
نأمل أن يكون هذا المنشور قد قدم رؤى حول القرارات التي يجب اتخاذها لبناء خوادم MCP عن بعد، ونشجعك على تجربة بعض الأمثلة في عميل MCP المفضل لديك.
قم بإلقاء نظرة على خادم MCP مفتوح المصدر الخاص بنا، وجرب بعض خيارات النقل المختلفة مع عميلك، أو افتح إصدارًا أو طلب سحب لإجراء تحسينات أو اقتراح وظائف جديدة.
اسمحوا لنا أن نعرف أفكارك وملاحظاتك وأسئلتك حول موضوع المناقشة هذا.
