الانتقال إلى المحتوى الرئيسي
يتيح Model Context Protocol (MCP) للوكلاء استدعاء أدوات تستضيفها خوادم خارجية. هذا قوي وخطير بالقدر نفسه: كل خادم MCP يتصل به وكيل هو مجموعة جديدة من الأدوات والاعتمادات والوصول الشبكي لم يراجعها أحد. تضع بوابة MCP في جدار الحماية نقطة اختناق واحدة مدقَّقة أمامها جميعاً. تسجّل كل خادم MCP مرة واحدة؛ تكشف البوابة أدواته لوكلائك تحت اتصال واحد وتمرّر كل tools/call عبر محرك جدار الحماية قبل أن يصل إلى الخادم الحقيقي.

1. ماذا تمنحك حوكمة MCP

  • بوابة واحدة، كل خادم. يتصل وكيلك بنقطة نهاية واحدة. تجمّع البوابة أدوات كل خادم مسجّل قابل للوصول، بمساحة أسماء <server>.<tool>، بحيث يظهر github.create_issue وshell.exec جنباً إلى جنب تحت اتصال MCP واحد.
  • سياسة على كل استدعاء. يُقيَّم كل tools/call بواسطة سياستك أولاً. الاستدعاء المحجوب يعود إلى النموذج كـخطأ أداة (firewall deny: …)، وليس فشل نقل، فيستطيع الوكيل التفاعل بدلاً من الانهيار. يعيد sanitize كتابة الوسائط قبل التوجيه؛ و pending_approval يعلّق الاستدعاء.
  • محميّة من SSRF. تُتحقَّق نقاط النهاية البعيدة مقابل سياسة SSRF للبوابة — نطاقات الإنترانت وعناوين بيانات وصف السحابة محجوبة، ويُعاد فحص IP الاتصال المحلول لهزيمة إعادة ربط DNS، على كل قفزة بما في ذلك عمليات إعادة التوجيه.
  • اعتمادات مشفّرة. أسرار مصادقة الخادم مشفّرة في حالة السكون ومقنّعة عند القراءة. تحقنها البوابة وقت الإرسال؛ ولا تصل أبداً إلى النموذج أو العميل.

2. نوعان من الخوادم

النوعendpointالسلوك
BYO (أحضِر خادمك)URL بصيغة streamable-HTTPتمرّر البوابة tools/call إلى خادم MCP البعيد الخاص بك.
مُرفَقفارغخادم MCP داخل عملية OrcaRouter. مسجّل ليكون مرئياً وقابلاً للحوكمة؛ غير قابل للفحص بشكل منفصل.

3. تسجيل خادم

سجل الخادم يحمل:
الحقلملاحظات
nameمفتاح أعمال، فريد لكل مساحة عمل، ≤ 128 حرفاً. بلا . — فهو فاصل مساحة الأسماء <server>.<tool>.
endpointURL خادم MCP (≤ 512 حرفاً). فارغ للخادم المُرفَق.
auth_modenone (الافتراضي)، أو bearer، أو oauth، أو basic.
auth_jsonاعتمادات خاصة بالوضع (انظر أدناه). مطلوبة كلما لم يكن auth_mode يساوي none.
enabledالافتراضي true. الخادم المعطّل يُحذَف من البوابة بالكامل.
statusقابلية الوصول — ok (الافتراضي)، أو degraded، أو down. تُضبَط بـالفحص.
أشكال الاعتمادات حسب الوضع:
// bearer
{ "token": "ghp_…" }
// oauth
{ "client_id": "…", "client_secret": "…", "token_url": "…" }
// basic
{ "username": "…", "password": "…" }
// none
""
طلب التسجيل يبدو هكذا:
curl https://api.orcarouter.ai/api/workspace/firewall/mcp_servers \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "github",
    "endpoint": "https://api.githubcopilot.com/mcp",
    "auth_mode": "bearer",
    "auth_json": "{\"token\":\"ghp_x\"}",
    "enabled": true
  }'
الاسم المكرّر في نفس مساحة العمل يعيد HTTP 409 (نفس الاسم في مساحة عمل مختلفة لا بأس به).
الأسرار لا تُخزَّن أبداً بنص صريح. auth_json مشفّر في حالة السكون بمفتاح أسرار مساحة العمل. إذا لم يكن ذلك المفتاح مكوَّناً، تُرفض الكتابة بدلاً من حفظ اعتماد غير مشفّر. عند القراءة، تُقنَّع الأسرار ونقطة النهاية؛ أعِد القناع كما هو عند التحديث للإبقاء على القيمة المخزّنة. التبديل بين وضعَي مصادقة باعتمادات يتطلب auth_json جديداً (النص المشفّر مرتبط الشكل بوضعه).

4. الفحص — اكتشف أدواته

قبل أن تتمكن من كتابة قواعد مقابل أدوات خادم، تحتاج إلى معرفة أسمائها. افحص الخادم:
curl -X POST \
  https://api.orcarouter.ai/api/workspace/firewall/mcp_servers/42/probe \
  -H "Authorization: Bearer sk-orca-..."
تشغّل البوابة initialize + tools/list بـ MCP مقابل نقطة النهاية (باستخدام الاعتمادات المفكوكة، محدوداً بـ 10 ثوانٍ)، تسجّل status قابلية الوصول وطابعاً زمنياً، وتعيد الأدوات المُعلَنة مع مخططات إدخالها:
{
  "status": "ok",
  "last_checked_at": 1700000000,
  "tools": [
    { "name": "create_issue", "description": "…", "input_schema": { } }
  ]
}
الآن يمكنك تأليف قواعد مثل tool_name_glob: github.* وأنت تعرف تماماً ما يقبله github.create_issue. الخادم المُرفَق (فارغ نقطة النهاية) غير قابل للفحص ويعيد 400.

