كيف يعمل MCP؟ شرح من الداخل مع Claude ووكلاء الذكاء الاصطناعي

يبدو Model Context Protocol أشبه بالسحر حين يقرأ Claude ملفًا أو يستدعي API لتوليد الصور بمفرده. يفتح هذا المقال الصندوق: المضيفون والعملاء والخوادم، ومصافحة JSON-RPC، والفرق بين الأدوات والموارد والأوامر الجاهزة، وحلقة الوكيل التي تكرر استدعاءات الأدوات، وفحوص الأمان التي تحفظ سلامة كل ذلك.

كيف يعمل MCP؟ شرح من الداخل مع Claude ووكلاء الذكاء الاصطناعي
Cristian Da Conceicao
مؤسس Picasso IA

تكتب طلبًا، فيقرأ Claude ملفًا، أو يستعلم من قاعدة بيانات، أو يصيّر صورة، وبعد ثوانٍ قليلة تظهر النتيجة في المحادثة. لا شيء داخل أوزان النموذج يعرف كيف يصل إلى قاعدة بياناتك. هناك طبقة وسيطة في المنتصف، وهذه الطبقة هي Model Context Protocol، واختصارها MCP. إذا سألت يومًا كيف يعمل MCP خلف الستار، فالإجابة المختصرة هي: صيغة رسائل مشتركة تتيح لتطبيق الذكاء الاصطناعي أن يسأل برامج خارجية عمّا تستطيع فعله، ثم يستدعيها نيابةً عن النموذج. يتتبع بقية المقال طلبًا واحدًا من المصافحة الأولى حتى نتيجة الأداة النهائية، مع أشكال رسائل حقيقية، حتى تستطيع أن تتصور كل قفزة في الطريق.

ما هو MCP فعليًا

MCP معيار مفتوح قدّمته Anthropic في نوفمبر 2024. يحدد كيف يتصل تطبيق الذكاء الاصطناعي بالأدوات والبيانات الخارجية عبر مجموعة واحدة من القواعد المشتركة، بدلًا من تكامل مخصص لكل زوج من المنتجات. فكّر في منفذ USB-C الذي يتيح لكابل واحد أن يخدم ميكروفونًا وقرصًا وشاشة. يؤدي MCP هذا الدور بين النماذج اللغوية والبرمجيات المحيطة بها.

المشكلة التي يحلها

كومة متشابكة من كابلات وشواحن غير متطابقة على طاولة عمل خشبية من الخشب البلوط، من الأعلى

قبل MCP، كان كل تطبيق ذكاء اصطناعي يريد قراءة تقويم أو البحث في قاعدة شيفرة أو استدعاء API لتوليد الصور يحتاج إلى شيفرة ربط خاصة به. ومع وجود N من التطبيقات وM من الأدوات، واجهت الفرق ما يصل إلى N × M من عمليات التكامل المنفصلة، لكل منها خصائصه في المصادقة وصيغ الأخطاء وجداول التحديث. وكان إصلاح خلل في موصل واحد لا يفيد الموصلات الأخرى، وكان كل نموذج أو أداة جديدة يضاعف العمل.

لماذا يفوز بروتوكول واحد

يدان تمسكان محولًا عالميًا أبيض للكهرباء للسفر مع عدة أنواع من القوابس

يغيّر البروتوكول المشترك المعادلة من N × M إلى N + M. يكتب مؤلف الأداة خادمًا واحدًا، ويكتب مؤلف التطبيق عميلًا واحدًا، وكل شيء آخر يتصل دون كود إضافي.

  • إعادة الاستخدام: خادم واحد لقاعدة بيانات يعمل في Claude Desktop أو Claude Code أو محرر نصوص أو وكيل مخصص.
  • حرية التبديل: غيّر النموذج الذي يعمل خلف تطبيقك، وستستمر اتصالات الأدوات في العمل.
  • العزل: يعمل كل خادم كعملية مستقلة، فيبقى التعطل أو الخلل محصورًا.
  • البحث أثناء التشغيل: يسأل العملاء الخوادم عمّا تقدمه عند الاتصال، فتظهر أدوات جديدة دون إصدار جديد من المضيف.

