
cmcp v0.4.0
cMCP: بوابة MCP السرية. فرض سياسات معتمدة على العتاد لاستدعاءات أدوات MCP.
cMCP: بيئة تشغيل MCP السرية
تحديثات المجتمع وأبرز المساهمين: AgenTrust على LinkedIn.
فرض سياسة أدوات MCP داخل TEE، حيث لا يستطيع الوكيل الذي تحكمه الوصول إليها
البدء السريع · البنية المعمارية · الإعدادات · واجهة سطر الأوامر · سجل التغييرات
إصدار تجريبي للمطورين - أُطلق في قمة الحوسبة السرية، 23 يونيو 2026. قد يتضمن تغييرات كاسرة قبل الإصدار v1.0. راجع STATUS.md لمعرفة ما هو متاح اليوم بالضبط مقابل ما هو مدرج في خارطة الطريق.
cMCP (بيئة تشغيل MCP السرية) هي بوابة مفتوحة المصدر تتحقق من كل استدعاء أداة يقوم به وكيل ذكاء اصطناعي مقابل قواعد تكتبها أنت، ويمكن تشغيلها على أجهزة معزولة لا يستطيع الوكيل العبث بها. تستخدم وكلاء الذكاء الاصطناعي الأدوات (قواعد البيانات، أنظمة إدارة علاقات العملاء، البريد الإلكتروني، واجهات API الداخلية) عبر إرسال طلبات تُسمى استدعاءات الأدوات، عادةً عبر MCP، بروتوكول سياق النموذج. تقع cMCP في مسار هذه الاستدعاءات، وتتحقق من كل واحد منها مقابل قواعدك (المكتوبة بلغة سياسات Cedar)، وتحجب تلك التي تحظرها القواعد. يمكن تشغيلها داخل TEE (بيئة تنفيذ موثوقة: عتاد يحافظ على ذاكرة البرنامج معزولة حتى عن مالك الجهاز)، حيث لا يستطيع الوكيل الذي تحكمه الوصول إليها. تنتهي كل جلسة بإيصال موقّع، وهو TRACE Claim، يمكن لأي شخص التحقق منه دون الوثوق بمن شغّل البوابة. الإيصال مدعوم بتقرير عتاد عندما تعمل البوابة داخل TEE، ويكون موقّعاً فقط (بدون إثبات عتاد) في الوضع البرمجي. جديد على هذه المصطلحات؟ راجع المصطلحات، بلغة مبسطة.
باختصار: وجّه وكيلك إلى بوابة cMCP. تتحقق من كل استدعاء أداة مقابل قواعد Cedar الخاصة بك، وتحجب أو تحجب جزئياً (تفرّغ) ما ترفضه القواعد، وتمنحك إيصالاً موقّعاً يُظهر ما إذا كان أي شخص قد عدّله. شغّل
pip install cmcp-runtimeوابدأ في الوضع البرمجي على أي حاسوب؛ لا حاجة لعتاد خاص.
يتصل وكيلك بـ Snowflake وSalesforce وعشرات واجهات API. ما الذي يمنعه من تسريب بيانات عميل في أحد هذه الاستدعاءات؟ إذا سأل جهة تنظيمية، هل يمكنك إثبات أنه لم يفعل ذلك؟
المشكلة
يستدعي الوكيل أداة. يقول محرك السياسات: اسمح. يمر استدعاء الأداة.
لا شيء من ذلك يثبت أن محرك السياسات نفسه لم يتم اختراقه. لا يمكن لحوكمة MCP البرمجية فقط أن تضمن:
- أن سياسة Cedar على القرص هي التي نُفّذت. يمكن لمسؤول مارق استبدال الحزمة بعد الموافقة؛ إذ يجري فحص التجزئة داخل نفس نظام التشغيل الذي يتحكم به المسؤول.
- أن قرار السماح/الرفض لم يُقلب في الذاكرة. تعمل ثغرة CVE في سلسلة التوريد داخل المُقيّم في نفس مساحة العنوان التي يعمل فيها المهاجم.
- أن سجل التدقيق يعكس ما حدث فعلاً. يمكن لأي طرف يحمل مفتاح التوقيع البرمجي إعادة بناء سلسلة تدقيق صالحة بعد وقوع الحدث.
يجب أن تعمل لوحة التحكم التي تحكم استدعاءات الأدوات حيث لا يمكن الوصول إليها من العملية التي تحكمها.
فرض سياسات موثّق بالعتاد لاستدعاءات أدوات MCP. يتم اعتراض كل استدعاء أداة، وتقييمه مقابل حزمة سياسات Cedar، وفرضه بواسطة محرك سياسات يعمل داخل بيئة تنفيذ موثوقة (TEE). قبل أن تخدم استدعاء أداة واحداً، تقيس البوابة الكود المثبّت وحزمة السياسات والإعدادات في تقرير إثبات العتاد، وتعيد الإثبات كلما أُعيد تحميل الحزمة.
في نشر عتادي، تعالج بيئة تشغيل cMCP حمولات استدعاءات الأدوات داخل TEE. وما يمكن للمضيف ومزود الاتصال قراءته يعتمد أيضاً على سياسة الخروج، وخادم الأدوات الأعلى هو مكوّن منفصل خارج TEE. لا يوفر الوضع البرمجي (CMCP_DEV_MODE) أي عزل عتادي. يسرد LIMITATIONS.md ما لا يمنعه cMCP.
البدء السريع
pip install cmcp-runtime
أنشئ cmcp-config.yaml:
attestation:
provider: auto
enforcement_mode: advisory # advisory eases first-run tuning; the default is `enforcing`
listen_addr: "127.0.0.1:8443" # pin loopback: dev mode runs without a bearer token
policy_bundle_path: ./policies/
catalog_path: ./catalog.json
listen_addr ليس اختيارياً هنا. يتخطى CMCP_DEV_MODE=1 عمداً متطلب رمز الحامل حتى تتمكن من تجربة الأشياء بسرعة، ولا يزال الربط الافتراضي 0.0.0.0:8443. في الإصدار 0.3.0، أنشأ هذا المزيج بوابة غير مصادَق عليها على كل واجهة في جهازك. ابتداءً من 0.4.0، يُرفض ذلك: لا يجوز لوضع التطوير بدون رمز أن يربط إلا عنوان loopback، ويتطلب الربط غير loopback وجود CMCP_BEARER_TOKEN. ثبّت listen_addr صراحةً ويكون الإعداد صحيحاً في كلتا الحالتين.
ابدأ البوابة:
CMCP_DEV_MODE=1 cmcp start --config cmcp-config.yaml
قم باستدعاء أداة:
curl -X POST http://localhost:8443/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"salesforce.contacts","arguments":{"query":"Acme Corp"},"_cmcp":{"session_id":"s1","workflow_id":"demo-agent"}}}'
تفضل نسخة موجّهة؟ agentrust-io.com/quickstart يسير على نفس المسار في حوالي عشر دقائق على حاسوب محمول، بدون عتاد وبدون تسجيل: ثبّت، اكتب قاعدة Cedar واحدة forbid، شاهد استدعاء أداة يعيد 403 POLICY_DENY قبل أن يصل إلى خدمة أعلى، ثم تحقق من الإيصال الموقّع.
راجع docs/quickstart.md للشرح الكامل: سياسة Cedar، كتالوج الأدوات، أول TRACE Claim، والتحقق (بدون حاجة إلى TEE عتادي).
كيف يعمل
- يرسل الوكيل كل استدعاء أداة إلى بوابة cMCP بدلاً من إرساله مباشرة إلى خوادم MCP.
- عند بدء التشغيل، وقبل أن يخدم أي حركة مرور، تقيس البوابة الكود المثبّت وحزمة سياسات Cedar والإعدادات. على SEV-SNP وTDX وAzure CVM يُربط الملخص في
report_data؛ وعلى طبقة TPM يُمدّد في فهرس NV معتمد. تؤدي إعادة تحميل السياسة إلى إثبات جديد. - يتم تقييم كل استدعاء أداة وارد بواسطة محرك سياسات Cedar الذي يعمل داخل TEE. النتيجة هي سماح أو رفض أو حجب جزئي. يُضاف الاستدعاء وقراره إلى سلسلة التدقيق المختومة بالعتاد.
- في نهاية الجلسة تنتج البوابة TRACE Claim: قطعة أثرية موقّعة وموثّقة بالعتاد تسجل الأدوات التي عملت، والسياسة التي قررت كل استدعاء، وسلسلة التدقيق الكاملة. يتحقق المدقق من ذلك دون الوثوق بالمشغّل.
Agent -> cMCP Runtime -> Cedar Policy Engine (TEE) -> Tool
|
GatewayClaim (TRACE Profile)
+-- trace.eat_profile
+-- trace.runtime.platform + measurement
+-- trace.policy.bundle_hash
+-- trace.cnf.jwk (Ed25519 confirmation key)
+-- gateway.audit_chain (root/tip/length)
+-- signature (Ed25519 over canonical JSON)
مزودو العتاد
| المزود | المنصة | الضمان | ملاحظات |
|---|---|---|---|
tpm | TPM 2.0 / vTPM (Azure, AWS, GCP Trusted Launch) | متوسط | اقتباس TPM محلي |
sev-snp | AMD SEV-SNP (Azure DCasv5, AWS C6a Nitro) | عالٍ | AMD KDS |
tdx | Intel TDX (Azure DCedsv5, GCP C3) | عالٍ | Intel PCS |
gpu-cc (v0.2) | NVIDIA H100/H200/Blackwell (وضع CC) | عالٍ | خدمة الإثبات عن بُعد من NVIDIA (NRAS) |
opaque (اختياري) | OPAQUE Confidential Runtime | غير متاح (لم يُنفّذ بعد) | عنصر نائب: مستبعد من الاكتشاف التلقائي؛ اختياره صراحةً يرفع خطأ عدم التنفيذ |