الإعدادMCP

MCP

يدعم Bob Shell بروتوكول Model Context Protocol (MCP)، مما يتيح لك توسيع قدرات Bob بالاتصال بالخدمات والأدوات الخارجية.

ما هو MCP؟

يعمل خادم MCP (Model Context Protocol) كجسر بين Bob والخدمات الخارجية مثل قواعد البيانات وواجهات برمجة التطبيقات والسكريبتات المخصصة. مع MCP، يمكنك توسيع قدرات Bob إلى ما هو أبعد من ميزاته المدمجة.

تُزوّد خوادم MCP بوبًا بـ:

  • اكتشاف الأدوات: الوصول إلى الأدوات المتاحة مع أوصافها ومعاملاتها
  • استدعاء الأدوات: القدرة على استدعاء أدوات محددة بوسيطات وتلقي استجابات منظمة
  • الوصول إلى الموارد: إمكانية قراءة البيانات من موارد محددة

فوائد MCP

  • توسيع الوظائف: أضف قدرات مخصصة لـ Bob غير متوفرة افتراضيًا
  • التكامل مع الخدمات: اربط Bob بقواعد بياناتك وواجهات برمجة التطبيقات وأنظمتك الأخرى
  • أتمتة سير العمل: أنشئ أدوات متخصصة لاحتياجاتك الخاصة
  • مشاركة القدرات: وزّع الأدوات المفيدة عبر فريقك

إعداد خوادم MCP

يمكنك إدارة إعدادات خادم MCP على مستويين:

  1. الإعداد العام: الإعدادات في <USER_HOME>/.bob/mcp_settings.json تنطبق على جميع مساحات العمل
  2. إعداد مستوى المشروع: الإعدادات في .bob/mcp.json تنطبق على المشروع الحالي فقط

عندما يوجد اسم خادم في كلا الإعدادين العام ومستوى المشروع، تأخذ الأولوية لإعداد مستوى المشروع.

تحرير ملفات إعداد MCP

استخدم Bob IDE أو محرر نصوص آخر لتعديل ملفات إعداد MCP.

يوضح المثال التالي إعداد خادم Stdio أساسي:

{
  "mcpServers": {
    "server1": {
      "command": "python",
      "args": ["/path/to/server.py"],
      "env": {
        "API_KEY": "your_api_key"
      },
      "alwaysAllow": ["tool1", "tool2"],
      "disabled": false
    }
  }
}

خصائص الإعداد

يتطلب كل إعداد خادم إحدى هذه الخصائص:

  • command: مسار الملف التنفيذي لنقل Stdio
  • url: عنوان URL لنقطة نهاية SSE للخوادم البعيدة
  • httpURL: عنوان URL لنقطة نهاية HTTP لنقل Streamable HTTP

الخصائص الاختيارية تشمل:

  • args: وسيطات سطر الأوامر لنقل Stdio
  • headers: رؤوس HTTP مخصصة لنقل SSE
  • env: متغيرات البيئة لعملية الخادم
  • cwd: دليل العمل لنقل Stdio
  • timeout: مهلة الطلب بالميلي ثانية (الافتراضي: 600,000 مللي ثانية / 10 دقائق)
  • alwaysAllow: أسماء الأدوات للموافقة عليها تلقائيًا
  • disabled: اضبط على true لتعطيل الخادم

أنواع النقل

يدعم MCP ثلاث طرق للتواصل مع الخوادم:

نقل Stdio

يُشغّل نقل Stdio الخوادم محليًا على جهازك:

  • يستخدم تدفقات الإدخال/الإخراج القياسية للتواصل
  • يوفر زمن استجابة أقل وأمان أفضل
  • يعمل كعملية فرعية على جهازك

مثال على الإعداد:

{
 "mcpServers": {
   "local-server": {
     "command": "node",
     "args": ["server.js"],
     "cwd": "/path/to/project",
     "env": {
       "API_KEY": "your_api_key"
     },
     "alwaysAllow": ["tool1", "tool2"]
   }
 }
}

نقل SSE

يتصل نقل SSE بالخوادم البعيدة عبر HTTP/HTTPS:

  • يستخدم بروتوكول Server-Sent Events
  • يعمل مع الخوادم المستضافة على أجهزة مختلفة
  • يتطلب الوصول إلى الشبكة

مثال على الإعداد:

{
 "mcpServers": {
   "remote-server": {
     "url": "https://your-server-url.com/mcp",
     "headers": {
       "Authorization": "Bearer your-token"
     },
     "alwaysAllow": ["tool3"]
   }
 }
}

نقل Streamable HTTP

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

  • يستخدم اتصال HTTP ثنائي الاتجاه
  • يدعم كلًا من الطلب/الاستجابة والرسائل المدفوعة من الخادم
  • يعمل مع الخوادم المستضافة على أجهزة مختلفة

مثال على الإعداد:

{
 "mcpServers": {
   "remote-server": {
     "httpURL": "https://your-server-url.com/mcp"
   }
 }
}

أمثلة خاصة بالمنصة

إعداد Windows

{
  "mcpServers": {
    "puppeteer": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-puppeteer"
      ]
    }
  }
}

إعداد macOS وLinux

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-puppeteer"
      ]
    }
  }
}

إعداد مدير إصدار وقت التشغيل

عند استخدام مديري إصدار مثل asdf أو mise:

{
  "mcpServers": {
    "mcp-batchit": {
      "command": "mise",
      "args": [
        "x",
        "--",
        "node",
        "/Users/myself/workspace/mcp-batchit/build/index.js"
      ],
      "alwaysAllow": [
        "search",
        "batch_execute"
      ]
    }
  }
}
ما رأيك في هذا الموضوع؟