💡 يستحق التذكر: لا يجعل MCP النموذج أذكى. إنه يمنح النموذج يدين. ما زال الاستدلال يحدث داخل النموذج، والبروتوكول يحمل الطلبات إلى الخارج والنتائج إلى الداخل فقط.

اللاعبون الثلاثة في كل جلسة

نادل يدفع ورقة طلب نحو طاهٍ عبر نافذة تسليم في مطبخ مطعم

تخيّل مطعمًا. قاعة الطعام هي المضيف، والنادل هو العميل، وكل محطة في المطبخ هي خادم. لا يتحدث الزبون إلى الموقد أبدًا، ولا يتحدث الموقد إلى الزبون. كل شيء يمر عبر تسليم محدد، وهذا تحديدًا ما يقوم به MCP.

المضيفون

المضيف هو التطبيق الذي تفتحه فعليًا: Claude Desktop أو Claude Code أو محرر فيه ميزات ذكاء اصطناعي، أو وكيل كتبته بنفسك. يملك المضيف المحادثة مع النموذج، ويعرض نوافذ طلب الإذن، ويقرر أي الخوادم يُشغَّل.

العملاء

داخل المضيف، يدير كائن عميل واحد اتصالًا واحدًا بخادم واحد. إذا اتصلت بخمسة خوادم، يحمل المضيف خمسة عملاء. يحتفظ كل عميل بحالة جلسته الخاصة، ويتفاوض على القدرات، ويترجم بين الاستدعاءات الداخلية للمضيف ورسائل البروتوكول.

الخوادم

الخادم برنامج صغير يعرض قدرات. يمكن أن يعمل على حاسوبك المحمول كعملية فرعية، أو على جهاز آخر خلف عنوان URL. قد يغلّف نظام ملفات، أو حساب GitHub، أو قاعدة بيانات، أو مولّد صور.

الدورأين يوجدما المسؤول عنهمثال
المضيف (Host)جهازك أو تطبيق سحابيمحادثة النموذج، ومطالبات الموافقة، وتشغيل الخادمClaude Desktop، Claude Code
العميل (Client)داخل المضيفاتصال واحد وجلسة واحدة لكل خادمكائن اتصال من MCP SDK
الخادم (Server)عملية محلية أو عنوان URL بعيدعرض الأدوات والموارد والأوامر الجاهزةخادم نظام ملفات، خادم قاعدة بيانات

داخل رسائل البروتوكول

كل حوار بين عميل وخادم هو تدفق من رسائل صغيرة ومملة ويمكن التنبؤ بها. هذه القابلية للتنبؤ هي الفكرة كلها.

JSON-RPC عبر الشبكة

كل رسالة في MCP من نوع JSON-RPC 2.0، وهذا ما يمنح البروتوكول ثلاثة أشكال للرسائل بالتحديد:

  • يحمل الطلب id وmethod، ويتوقع ردًا.
  • تكرر الاستجابة ذلك id وتحمل إما result أو error.
  • ليس للإشعار id، ولا يتوقع أي رد.

إليك استدعاء أداة كما ينتقل من العميل إلى الخادم:

{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "generate_image",
    "arguments": { "prompt": "a lighthouse at dawn, 35mm film", "aspect_ratio": "16:9" }
  }
}

والرد المقابل:

{
  "jsonrpc": "2.0",
  "id": 7,
  "result": {
    "content": [{ "type": "text", "text": "Generation accepted. predict_id: abc123" }],
    "isError": false
  }
}

يُستخدم id المشترك ليطابق العميل بين الرد وسؤاله، حتى حين تكون عدة استدعاءات قيد التنفيذ في وقت واحد.

المصافحة بالترتيب

شخصان يتصافحان فوق طاولة اجتماعات خشبية فاتحة

قبل تشغيل أي أداة، يتفق العميل والخادم على طريقة التخاطب. التسلسل قصير ويتكرر دائمًا بالطريقة نفسها:

  1. initialize (طلب): يرسل العميل إصدار البروتوكول الذي يريده، والقدرات التي يدعمها، واسمه وإصداره.
  2. initialize (استجابة): يرد الخادم بالإصدار الذي سيستخدمه، وقدراته، وتعليمات مكتوبة اختيارية للنموذج.
  3. notifications/initialized: يؤكد العميل، وتُفتح الجلسة.
  4. tools/list وresources/list وprompts/list: يسأل العميل عمّا يقدمه الخادم، ضمن القدرات التي أعلنها الطرفان.
  5. الحركة العادية: استدعاءات وقراءات، وnotifications/tools/list_changed من حين لآخر عندما يضيف خادم أداة أو يحذفها في منتصف الجلسة.

