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>. |
endpoint | URL خادم MCP (≤ 512 حرفاً). فارغ للخادم المُرفَق. |
auth_mode | none (الافتراضي)، أو bearer، أو oauth، أو basic. |
auth_json | اعتمادات خاصة بالوضع (انظر أدناه). مطلوبة كلما لم يكن auth_mode يساوي none. |
enabled | الافتراضي true. الخادم المعطّل يُحذَف من البوابة بالكامل. |
status | قابلية الوصول — ok (الافتراضي)، أو degraded، أو down. تُضبَط بـالفحص. |
الأسرار لا تُخزَّن أبداً بنص صريح.
auth_json مشفّر في حالة السكون
بمفتاح أسرار مساحة العمل. إذا لم يكن ذلك المفتاح مكوَّناً، تُرفض الكتابة
بدلاً من حفظ اعتماد غير مشفّر. عند القراءة، تُقنَّع الأسرار ونقطة النهاية؛
أعِد القناع كما هو عند التحديث للإبقاء على القيمة المخزّنة. التبديل بين
وضعَي مصادقة باعتمادات يتطلب auth_json جديداً (النص المشفّر مرتبط الشكل
بوضعه).4. الفحص — اكتشف أدواته
قبل أن تتمكن من كتابة قواعد مقابل أدوات خادم، تحتاج إلى معرفة أسمائها. افحص الخادم:initialize + tools/list بـ MCP مقابل نقطة النهاية
(باستخدام الاعتمادات المفكوكة، محدوداً بـ 10 ثوانٍ)، تسجّل status قابلية
الوصول وطابعاً زمنياً، وتعيد الأدوات المُعلَنة مع مخططات إدخالها:
tool_name_glob: github.* وأنت تعرف تماماً ما
يقبله github.create_issue. الخادم المُرفَق (فارغ نقطة النهاية) غير قابل
للفحص ويعيد 400.
5. دورة الحياة والفرض
- مفعّل مقابل معطّل. الخادم المعطّل يُسقَط من سجل التشغيل — تختفي أدواته من البوابة ولا تُفكّ اعتماداته أبداً. ذلك هو مفتاح الإيقاف.
- قابلية الوصول.
status(ok/degraded/down) يعكس آخر فحص؛ الخادم غير القابل للوصول يُتخطّى عندما تبني البوابة مجموعة أدواتها. - حكم لكل استدعاء. عند الإرسال يعيد المحرك حكماً لاستدعاء
<server>.<tool>المحدد بوسائطه:allow/audit← مُمرَّر (يدقّق السجلات، ولا يزال يسمح).sanitize← مُمرَّر بوسائط مُعاد كتابتها.deny/pending_approval/ أي شيء مجهول ← محجوب كخطأ أداة. (عبر البوابة الموحَّدة، الاستدعاء المُعلَّق يظهر كخطأ دائم بدلاً من تمرير معرّف الموافقة — استخدم خطّاف evaluate عندما تحتاج مصافحة الموافقة.)
- الحذف حذف ناعم؛ تُحرَّر خانة الاسم فوراً بحيث يمكنك إعادة التسجيل تحت نفس الاسم.
6. توصيل عميل
وجّه أي عميل MCP إلى نقطة نهاية البوابة بـرمز ضمن نطاق بوابة جدار الحماية:orcarouter-firewall-gateway. تعلن عن أدوات
كل خادم مفعّل قابل للوصول تحت مساحة الأسماء <server>.<tool>، معيدةً كشف
مخطط إدخال كل أداة حرفياً. الرمز بلا نطاق بوابة جدار الحماية يحصل على
403 — اسكُك رمز بوابة مخصّصاً لهذا.
مرجع API
وحدة التحكم (ضمن نطاق مساحة العمل، RBAC)
| الطريقة والمسار | الدور | الغرض |
|---|---|---|
GET /api/workspace/firewall/mcp_servers | Member | قائمة الخوادم (الأسرار مقنّعة، نقطة النهاية منقّحة). |
GET /api/workspace/firewall/mcp_servers/:id | Member | خادم واحد، مقنّع. |
POST /api/workspace/firewall/mcp_servers | Developer+ | تسجيل خادم (409 على الاسم المكرّر). |
PUT /api/workspace/firewall/mcp_servers | Developer+ | تحديث خادم (المعرّف في الجسم). |
DELETE /api/workspace/firewall/mcp_servers/:id | Developer+ | حذف ناعم؛ يحرّر الاسم. |
POST /api/workspace/firewall/mcp_servers/:id/probe | Developer+ | فحص قابلية الوصول + اكتشاف الأدوات. |
البوابة (رمز ضمن نطاق بوابة جدار الحماية)
| الطريقة والمسار | الغرض |
|---|---|
ANY /api/v1/firewall/mcp | نقطة نهاية إرسال بوابة MCP الموحَّدة. |
GET /api/v1/firewall/mcp_servers | سجل التشغيل (مصادقة مفكوكة، الخوادم المفعّلة فقط) لوكيل SDK. |
POST /api/v1/firewall/evaluate | تقييم tools/call واحد قبل إرساله بنفسك. |
الأسئلة الشائعة
لماذا توجيه MCP عبر OrcaRouter أصلاً؟
لماذا توجيه MCP عبر OrcaRouter أصلاً؟
حتى يكون هناك مكان واحد يرى كل استدعاء أداة. بدون بوابة، يتصل كل وكيل
بكل خادم MCP مباشرةً — لا سياسة مشتركة، لا أثر تدقيق، لا حماية SSRF،
والاعتمادات مبعثرة عبر تكوينات الوكلاء. تركّز البوابة كل ذلك: اتصال
واحد، سياسة واحدة، سجل مدقَّق واحد، أسرار مشفّرة محقونة عند الإرسال.
ماذا يحدث عندما يعود استدعاء MCP محجوب؟
ماذا يحدث عندما يعود استدعاء MCP محجوب؟
يستقبله النموذج كخطأ أداة (
firewall deny: <reason>)، نفس الشكل الذي
سيحصل عليه من أي أداة فاشلة. يتيح ذلك للوكيل التكيّف — تجربة نهج مختلف،
أو سؤال المستخدم، أو التوقف — بدلاً من معاملته كانهيار نقل.هل يمكنني حوكمة نفس الأداة بشكل مختلف لكل خادم؟
هل يمكنني حوكمة نفس الأداة بشكل مختلف لكل خادم؟
نعم — لذلك توجد مساحة الأسماء
<server>.<tool>. قاعدة بـ
tool_name_glob: trusted.* يمكنها allow بينما community.* تُدقَّق
أو تكون pending_approval. اجمعها مع
glob لاسم المهارة
لنطاق أدقّ.هل تحمي البوابة من SSRF؟
هل تحمي البوابة من SSRF؟
نعم. تُتحقَّق عناوين URL لنقاط النهاية وعناوين IP الاتصال المحلولة لها
مقابل سياسة SSRF عند التسجيل وعلى كل قفزة إرسال — نطاقات الإنترانت
وعنوان بيانات وصف السحابة مرفوضة، ويُعاد فحص IP المحلول لهزيمة إعادة
ربط DNS. أقرنها بـ
قاعدة egress
لحوكمة أين يجوز للأدوات الوصول.
انظر أيضاً
تتعمّق أكثر في أمان الوكلاء؟ تضع أدلة أمّن وكلاءك - الثقة الصفرية هذه الميزة ضمن سير عمل قائم على الثقة الصفرية.أمّن خوادم MCP (الثقة الصفرية)
اتصل بخوادم MCP وصادق عليها واحكمها ضمن موقف قائم على الثقة الصفرية.
قائمة تحقق ثقة MCP
ما الذي ينبغي التحقق منه قبل أن تثق بخادم MCP تابع لطرف ثالث.
