تخطَّ إلى المحتوى

خوادم MCP

أضف أدوات MCP محلية وبعيدة.

يمكنك إضافة أدوات خارجية إلى OpenCode باستخدام Model Context Protocol، أو MCP. يدعم OpenCode خوادم محلية وبعيدة.

بعد إضافتها، تصبح أدوات MCP متاحة تلقائيا للـ LLM إلى جانب الأدوات المضمنة.


تنبيهات

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

تميل بعض خوادم MCP، مثل خادم GitHub MCP، إلى إضافة الكثير من الرموز (tokens) وقد تتجاوز حد السياق بسهولة.


التمكين

يمكنك تعريف خوادم MCP في إعدادات OpenCode ضمن mcp. أضف كل خادم MCP باسم فريد. ويمكنك الإشارة إلى ذلك الخادم بالاسم عند توجيه الطلب إلى الـ LLM.

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"name-of-mcp-server": {
// ...
"enabled": true,
},
"name-of-other-mcp-server": {
// ...
},
},
}

يمكنك أيضا تعطيل خادم عبر ضبط enabled على false. يفيد ذلك إذا أردت تعطيله مؤقتا دون إزالته من إعداداتك.


تجاوز القيم الافتراضية البعيدة

يمكن للمنظمات توفير خوادم MCP الافتراضية عبر نقطة النهاية .well-known/opencode الخاصة بها. قد تكون هذه الخوادم معطّلة افتراضيا، مما يتيح للمستخدمين تفعيل ما يحتاجونه فقط.

لتفعيل خادم معيّن من الإعدادات البعيدة الخاصة بمؤسستك، أضفه إلى إعداداتك المحلية مع enabled: true:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}

تتغلب قيم إعداداتك المحلية على القيم الافتراضية البعيدة. راجع أولوية الإعدادات لمزيد من التفاصيل.


محلي

أضف خوادم MCP المحلية عبر ضبط type على "local" ضمن كائن mcp.

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp-server": {
"type": "local",
// Or ["bun", "x", "my-mcp-command"]
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true,
"environment": {
"MY_ENV_VAR": "my_env_var_value",
},
},
},
}

الأمر command هو الطريقة التي يتم بها تشغيل خادم MCP المحلي. ويمكنك أيضا تمرير قائمة بمتغيرات البيئة.

على سبيل المثال، إليك كيفية إضافة خادم MCP التجريبي @modelcontextprotocol/server-everything.

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp_everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
},
},
}

ولاستخدامه يمكنني إضافة use the mcp_everything tool إلى طلباتي.

use the mcp_everything tool to add the number 3 and 4

الخيارات

فيما يلي جميع الخيارات المتاحة لتهيئة خادم MCP محلي.

الخيارالنوعمطلوبالوصف
typeStringYنوع اتصال خادم MCP، ويجب أن يكون "local".
commandArrayYالأمر والوسائط اللازمة لتشغيل خادم MCP.
environmentObjectمتغيرات البيئة التي يتم تعيينها عند تشغيل الخادم.
enabledBooleanتفعيل خادم MCP أو تعطيله عند بدء التشغيل.
timeoutNumberالمهلة بالمللي ثانية لجلب الأدوات من خادم MCP. القيمة الافتراضية 5000 (5 ثوانٍ).

بعيد

أضف خوادم MCP البعيدة عبر ضبط type على "remote".

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"enabled": true,
"headers": {
"Authorization": "Bearer MY_API_KEY"
}
}
}
}

يمثل url عنوان URL لخادم MCP البعيد، وباستخدام خيار headers يمكنك تمرير قائمة من الرؤوس (headers).


الخيارات

الخيارالنوعمطلوبالوصف
typeStringYنوع اتصال خادم MCP، ويجب أن يكون "remote".
urlStringYعنوان URL لخادم MCP البعيد.
enabledBooleanتفعيل خادم MCP أو تعطيله عند بدء التشغيل.
headersObjectالرؤوس التي يتم إرسالها مع الطلب.
oauthObjectإعدادات مصادقة OAuth. راجع قسم OAuth أدناه.
timeoutNumberالمهلة بالمللي ثانية لجلب الأدوات من خادم MCP. القيمة الافتراضية 5000 (5 ثوانٍ).

OAuth

يتولى OpenCode تلقائيا معالجة مصادقة OAuth لخوادم MCP البعيدة. عندما يتطلب خادم ما المصادقة، سيقوم OpenCode بما يلي:

  1. اكتشاف استجابة 401 وبدء تدفق OAuth
  2. استخدام Dynamic Client Registration (RFC 7591) إذا كان الخادم يدعمه
  3. تخزين الرموز (tokens) بشكل آمن للطلبات المستقبلية

تلقائي

بالنسبة لمعظم خوادم MCP التي تدعم OAuth، لا تحتاج إلى إعدادات خاصة. ما عليك سوى تهيئة الخادم البعيد:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp"
}
}
}

إذا كان الخادم يتطلب المصادقة، فسيطلب منك OpenCode المصادقة عند أول محاولة لاستخدامه. وإذا لم يحدث ذلك، يمكنك تشغيل التدفق يدويا باستخدام opencode mcp auth <server-name>.


مُسجَّل مسبقا

إذا كانت لديك بيانات اعتماد العميل من موفّر خادم MCP، يمكنك تهيئتها:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {
"clientId": "{env:MY_MCP_CLIENT_ID}",
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
"scope": "tools:read tools:execute"
}
}
}
}