5. دورة الحياة والفرض

  • مفعّل مقابل معطّل. الخادم المعطّل يُسقَط من سجل التشغيل — تختفي أدواته من البوابة ولا تُفكّ اعتماداته أبداً. ذلك هو مفتاح الإيقاف.
  • قابلية الوصول. status (ok / degraded / down) يعكس آخر فحص؛ الخادم غير القابل للوصول يُتخطّى عندما تبني البوابة مجموعة أدواتها.
  • حكم لكل استدعاء. عند الإرسال يعيد المحرك حكماً لاستدعاء <server>.<tool> المحدد بوسائطه:
    • allow / audit ← مُمرَّر (يدقّق السجلات، ولا يزال يسمح).
    • sanitize ← مُمرَّر بوسائط مُعاد كتابتها.
    • deny / pending_approval / أي شيء مجهول ← محجوب كخطأ أداة. (عبر البوابة الموحَّدة، الاستدعاء المُعلَّق يظهر كخطأ دائم بدلاً من تمرير معرّف الموافقة — استخدم خطّاف evaluate عندما تحتاج مصافحة الموافقة.)
  • الحذف حذف ناعم؛ تُحرَّر خانة الاسم فوراً بحيث يمكنك إعادة التسجيل تحت نفس الاسم.
كل تغيير يُبطل ذاكرة أدوات البوابة المؤقتة لكل مساحة عمل فوراً، بحيث يحدث أثر خادم مسجّل حديثاً، أو معطّل، أو مُعاد فحصه على الاتصال التالي بدلاً من بعد TTL الذاكرة المؤقتة.

6. توصيل عميل

وجّه أي عميل MCP إلى نقطة نهاية البوابة بـرمز ضمن نطاق بوابة جدار الحماية:
https://api.orcarouter.ai/api/v1/firewall/mcp
تتحدث البوابة بـ streamable HTTP (رسائل POST، وGET لتدفق SSE، وDELETE لإنهاء جلسة) وتعرّف نفسها كـ orcarouter-firewall-gateway. تعلن عن أدوات كل خادم مفعّل قابل للوصول تحت مساحة الأسماء <server>.<tool>، معيدةً كشف مخطط إدخال كل أداة حرفياً. الرمز بلا نطاق بوابة جدار الحماية يحصل على 403 — اسكُك رمز بوابة مخصّصاً لهذا.

مرجع API

وحدة التحكم (ضمن نطاق مساحة العمل، RBAC)

الطريقة والمسارالدورالغرض
GET /api/workspace/firewall/mcp_serversMemberقائمة الخوادم (الأسرار مقنّعة، نقطة النهاية منقّحة).
GET /api/workspace/firewall/mcp_servers/:idMemberخادم واحد، مقنّع.
POST /api/workspace/firewall/mcp_serversDeveloper+تسجيل خادم (409 على الاسم المكرّر).
PUT /api/workspace/firewall/mcp_serversDeveloper+تحديث خادم (المعرّف في الجسم).
DELETE /api/workspace/firewall/mcp_servers/:idDeveloper+حذف ناعم؛ يحرّر الاسم.
POST /api/workspace/firewall/mcp_servers/:id/probeDeveloper+فحص قابلية الوصول + اكتشاف الأدوات.

البوابة (رمز ضمن نطاق بوابة جدار الحماية)

الطريقة والمسارالغرض
ANY /api/v1/firewall/mcpنقطة نهاية إرسال بوابة MCP الموحَّدة.
GET /api/v1/firewall/mcp_serversسجل التشغيل (مصادقة مفكوكة، الخوادم المفعّلة فقط) لوكيل SDK.
POST /api/v1/firewall/evaluateتقييم tools/call واحد قبل إرساله بنفسك.

الأسئلة الشائعة

حتى يكون هناك مكان واحد يرى كل استدعاء أداة. بدون بوابة، يتصل كل وكيل بكل خادم MCP مباشرةً — لا سياسة مشتركة، لا أثر تدقيق، لا حماية SSRF، والاعتمادات مبعثرة عبر تكوينات الوكلاء. تركّز البوابة كل ذلك: اتصال واحد، سياسة واحدة، سجل مدقَّق واحد، أسرار مشفّرة محقونة عند الإرسال.
يستقبله النموذج كخطأ أداة (firewall deny: <reason>)، نفس الشكل الذي سيحصل عليه من أي أداة فاشلة. يتيح ذلك للوكيل التكيّف — تجربة نهج مختلف، أو سؤال المستخدم، أو التوقف — بدلاً من معاملته كانهيار نقل.
نعم — لذلك توجد مساحة الأسماء <server>.<tool>. قاعدة بـ tool_name_glob: trusted.* يمكنها allow بينما community.* تُدقَّق أو تكون pending_approval. اجمعها مع glob لاسم المهارة لنطاق أدقّ.
نعم. تُتحقَّق عناوين URL لنقاط النهاية وعناوين IP الاتصال المحلولة لها مقابل سياسة SSRF عند التسجيل وعلى كل قفزة إرسال — نطاقات الإنترانت وعنوان بيانات وصف السحابة مرفوضة، ويُعاد فحص IP المحلول لهزيمة إعادة ربط DNS. أقرنها بـ قاعدة egress لحوكمة أين يجوز للأدوات الوصول.

انظر أيضاً

تتعمّق أكثر في أمان الوكلاء؟ تضع أدلة أمّن وكلاءك - الثقة الصفرية هذه الميزة ضمن سير عمل قائم على الثقة الصفرية.

أمّن خوادم MCP (الثقة الصفرية)

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

قائمة تحقق ثقة MCP

ما الذي ينبغي التحقق منه قبل أن تثق بخادم MCP تابع لطرف ثالث.