الانتقال إلى المحتوى الرئيسي

نظرة عامة

يوفر بروتوكول سياق النموذج (MCP) طريقة موحدة لوكلاء الذكاء الاصطناعي لتوفير سياق لنماذج اللغة الكبيرة من خلال التواصل مع خدمات خارجية تُعرف بخوادم MCP. يقدم CrewAI نهجين لتكامل MCP:

تكامل DSL البسيط (الموصى به)

استخدم حقل mcps مباشرة على الوكلاء لتكامل سلس مع أدوات MCP. يدعم DSL كلاً من المراجع النصية (للإعداد السريع) والإعدادات المنظمة (للتحكم الكامل).

المراجع النصية (إعداد سريع)

مثالية لخوادم HTTPS البعيدة وتكاملات MCP المتصلة من كتالوج CrewAI:

الإعدادات المنظمة (تحكم كامل)

للتحكم الكامل في إعدادات الاتصال وتصفية الأدوات وجميع أنواع النقل:

متقدم: MCPServerAdapter (للسيناريوهات المعقدة)

لحالات الاستخدام المتقدمة التي تتطلب إدارة اتصال يدوية، توفر مكتبة crewai-tools فئة MCPServerAdapter. ندعم حالياً آليات النقل التالية:
  • Stdio: للخوادم المحلية (التواصل عبر الإدخال/الإخراج القياسي بين العمليات على نفس الجهاز)
  • Server-Sent Events (SSE): للخوادم البعيدة (بث بيانات أحادي الاتجاه في الوقت الفعلي من الخادم إلى العميل عبر HTTP)
  • Streamable HTTPS: للخوادم البعيدة (اتصال مرن، ربما ثنائي الاتجاه عبر HTTPS، يستخدم غالباً SSE للتدفقات من الخادم إلى العميل)

فيديو تعليمي

شاهد هذا الفيديو التعليمي للحصول على دليل شامل حول تكامل MCP مع CrewAI:

التثبيت

يتطلب تكامل CrewAI MCP مكتبة mcp:

البدء السريع: تكامل DSL البسيط

أسهل طريقة لدمج خوادم MCP هي استخدام حقل mcps على وكلائك. يمكنك استخدام مراجع نصية أو إعدادات منظمة.

البدء السريع مع المراجع النصية

البدء السريع مع الإعدادات المنظمة

هذا كل شيء! يتم اكتشاف أدوات MCP تلقائياً وإتاحتها لوكيلك.

تنسيقات مراجع MCP

يدعم حقل mcps كلاً من المراجع النصية (للإعداد السريع) والإعدادات المنظمة (للتحكم الكامل). يمكنك مزج كلا التنسيقين في نفس القائمة.

المراجع النصية

خوادم MCP الخارجية

تكاملات MCP المتصلة

اربط خوادم MCP من كتالوج CrewAI أو أحضر خوادمك الخاصة. بمجرد الاتصال في حسابك، أشر إليها بالمعرف المختصر:

الإعدادات المنظمة

نقل Stdio (خوادم محلية)

مثالي لخوادم MCP المحلية التي تعمل كعمليات:

نقل HTTP/Streamable HTTP (خوادم بعيدة)

لخوادم MCP البعيدة عبر HTTP/HTTPS:

نقل SSE (البث في الوقت الفعلي)

للخوادم البعيدة التي تستخدم Server-Sent Events:

مراجع مختلطة

يمكنك دمج المراجع النصية والإعدادات المنظمة:

تصفية الأدوات

تدعم الإعدادات المنظمة تصفية أدوات متقدمة:

معاملات الإعداد

يدعم كل نوع نقل خيارات إعداد محددة:

معاملات MCPServerStdio

  • command (مطلوب): الأمر المراد تنفيذه (مثل "python" أو "node" أو "npx" أو "uvx")
  • args (اختياري): قائمة وسيطات الأمر (مثل ["server.py"] أو ["-y", "@mcp/server"])
  • env (اختياري): قاموس متغيرات البيئة لتمريرها إلى العملية
  • tool_filter (اختياري): دالة تصفية الأدوات لتصفية الأدوات المتاحة
  • cache_tools_list (اختياري): ما إذا كان يجب تخزين قائمة الأدوات مؤقتاً لوصول أسرع لاحقاً (الافتراضي: False)