المصادقة

يمكنك تشغيل المصادقة يدويا أو إدارة بيانات الاعتماد.

صادِق مع خادم MCP معيّن:

Terminal window
opencode mcp auth my-oauth-server

اعرض جميع خوادم MCP وحالة المصادقة الخاصة بها:

Terminal window
opencode mcp list

احذف بيانات الاعتماد المخزنة:

Terminal window
opencode mcp logout my-oauth-server

سيفتح أمر mcp auth متصفحك للتفويض. بعد إكمال التفويض، سيخزّن OpenCode الرموز بشكل آمن في ~/.local/share/opencode/mcp-auth.json.


تعطيل OAuth

إذا أردت تعطيل OAuth التلقائي لخادم ما (على سبيل المثال، للخوادم التي تستخدم مفاتيح API بدلا من ذلك)، فاضبط oauth على false:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-api-key-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}"
}
}
}
}

خيارات OAuth

الخيارالنوعالوصف
oauthObject | falseكائن إعدادات OAuth، أو false لتعطيل الاكتشاف التلقائي لـ OAuth.
clientIdStringمعرّف عميل OAuth. إذا لم يُحدَّد، ستتم محاولة التسجيل الديناميكي للعميل.
clientSecretStringسرّ عميل OAuth، إذا كان مطلوبا من خادم التفويض.
scopeStringنطاقات OAuth المطلوبة أثناء التفويض.

تصحيح الأخطاء

إذا فشل خادم MCP بعيد في المصادقة، يمكنك تشخيص المشكلة باستخدام:

Terminal window
# View auth status for all OAuth-capable servers
opencode mcp auth list
# Debug connection and OAuth flow for a specific server
opencode mcp debug my-oauth-server

يعرض أمر mcp debug حالة المصادقة الحالية، ويختبر اتصال HTTP، ويحاول تنفيذ تدفق اكتشاف OAuth.


الإدارة

تتوفر خوادم MCP لديك كأدوات داخل OpenCode إلى جانب الأدوات المضمنة. لذا يمكنك إدارتها عبر إعدادات OpenCode مثل أي أداة أخرى.


عام

هذا يعني أنه يمكنك تفعيلها أو تعطيلها على مستوى عام.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp-foo": false
}
}

يمكننا أيضا استخدام نمط glob لتعطيل جميع خوادم MCP المطابقة.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp*": false
}
}

هنا نستخدم نمط glob my-mcp* لتعطيل جميع خوادم MCP.


لكل وكيل

إذا كان لديك عدد كبير من خوادم MCP فقد ترغب في تفعيلها لكل وكيل على حدة وتعطيلها على المستوى العام. للقيام بذلك:

  1. عطّلها كأداة على المستوى العام.
  2. في إعدادات الوكيل، فعّل خادم MCP كأداة.
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp": {
"type": "local",
"command": ["bun", "x", "my-mcp-command"],
"enabled": true
}
},
"tools": {
"my-mcp*": false
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true
}
}
}
}

أنماط Glob

يستخدم نمط glob أنماطا بسيطة من مطابقة glob:

  • * يطابق صفرا أو أكثر من أي محرف (على سبيل المثال، "my-mcp*" يطابق my-mcp_search وmy-mcp_list وغيرها.)
  • ? يطابق محرفا واحدا بالضبط
  • جميع المحارف الأخرى تُطابق حرفيا

أمثلة

فيما يلي أمثلة لبعض خوادم MCP الشائعة. يمكنك إرسال PR إذا أردت توثيق خوادم أخرى.


Sentry

أضف خادم MCP الخاص بـ Sentry للتفاعل مع مشاريع Sentry والقضايا (issues) الخاصة بك.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
}
}
}

بعد إضافة الإعدادات، قم بالمصادقة مع Sentry:

Terminal window
opencode mcp auth sentry

سيؤدي ذلك إلى فتح نافذة متصفح لإكمال تدفق OAuth وربط OpenCode بحساب Sentry الخاص بك.

بعد المصادقة، يمكنك استخدام أدوات Sentry في طلباتك للاستعلام عن القضايا والمشاريع وبيانات الأخطاء.

Show me the latest unresolved issues in my project. use sentry

Context7

أضف خادم MCP الخاص بـ Context7 للبحث في المستندات.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}

إذا كنت قد سجلت للحصول على حساب مجاني، يمكنك استخدام مفتاح API للحصول على حدود أعلى لمعدل الطلبات.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
}
}
}
}

هنا نفترض أنك عيّنت متغير البيئة CONTEXT7_API_KEY.

أضف use context7 إلى طلباتك لاستخدام خادم MCP الخاص بـ Context7.

Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7

بدلا من ذلك، يمكنك إضافة شيء مثل هذا إلى AGENTS.md.

AGENTS.md
When you need to search docs, use `context7` tools.

Grep by Vercel

أضف خادم MCP الخاص بـ Grep by Vercel للبحث في مقتطفات الشيفرة على GitHub.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gh_grep": {
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}

وبما أننا سمّينا خادم MCP الخاص بنا gh_grep، يمكنك إضافة use the gh_grep tool إلى طلباتك لجعل الوكيل يستخدمه.

What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool

بدلا من ذلك، يمكنك إضافة شيء مثل هذا إلى AGENTS.md.

AGENTS.md
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.