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

نظرة عامة

يوفر تكامل MCP DSL (لغة المجال المحددة) في CrewAI الطريقة الأبسط لربط وكلائك بخوادم MCP (بروتوكول سياق النموذج). ما عليك سوى إضافة حقل mcps إلى وكيلك وسيتعامل CrewAI مع كل التعقيدات تلقائياً.
هذا هو النهج الموصى به لمعظم حالات استخدام MCP. للسيناريوهات المتقدمة التي تتطلب إدارة اتصال يدوية، راجع MCPServerAdapter.

الاستخدام الأساسي

أضف خوادم MCP إلى وكيلك باستخدام حقل mcps:
from crewai import Agent

agent = Agent(
    role="Research Assistant",
    goal="Help with research and analysis tasks",
    backstory="Expert assistant with access to advanced research tools",
    mcps=[
        "https://mcp.exa.ai/mcp?api_key=your_key&profile=research"
    ]
)

# MCP tools are now automatically available!
# No need for manual connection management or tool configuration

تنسيقات المراجع المدعومة

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

# Basic HTTPS server
"https://api.example.com/mcp"

# Server with authentication
"https://mcp.exa.ai/mcp?api_key=your_key&profile=your_profile"

# Server with custom path
"https://services.company.com/api/v1/mcp"

اختيار أدوات محددة

استخدم صياغة # لاختيار أدوات محددة من خادم:
# Get only the forecast tool from weather server
"https://weather.api.com/mcp#get_forecast"

# Get only the search tool from Exa
"https://mcp.exa.ai/mcp?api_key=your_key#web_search_exa"

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

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

# Specific tool from a connected MCP
"stripe#list_invoices"

# Multiple connected MCPs
mcps=[
    "snowflake",
    "stripe",
    "github"
]

مثال كامل

إليك مثالاً كاملاً يستخدم خوادم MCP متعددة:
from crewai import Agent, Task, Crew, Process

# Create agent with multiple MCP sources
multi_source_agent = Agent(
    role="Multi-Source Research Analyst",
    goal="Conduct comprehensive research using multiple data sources",
    backstory="""Expert researcher with access to web search, weather data,
    financial information, and academic research tools""",
    mcps=[
        # External MCP servers
        "https://mcp.exa.ai/mcp?api_key=your_exa_key&profile=research",
        "https://weather.api.com/mcp#get_current_conditions",

        # Connected MCPs from catalog
        "snowflake",
        "stripe#list_invoices",
        "github#search_repositories"
    ]
)

# Create comprehensive research task
research_task = Task(
    description="""Research the impact of AI agents on business productivity.
    Include current weather impacts on remote work, financial market trends,
    and recent academic publications on AI agent frameworks.""",
    expected_output="""Comprehensive report covering:
    1. AI agent business impact analysis
    2. Weather considerations for remote work
    3. Financial market trends related to AI
    4. Academic research citations and insights
    5. Competitive landscape analysis""",
    agent=multi_source_agent
)

# Create and execute crew
research_crew = Crew(
    agents=[multi_source_agent],
    tasks=[research_task],
    process=Process.sequential,
    verbose=True
)

result = research_crew.kickoff()
print(f"Research completed with {len(multi_source_agent.mcps)} MCP data sources")

تسمية الأدوات والتنظيم

يتعامل CrewAI تلقائياً مع تسمية الأدوات لمنع التعارضات:
# Original MCP server has tools: "search", "analyze"
# CrewAI creates tools: "mcp_exa_ai_search", "mcp_exa_ai_analyze"

agent = Agent(
    role="Tool Organization Demo",
    goal="Show how tool naming works",
    backstory="Demonstrates automatic tool organization",
    mcps=[
        "https://mcp.exa.ai/mcp?api_key=key",      # Tools: mcp_exa_ai_*
        "https://weather.service.com/mcp",         # Tools: weather_service_com_*
        "snowflake"                                # Tools: snowflake_*
    ]
)

# Each server's tools get unique prefixes based on the server name
# This prevents naming conflicts between different MCP servers

معالجة الأخطاء والمرونة

صُمم MCP DSL ليكون متيناً وسهل الاستخدام:

التعامل الأنيق مع فشل الخادم

agent = Agent(
    role="Resilient Researcher",
    goal="Research despite server issues",
    backstory="Experienced researcher who adapts to available tools",
    mcps=[
        "https://primary-server.com/mcp",         # Primary data source
        "https://backup-server.com/mcp",          # Backup if primary fails
        "https://unreachable-server.com/mcp",     # Will be skipped with warning
        "snowflake"                               # Connected MCP from catalog
    ]
)