معاملات MCPServerHTTP

  • url (مطلوب): عنوان URL الخادم (مثل "https://api.example.com/mcp")
  • headers (اختياري): قاموس رؤوس HTTP للمصادقة أو أغراض أخرى
  • streamable (اختياري): ما إذا كان يجب استخدام نقل HTTP القابل للبث (الافتراضي: True)
  • tool_filter (اختياري): دالة تصفية الأدوات لتصفية الأدوات المتاحة
  • cache_tools_list (اختياري): ما إذا كان يجب تخزين قائمة الأدوات مؤقتاً (الافتراضي: False)

معاملات MCPServerSSE

  • url (مطلوب): عنوان URL الخادم (مثل "https://api.example.com/mcp/sse")
  • headers (اختياري): قاموس رؤوس HTTP للمصادقة أو أغراض أخرى
  • tool_filter (اختياري): دالة تصفية الأدوات لتصفية الأدوات المتاحة
  • cache_tools_list (اختياري): ما إذا كان يجب تخزين قائمة الأدوات مؤقتاً (الافتراضي: False)

المعاملات المشتركة

تدعم جميع أنواع النقل:
  • tool_filter: دالة تصفية للتحكم في الأدوات المتاحة. يمكن أن تكون:
    • None (الافتراضي): جميع الأدوات متاحة
    • تصفية ثابتة: تُنشأ باستخدام create_static_tool_filter() لقوائم السماح/الحظر
    • تصفية ديناميكية: تُنشأ باستخدام create_dynamic_tool_filter() للتصفية الواعية بالسياق
  • cache_tools_list: عند True، تخزن قائمة الأدوات مؤقتاً بعد أول اكتشاف لتحسين الأداء في الاتصالات اللاحقة

الميزات الرئيسية

  • اكتشاف تلقائي للأدوات: يتم اكتشاف الأدوات ودمجها تلقائياً
  • منع تعارض الأسماء: تُضاف بادئات أسماء الخوادم لأسماء الأدوات
  • محسّن للأداء: اتصالات حسب الطلب مع تخزين مؤقت للمخططات
  • مرونة في الأخطاء: تعامل أنيق مع الخوادم غير المتاحة
  • حماية المهلة الزمنية: مهلات زمنية مدمجة تمنع تعليق الاتصالات
  • تكامل شفاف: يعمل بسلاسة مع ميزات CrewAI الموجودة
  • دعم نقل كامل: أنواع نقل Stdio وHTTP/Streamable HTTP وSSE
  • تصفية متقدمة: قدرات تصفية أدوات ثابتة وديناميكية
  • مصادقة مرنة: دعم للرؤوس ومتغيرات البيئة ومعاملات الاستعلام

معالجة الأخطاء

صُمم تكامل MCP DSL ليكون مرناً ويتعامل مع الفشل بأناقة:
جميع أخطاء الاتصال تُعالج بأناقة:
  • فشل الاتصال: تُسجل كتحذيرات، ويستمر الوكيل مع الأدوات المتاحة
  • أخطاء المهلة الزمنية: تنتهي الاتصالات بعد 30 ثانية (قابلة للتعديل)
  • أخطاء المصادقة: تُسجل بوضوح للتصحيح
  • إعدادات غير صالحة: تُرفع أخطاء التحقق عند إنشاء الوكيل

متقدم: MCPServerAdapter

للسيناريوهات المعقدة التي تتطلب إدارة اتصال يدوية، استخدم فئة MCPServerAdapter من crewai-tools. استخدام مدير سياق Python (تعليمة with) هو النهج الموصى به لأنه يتعامل تلقائياً مع بدء وإيقاف الاتصال بخادم MCP.

إعداد الاتصال

يدعم MCPServerAdapter عدة خيارات إعداد لتخصيص سلوك الاتصال:
  • connect_timeout (اختياري): الحد الأقصى للوقت بالثواني لانتظار إنشاء اتصال بخادم MCP. القيمة الافتراضية 30 ثانية إذا لم تُحدد. هذا مفيد بشكل خاص للخوادم البعيدة التي قد يكون لها أوقات استجابة متغيرة.
يوضح هذا النمط العام كيفية دمج الأدوات. للحصول على أمثلة محددة مصممة لكل نوع نقل، راجع الأدلة التفصيلية أدناه.

تصفية الأدوات

هناك طريقتان لتصفية الأدوات:
  1. الوصول إلى أداة محددة باستخدام فهرسة نمط القاموس.
  2. تمرير قائمة أسماء الأدوات إلى منشئ MCPServerAdapter.

الوصول إلى أداة محددة باستخدام فهرسة نمط القاموس.

