نظرة عامة
يوفر بروتوكول سياق النموذج (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
يدعم حقل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 ثانية إذا لم تُحدد. هذا مفيد بشكل خاص للخوادم البعيدة التي قد يكون لها أوقات استجابة متغيرة.
تصفية الأدوات
هناك طريقتان لتصفية الأدوات:- الوصول إلى أداة محددة باستخدام فهرسة نمط القاموس.
- تمرير قائمة أسماء الأدوات إلى منشئ
MCPServerAdapter.
الوصول إلى أداة محددة باستخدام فهرسة نمط القاموس.
تمرير قائمة أسماء الأدوات إلى منشئ MCPServerAdapter.
الاستخدام مع CrewBase
لاستخدام أدوات MCPServer ضمن فئة CrewBase، استخدم طريقةget_mcp_tools. يجب توفير إعدادات الخادم عبر خاصية mcp_server_params. يمكنك تمرير إعداد واحد أو قائمة من إعدادات خوادم متعددة.
إعداد مهلة الاتصال
يمكنك إعداد مهلة الاتصال لخوادم 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 للحفاظ على سلامة وكلائك.
GitHub Repository
CrewAI MCP Demo
البقاء آمناً مع MCP
تحذير أمني: هجمات إعادة ربط DNS
يمكن أن تكون عمليات نقل SSE عرضة لهجمات إعادة ربط DNS إذا لم تكن مؤمنة بشكل صحيح. لمنع ذلك:- تحقق دائماً من رؤوس Origin على اتصالات SSE الواردة للتأكد من أنها تأتي من مصادر متوقعة
- تجنب ربط الخوادم بجميع واجهات الشبكة (0.0.0.0) عند التشغيل محلياً - اربط فقط بـ localhost (127.0.0.1) بدلاً من ذلك
- نفّذ مصادقة مناسبة لجميع اتصالات SSE
القيود
- الأوليات المدعومة: حالياً، يدعم
MCPServerAdapterبشكل أساسي تكييفأدواتMCP. لا يتم دمج أوليات MCP الأخرى مثلpromptsأوresourcesمباشرة كمكونات CrewAI من خلال هذا المحول في هذا الوقت. - معالجة المخرجات: يعالج المحول عادةً المخرجات النصية الرئيسية من أداة MCP (مثل
.content[0].text). قد تتطلب المخرجات المعقدة أو متعددة الوسائط معالجة مخصصة إذا لم تتناسب مع هذا النمط.
