
بوابة أمنية لخوادم MCP مع تطبيق سياسة لكل أداة، وإيصالات تدقيق موقعة بـ Ed25519، وتسجيل وضع الظل. تدعم محركات السياسات الخارجية Cedar وOPA وCerbos للتحكم في وصول وكلاء الذكاء الاصطناعي.
⚠️ تم نقل هذا المستودع. يستمر التطوير النشط في ScopeBlind/scopeblind-gateway.
قد يكون هذا الشوكة الشخصية متأخرًا عن المستودع الأساسي. يُرجى استخدام مستودع المنظمة للمشكلات وطلبات السحب وأحدث الكود.
بوابة أمان لخوادم MCP. يسجل وضع الظل افتراضيًا، وسياسات لكل أداة، وإيصالات Ed25519 محلية اختيارية، ومخرجات تدقيق قابلة للتحقق.
مسار CLI الحالي: لف أي خادم MCP قياسي (stdio) كوكيل شفاف. في وضع الظل يسجل كل طلب tools/call ويسمح بكل شيء. أضف ملف سياسة لفرض قواعد لكل أداة. قم بتشغيل protect-mcp init لإنشاء مفاتيح توقيع محلية وتكوين حتى تتمكن البوابة من إصدار إيصالات موقعة أيضًا.
# لف تكوين OpenClaw / MCP موجود في حزمة قابلة للاستخدام
npx @scopeblind/passport wrap --runtime openclaw --config ./openclaw.json --policy email-safe
# وضع الظل — سجل كل استدعاء أداة، لا تُطبق شيئًا
npx protect-mcp -- node my-server.js
# إنشاء مفاتيح + قالب تكوين للتوقيع المحلي
npx protect-mcp init
# وضع الظل مع تمكين التوقيع المحلي
npx protect-mcp --policy protect-mcp.json -- node my-server.js
# وضع الإجبار
npx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js
# تصدير حزمة تدقيق قابلة للتحقق دون اتصال
npx protect-mcp bundle --output audit.json
يجلس protect-mcp بين عميل MCP والخادم كوكيل stdio:
عميل MCP ←stdin/stdout→ protect-mcp ←stdin/stdout→ خادم MCP الخاص بك
يعترض طلبات JSON-RPC من نوع tools/call ويقوم بما يلي:
block و rate_limit و min_tierجميع رسائل MCP الأخرى (initialize، tools/list، الإشعارات) تمر بشفافية.
stderr مع [PROTECT_MCP]signing.key_path، وتخزينها في .protect-mcp-receipts.jsonl، وعرضها على http://127.0.0.1:9876/receiptsnpx @veritasacta/verifyهذه مهمة قبل نشر هذا أو التحدث إلى المستخدمين:
npx protect-mcp -- ... العاري. هذا المسار يسجل القرارات في وضع الظل. للتوقيع المحلي، قم بتشغيل npx protect-mcp init ثم ابدأ البوابة بملف السياسة المُنشأ.unknown ما لم يستدعي تكامل المضيف واجهة برمجة القبول برمجيًا.{
"default_tier": "unknown",
"tools": {
"dangerous_tool": { "block": true },
"admin_tool": { "min_tier": "signed-known", "rate_limit": "5/hour" },
"read_tool": { "require": "any", "rate_limit": "100/hour" },
"*": { "rate_limit": "500/hour" }
},
"signing": {
"key_path": "./keys/gateway.json",
"issuer": "protect-mcp",
"enabled": true
},
"credentials": {
"internal_api": {
"inject": "env",
"name": "INTERNAL_API_KEY",
"value_env": "INTERNAL_API_KEY"
}
}
}
تطابق أسماء الأدوات تمامًا، مع "*" كبديل شامل.
أضف إلى claude_desktop_config.json:
{
"mcpServers": {
"my-protected-server": {
"command": "npx",
"args": [
"-y", "protect-mcp",
"--policy", "/path/to/protect-mcp.json",
"--enforce",
"--", "node", "my-server.js"
]
}
}
}
نفس النمط — استبدل أمر الخادم بـ protect-mcp يلفه.
protect-mcp [options] -- <command> [args...]
protect-mcp init
الأوامر:
init إنشاء زوج مفاتيح Ed25519 + قالب تكوين
status عرض إحصائيات القرار وهوية جواز السفر المحلي
digest إنشاء ملخص محلي قابل للقراءة البشرية
receipts عرض أحدث الإيصالات الموقعة المخزنة
bundle تصدير حزمة تدقيق قابلة للتحقق دون اتصال
الخيارات:
--policy <path> ملف JSON للسياسة/التكوين
--slug <slug> معرف الخدمة للسجلات/الإيصالات
--enforce تفعيل وضع الإجبار (الافتراضي: الظل)
--verbose تفعيل تسجيل التصحيح
--help عرض المساعدة
توفر المكتبة أيضًا البدائيات التي لم تُوصل بعد إلى مسار CLI الافتراضي:
import {
ProtectGateway,
loadPolicy,
evaluateTier,
meetsMinTier,
resolveCredential,
initSigning,
signDecision,
queryExternalPDP,
buildDecisionContext,
createAuditBundle,
} from 'protect-mcp';
استخدمها إذا كنت تريد إضافة:
كل استدعاء أداة يصدر JSON منظم إلى stderr:
[PROTECT_MCP] {"v":2,"tool":"read_file","decision":"allow","reason_code":"observe_mode","policy_digest":"none","mode":"shadow","timestamp":1710000000}
عند تكوين التوقيع، يتبعه إيصال موقع:
[PROTECT_MCP_RECEIPT] {"v":2,"type":"decision_receipt","algorithm":"ed25519","kid":"...","issuer":"protect-mcp","issued_at":"2026-03-22T00:00:00Z","payload":{"tool":"read_file","decision":"allow","policy_digest":"...","mode":"shadow","request_id":"..."},"signature":"..."}
تحقق باستخدام CLI: npx @veritasacta/verify receipt.json
تحقق في المتصفح: scopeblind.com/verify
تصدر الحزمة أداة مساعدة لحزم التدقيق المستقلة:
{
"format": "scopeblind:audit-bundle",
"version": 1,
"tenant": "my-service",
"receipts": ["..."],
"verification": {
"algorithm": "ed25519",
"signing_keys": ["..."]
}
}
استخدم createAuditBundle() حول مجموعة الإيصالات الموقعة التي جمعتها.
يأتي مع protect-mcp — كل واحدة تمنع هجومًا حقيقيًا:
npx protect-mcp --policy node_modules/protect-mcp/policies/clinejection.json -- node server.js
التعيين الكامل لـ OWASP Agentic Top 10: scopeblind.com/docs/owasp
يدعم OPA و Cerbos و Cedar (AWS AgentCore) ونقاط نهاية HTTP عامة:
{
"policy_engine": "hybrid",
"external": {
"endpoint": "http://localhost:8181/v1/data/mcp/allow",
"format": "cedar",
"timeout_ms": 200,
"fallback": "deny"
}
}
npx @veritasacta/verify --self-testMIT — مجاني للاستخدام والتعديل والتوزيع والبناء عليه دون قيود.
scopeblind.com · npm · GitHub · مسودة IETF
| الحقل | القيم | الوصف |
|---|
block | true | احظر هذه الأداة صراحة |
require | "any", "none" | متطلب الوصول الأساسي |
min_tier | "unknown", "signed-known", "evidenced", "privileged" | الحد الأدنى للمستوى المطلوب إذا كان مضيفك يحدد حالة القبول |
rate_limit | "N/unit" | حد المعدل (مثل "5/hour"، "100/day") |
| السياسة | الحادث | فئات OWASP |
|---|
clinejection.json | CVE-2025-6514: اختطاف وكيل OAuth MCP (437K بيئة) | A01, A03 |
terraform-destroy.json | وكيل Terraform مستقل يدمر بيئة الإنتاج | A05, A06 |
github-mcp-hijack.json | حقن فوري عبر مشكلة GitHub مصممة | A01, A02, A03 |
data-exfiltration.json | سرقة بيانات الوكيل عبر إساءة استخدام أداة صادرة | A02, A04 |
financial-safe.json | معاملة مالية غير مصرح بها | A05, A06 |