# Agent will:
# 1. Successfully connect to working servers
# 2. Log warnings for failing servers
# 3. Continue with available tools
# 4. Not crash or hang on server failures

حماية المهلة الزمنية

جميع عمليات MCP لها مهلات زمنية مدمجة:
  • مهلة الاتصال: 10 ثوانٍ
  • مهلة تنفيذ الأداة: 30 ثانية
  • مهلة الاكتشاف: 15 ثانية
# These servers will timeout gracefully if unresponsive
mcps=[
    "https://slow-server.com/mcp",        # Will timeout after 10s if unresponsive
    "https://overloaded-api.com/mcp"      # Will timeout if discovery takes > 15s
]

ميزات الأداء

التخزين المؤقت التلقائي

تُخزن مخططات الأدوات مؤقتاً لمدة 5 دقائق لتحسين الأداء:
# First agent creation - discovers tools from server
agent1 = Agent(role="First", goal="Test", backstory="Test",
               mcps=["https://api.example.com/mcp"])

# Second agent creation (within 5 minutes) - uses cached tool schemas
agent2 = Agent(role="Second", goal="Test", backstory="Test",
               mcps=["https://api.example.com/mcp"])  # Much faster!

الاتصالات حسب الطلب

تُنشأ اتصالات الأدوات فقط عند استخدام الأدوات فعلياً:
# Agent creation is fast - no MCP connections made yet
agent = Agent(
    role="On-Demand Agent",
    goal="Use tools efficiently",
    backstory="Efficient agent that connects only when needed",
    mcps=["https://api.example.com/mcp"]
)

# MCP connection is made only when a tool is actually executed
# This minimizes connection overhead and improves startup performance

التكامل مع الميزات الموجودة

تعمل أدوات MCP بسلاسة مع ميزات CrewAI الأخرى:
from crewai.tools import BaseTool

class CustomTool(BaseTool):
    name: str = "custom_analysis"
    description: str = "Custom analysis tool"

    def _run(self, **kwargs):
        return "Custom analysis result"

agent = Agent(
    role="Full-Featured Agent",
    goal="Use all available tool types",
    backstory="Agent with comprehensive tool access",

    # All tool types work together
    tools=[CustomTool()],                          # Custom tools
    apps=["gmail", "slack"],                       # Platform integrations
    mcps=[                                         # MCP servers
        "https://mcp.exa.ai/mcp?api_key=key",
        "snowflake"
    ],

    verbose=True,
    max_iter=15
)

أفضل الممارسات

1. استخدم أدوات محددة عند الإمكان

# Good - only get the tools you need
mcps=["https://weather.api.com/mcp#get_forecast"]

# Less efficient - gets all tools from server
mcps=["https://weather.api.com/mcp"]

2. تعامل مع المصادقة بأمان

import os

# Store API keys in environment variables
exa_key = os.getenv("EXA_API_KEY")
exa_profile = os.getenv("EXA_PROFILE")

agent = Agent(
    role="Secure Agent",
    goal="Use MCP tools securely",
    backstory="Security-conscious agent",
    mcps=[f"https://mcp.exa.ai/mcp?api_key={exa_key}&profile={exa_profile}"]
)

3. خطط لفشل الخادم

# Always include backup options
mcps=[
    "https://primary-api.com/mcp",       # Primary choice
    "https://backup-api.com/mcp",        # Backup option
    "snowflake"                          # Connected MCP fallback
]

4. استخدم أدواراً وصفية للوكلاء

agent = Agent(
    role="Weather-Enhanced Market Analyst",
    goal="Analyze markets considering weather impacts",
    backstory="Financial analyst with access to weather data for agricultural market insights",
    mcps=[
        "https://weather.service.com/mcp#get_forecast",
        "stripe#list_invoices"
    ]
)

استكشاف الأخطاء وإصلاحها

المشاكل الشائعة

لم يتم اكتشاف أدوات:
# Check your MCP server URL and authentication
# Verify the server is running and accessible
mcps=["https://mcp.example.com/mcp?api_key=valid_key"]
انتهاء مهلة الاتصال:
# Server may be slow or overloaded
# CrewAI will log warnings and continue with other servers
# Check server status or try backup servers
فشل المصادقة:
# Verify API keys and credentials
# Check server documentation for required parameters
# Ensure query parameters are properly URL encoded

متقدم: MCPServerAdapter

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