💡 عدم تطابق الإصدارات: إذا لم يدعم الخادم الإصدار الذي طلبه العميل، يرد بإصدار يدعمه. عندها يقبل العميل ذلك الإصدار، أو ينفصل بشكل نظيف.

stdio مقابل Streamable HTTP

منظور من زاوية منخفضة لممر هادئ في مركز بيانات بين أرفف الخوادم

يمكن أن تسافر الرسائل نفسها عبر نقلين رسميين.

مع stdio، يشغّل المضيف الخادم كعملية فرعية، ويتبادل JSON مفصولًا بأسطر جديدة عبر الإدخال والإخراج القياسيين. يجب أن تذهب السجلات إلى الخطأ القياسي، لأن طباعة واحدة عرضية على الإخراج القياسي تفسد التدفق. أما مع Streamable HTTP، فيقع الخادم خلف عنوان URL واحد، ويرسل العميل الرسائل بطلبات POST، ويرد الخادم بـ JSON عادي أو يفتح استجابة متدفقة حين يحتاج إلى إرسال عدة رسائل. وقد حل Streamable HTTP محل نقل HTTP مع SSE الأقدم في مراجعة المواصفات الصادرة في مارس 2025.

الميزةstdioStreamable HTTP
مكان تشغيل الخادمجهازك، كعملية فرعيةأي مكان يمكن الوصول إليه عبر عنوان URL
الإعدادأمر واحد في ملف إعداداتنقطة نهاية منشورة
المصادقةترث صلاحيات مستخدمكتفويض قائم على OAuth
المستخدمون المعتادونالمطورون الفرديون، والأدوات المحليةالفرق، والخدمات المستضافة، والموصلات المشتركة
العملاء المتزامنونواحدكثيرون

يبدو إدخال Claude Desktop النموذجي لخادم محلي هكذا:

{
  "mcpServers": {
    "files": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/projects"]
    }
  }
}

الأدوات والموارد والأوامر الجاهزة

لوحة عمل خشبية مثقوبة تتدلى منها مطارق ومفاتيح وكماشات داخل رسومات مرسومة

تعرض الخوادم ثلاث لبنات بناء. وهي تختلف أساسًا في من يقرر متى تُستخدم.

العنصر الأساسييتحكم فيهالغرضمثالالطرق
الأدواتالنموذجتنفيذ إجراء أو تشغيل حسابgenerate_image، run_querytools/list، tools/call
المواردالتطبيقتوفير سياق للقراءة فقطملف، أو مخطط قاعدة بياناتresources/list، resources/read
الأوامر الجاهزةالمستخدمتقديم قوالب قابلة لإعادة الاستخدامأمر "راجع طلب الدمج هذا"prompts/list، prompts/get

الأدوات تنفذ الأشياء

للأداة name، وdescription، وinputSchema مكتوب بصيغة JSON Schema. الوصف هو ما يقرؤه النموذج فعلًا حين يقرر استدعاء الأداة أم لا، لذلك يؤدي الوصف الغامض إلى استدعاءات خاطئة أو ناقصة. اكتبه كدليل قصير لزميل لم يرَ نظامك من قبل.

توضح الموصلات الحقيقية النمط جيدًا. يعرض موصل PicassoIA في claude.ai أدوات مثل generate_image، وedit_image، وgenerate_video_picassoia، وgenerate_video_seedance، وget_generation، وlist_models. تعيد أداة التوليد معرّف تنبؤ فورًا، ثم يستدعي النموذج get_generation مرارًا وتكرارًا حتى تصبح الحالة succeeded. هذا يعني أن طلبًا واحدًا من المستخدم يتحول إلى سلسلة من استدعاءات الأدوات، ولم يحتج البروتوكول إلى ميزة خاصة لذلك.

الموارد توفر السياق

تُعنون الموارد بواسطة URI، مثل file:///project/README.md. يقرر المضيف أيها يرفق بالمحادثة، ويعيد resources/read محتوياتها مع نوع MIME. يمكن للخوادم أيضًا نشر قوالب موارد تحمل معاملات، ويستطيع العملاء الاشتراك في التغييرات حتى يبقى السياق محدّثًا.