تمرير قائمة أسماء الأدوات إلى منشئ MCPServerAdapter.

الاستخدام مع CrewBase

لاستخدام أدوات MCPServer ضمن فئة CrewBase، استخدم طريقة get_mcp_tools. يجب توفير إعدادات الخادم عبر خاصية mcp_server_params. يمكنك تمرير إعداد واحد أو قائمة من إعدادات خوادم متعددة.
عندما تكون فئة الطاقم مزينة بـ @CrewBase، تُدار دورة حياة المحول نيابة عنك:
  • أول استدعاء لـ get_mcp_tools() ينشئ بكسل MCPServerAdapter مشتركاً يُعاد استخدامه من قبل كل وكيل في الطاقم.
  • يُغلق المحول تلقائياً بعد اكتمال .kickoff() بفضل خطاف ما بعد التشغيل الضمني المحقون من @CrewBase، لذا لا حاجة للتنظيف اليدوي.
  • إذا لم يتم تعريف mcp_server_params، يُرجع get_mcp_tools() ببساطة قائمة فارغة، مما يسمح لنفس مسارات الكود بالعمل مع أو بدون إعداد MCP.
هذا يجعل من الآمن استدعاء get_mcp_tools() من طرق وكلاء متعددة أو تفعيل MCP بشكل انتقائي لكل بيئة.

إعداد مهلة الاتصال

يمكنك إعداد مهلة الاتصال لخوادم MCP عن طريق تعيين خاصية فئة mcp_connect_timeout. إذا لم تُحدد مهلة، تكون القيمة الافتراضية 30 ثانية.

تصفية الأدوات

يمكنك تصفية الأدوات المتاحة لوكيلك عن طريق تمرير قائمة أسماء الأدوات إلى طريقة get_mcp_tools.

استكشاف تكاملات MCP

تكامل DSL البسيط

الموصى به: استخدم صياغة حقل mcps=[] البسيطة لتكامل MCP بلا جهد.

نقل Stdio

الاتصال بخوادم MCP المحلية عبر الإدخال/الإخراج القياسي. مثالي للنصوص البرمجية والملفات التنفيذية المحلية.

نقل SSE

التكامل مع خوادم MCP البعيدة باستخدام Server-Sent Events لبث البيانات في الوقت الفعلي.

نقل Streamable HTTP

استخدام Streamable HTTP المرن للاتصال القوي مع خوادم MCP البعيدة.

الاتصال بخوادم متعددة

تجميع الأدوات من عدة خوادم MCP بشكل متزامن باستخدام محول واحد.

اعتبارات الأمان

مراجعة أفضل ممارسات الأمان المهمة لتكامل MCP للحفاظ على سلامة وكلائك.
تحقق من هذا المستودع للحصول على عروض وأمثلة كاملة لتكامل MCP مع CrewAI!

GitHub Repository

CrewAI MCP Demo

البقاء آمناً مع MCP

تأكد دائماً من أنك تثق بخادم MCP قبل استخدامه.

تحذير أمني: هجمات إعادة ربط DNS

يمكن أن تكون عمليات نقل SSE عرضة لهجمات إعادة ربط DNS إذا لم تكن مؤمنة بشكل صحيح. لمنع ذلك:
  1. تحقق دائماً من رؤوس Origin على اتصالات SSE الواردة للتأكد من أنها تأتي من مصادر متوقعة
  2. تجنب ربط الخوادم بجميع واجهات الشبكة (0.0.0.0) عند التشغيل محلياً - اربط فقط بـ localhost (127.0.0.1) بدلاً من ذلك
  3. نفّذ مصادقة مناسبة لجميع اتصالات SSE
بدون هذه الحمايات، يمكن للمهاجمين استخدام إعادة ربط DNS للتفاعل مع خوادم MCP المحلية من مواقع ويب بعيدة. لمزيد من التفاصيل، راجع وثائق أمان نقل MCP من Anthropic.

القيود

  • الأوليات المدعومة: حالياً، يدعم MCPServerAdapter بشكل أساسي تكييف أدوات MCP. لا يتم دمج أوليات MCP الأخرى مثل prompts أو resources مباشرة كمكونات CrewAI من خلال هذا المحول في هذا الوقت.
  • معالجة المخرجات: يعالج المحول عادةً المخرجات النصية الرئيسية من أداة MCP (مثل .content[0].text). قد تتطلب المخرجات المعقدة أو متعددة الوسائط معالجة مخصصة إذا لم تتناسب مع هذا النمط.