الأوامر الجاهزة تغلف سير العمل

الأوامر الجاهزة قوالب يطلقها المستخدم عن قصد، عادةً كأوامر شرطة مائلة. يمكن للأمر الجاهز أن يأخذ وسائط ويعيد مجموعة جاهزة من الرسائل، فيستطيع الفريق أن ينشر صياغته الأفضل لعبارتي "لخّص هذا الحادث" أو "اكتب ملاحظات الإصدار" مرة واحدة ويعيد استخدامها في كل مكان.

ما الذي يحدث حين يستدعي Claude أداة

مهندس يرسم ثلاثة صناديق مترابطة بأسهم دائرية على لوح أبيض كبير

هذا هو الجزء الذي يخطئ فيه الناس غالبًا: النموذج لا يتكلم MCP أبدًا. المضيف هو الذي يتكلمه. لا يرى Claude إلا تعريفات الأدوات بصيغة استخدام الأدوات الخاصة به، ويصدر طلبات منظمة. كل ما عدا ذلك تفاصيل ربط تقنية.

من السؤال إلى استدعاء الأداة

  1. تسأل أنت. "غيّر حجم صورة البطل واحفظها في مجلد مشروعي."
  2. يرسل المضيف السياق. يمرّر رسالتك مع تعريفات الأدوات التي جُمعت من كل خادم متصل إلى واجهة API الخاصة بالنموذج.
  3. يقرر Claude. بدلًا من النص النهائي، يعيد كتلة tool_use تسمّي أداة ووسائطها.
  4. يتحقق المضيف من الموافقة. قد يعرض مطالبة بالموافقة، ثم يوجّه الاستدعاء إلى العميل الذي يملك تلك الأداة.
  5. يستدعي العميل الخادم. يُرسَل طلب tools/call، وينفّذ الخادم العمل، ثم يعيد كتل content.
  6. يعيد المضيف النتيجة. تصل النتيجة إلى Claude على شكل كتلة tool_result، مع المحادثة حتى تلك اللحظة.
  7. يواصل Claude. يستدعي أداة أخرى أو يكتب الإجابة النهائية.

أين تعيش حلقة الوكيل

تتكرر الخطوات من 3 إلى 7 حتى يتوقف Claude عن طلب الأدوات. هذا التكرار هو حلقة الوكيل، وهي تعيش في المضيف، لا في البروتوكول. يحدد MCP الأبواب، ويقرر المضيف عدد المرات التي يعبر فيها منها. وكيل الذكاء الاصطناعي ببساطة مضيف يشغّل هذه الحلقة بخطط أطول، وتدخلات أقل، وأحيانًا وكلاء مساعدين خاصين به.

💡 تكلفة خفية: كل تعريف أداة يشغل مساحة في نافذة السياق. خمسون أداة قد تستهلك آلاف التوكنات قبل أن يُقرأ أول كلمة من سؤالك. المضيفون الجيدون يحمّلون المخططات عند الحاجة، أو يتيحون لك إيقاف الخوادم لكل مشروع على حدة.

الأمان والصلاحيات

قفل نحاسي ثقيل معلّق بسلسلة مجلفنة على بوابة خشبية متآكلة

الخادم الذي يستطيع تشغيل أوامر أو لمس الملفات قوي، ولهذا بالتحديد يحتاج إلى ضوابط حماية.

الموافقة أولًا

تطلب المواصفات من المضيفين الحصول على موافقة صريحة من المستخدم قبل استدعاء الأدوات أو مشاركة البيانات، وتلتزم المضيفات الناضجة بذلك عبر مطالبات الموافقة وقوائم السماح لكل أداة. تذكّر أن خادم stdio المحلي يعمل بصلاحيات حسابك كمستخدم، فتعامل مع تثبيته كما تتعامل مع تثبيت أي برنامج. تضيف الخوادم البعيدة OAuth، الذي يتيح لك منح وصول محدود وإلغاءه لاحقًا.

نقاط الفشل الشائعة

  • حقن الأوامر عبر النتائج: قد تحتوي صفحة ويب أو تذكرة أو بريد إلكتروني تعيده أداة على نص يحاول إعطاء النموذج أوامر جديدة.
  • أوصاف الأدوات المسمومة: قد يخفي خادم خبيث تعليمات داخل أوصافه.
  • بيانات اعتماد أوسع من اللازم: توكن يستطيع حذف كل شيء سيُستخدم في النهاية لحذف كل شيء. فضّل الوصول للقراءة فقط.
  • مخرجات قياسية مزعجة: مخرجات التصحيح في خادم stdio تكسر تدفق JSON.
  • أدوات كثيرة جدًا: مع توفر عشرات الأدوات، يختار النموذج الخاطئة أكثر. اجعل كل خادم مركّزًا.
  • المهام الطويلة: استدعاء واحد يعمل عشر دقائق ينتهي بانتهاء المهلة. أعد معرّفًا ودع النموذج يستعلم عن الحالة، كما تفعل مولدات الصور والفيديو.

استخدم Claude Sonnet 5 على PicassoIA

إذا أردت بناء خادمك الخاص، فإن Claude Sonnet 5 على PicassoIA شريك برمجة مفيد. صُمم للمهام البرمجية متعددة الخطوات واستخدام الأدوات، ويقرأ الصور، لذلك يصلح لقطة شاشة لخطأ كمدخل.

  1. افتح صفحة النموذج. انتقل إلى صفحة Claude Sonnet 5 في مجموعة النماذج اللغوية الكبيرة.
  2. اكتب الأمر النصي. هذا هو الحقل الإلزامي الوحيد. كن محددًا بشأن اللغة و SDK والأداة التي تريدها.
  3. اضبط الجهد. القيمة الافتراضية هي low، وهي تتخطى التفكير الموسّع للحصول على إجابات سريعة. ارفعها لخطأ يمتد عبر عدة ملفات.
  4. عدّل الحدود. القيمة الافتراضية للحقل max_tokens هي 8192، ويثبّت system_prompt الاختياري دورًا أو أسلوب برمجة للجلسة.
  5. أرفق صورة إذا كان ذلك مفيدًا. يقبل حقل image لقطة شاشة، ويحافظ max_image_resolution (الافتراضي 0.5 ميغابكسل) على خفتها.
  6. ولّد وراجع. انسخ الكود إلى مشروعك واختبره باستخدام MCP Inspector قبل أن تثق به.

أمر نصي يعمل جيدًا:

Write a minimal MCP server in TypeScript using the official SDK. It exposes one tool,
word_count, that takes a string and returns the number of words. Use the stdio transport
and log only to stderr. Include the claude_desktop_config.json entry to register it.

يتحدث PicassoIA بلغة MCP أيضًا. يسرد موصل claude.ai الخاص به أربعة نماذج: PicassoIA Image، وPicassoIA Image Editor Pro، وPicassoIA Video، وSeedance 2.5 Lite، الذي ينتج فيديو مع صوت. التنبؤات غير متزامنة، ويستطيع الحساب تشغيل خمسة في وقت واحد عبر كل اتصالاته، لذا أبقِ كل دفعة صغيرة. راجع صفحة الأسعار لمعرفة ما تتضمنه خطتك.

أنشئ مرئياتك الخاصة اليوم

مصمم عند مكتب خشبي طويل يحرر صورة طبيعية بضوء الساعة الذهبية

خلف كل لحظة سلسة يقول فيها "Claude، أنشئ لي صورة" توجد مصافحة، ومخطط، وحلقة. أسرع طريقة لتشعر بذلك هي أن تنتج شيئًا. افتح PicassoIA Image وصف مشهدًا، وانتقل إلى Seedream 4.5 أو FLUX 2 Pro لمظهر مختلف، ثم سلّم النتيجة إلى Seedance 2.0 لتحويل الصورة الثابتة إلى مقطع قصير. صِل موصل PicassoIA مع Claude، وستستطيع أن تطلب كل ذلك بلغة عادية، ثم تراقب استدعاءات الأدوات من هذا المقال وهي تجري أمامك في الوقت الفعلي.

اختر فكرة واحدة من الأقسام أعلاه، واكتب جملة واحدة عمّا تريد أن تراه، ونفّذها. صورتك الأولى على بُعد ثوانٍ قليلة في picassoia.com.

شارك هذا المقال

اختر لغتك

مقالات ذات صلة