
cmcp v0.4.0
cMCP: بوابة MCP السرية. فرض سياسات معتمدة على العتاد لاستدعاءات أدوات MCP.
cMCP: بيئة تشغيل MCP السرية
فرض سياسة أدوات MCP داخل بيئة تنفيذ موثوقة (TEE)، حيث لا يستطيع الوكيل الذي تحكمه الوصول إليها
بدء سريع · البنية · الإعداد · واجهة الأوامر · سجل التغييرات
معاينة للمطورين - أُطلق في قمة الحوسبة السرية، 23 يونيو 2026. قد تتضمن تغييرات جذرية قبل الإصدار v1.0. راجع STATUS.md لمعرفة ما هو متاح اليوم بالضبط مقابل ما هو على خارطة الطريق.
cMCP (بيئة تشغيل MCP السرية) هي الطريقة الآمنة والسرية لتشغيل MCP: بوابة مفتوحة المصدر تفرض سياسة استدعاء أدوات MCP داخل بيئة تنفيذ موثوقة (TEE) قائمة على العتاد. يتم اعتراض كل استدعاء أداة، وتقييمه مقابل حزمة سياسات Cedar، وفرضه في مكان لا يمكن للعملية التي يحكمها الوصول إليه. تنتج كل جلسة مطالبة TRACE موقعة يتحقق منها مُدقِّق دون الوثوق بالمشغِّل، مع مصادقة عتادية عندما تعمل البوابة داخل TEE وتوقيع فقط في وضع البرمجيات. إذا كنت تبحث عن نسخة آمنة من MCP، فهذه هي بيئة تشغيل AgenTrust المناسبة لها.
الخلاصة - وجّه وكيلك إلى بوابة cMCP. إنها تقيّم كل استدعاء أداة مقابل سياسة Cedar داخل TEE، وتحظر أو تحجب ما ترفضه السياسة، وتصدر مطالبة TRACE مقاومة للعبث كدليل. شغّل
pip install cmcp-runtimeوابدأ في وضع البرمجيات دون الحاجة إلى أي عتاد.
وكيلك يستدعي Snowflake وSalesforce وعشرات واجهات برمجة التطبيقات. ما الذي يمنعه من تسريب بيانات عميل في أحد هذه الاستدعاءات؟ إذا طلب جهة تنظيمية إثباتًا، هل يمكنك إثبات أنه لم يحدث؟
المشكلة
وكيل يستدعي أداة. محرك السياسات يقول اسمح. الاستدعاء يمر.
لا شيء من ذلك يثبت أن محرك السياسات نفسه لم يتم اختراقه. حوكمة MCP القائمة على البرمجيات فقط لا يمكنها ضمان:
- أن سياسة Cedar الموجودة على القرص هي التي نُفِّذت. يمكن لمسؤول مارق تبديل الحزمة بعد الموافقة؛ فحص التجزئة يعمل داخل نفس نظام التشغيل الذي يتحكم فيه المسؤول.
- أن قرار السماح/الرفض لم يتم قلبه في الذاكرة. ثغرة في سلسلة التوريد في المُقيِّم تعمل في نفس مساحة العنوان التي يعمل فيها المهاجم.
- أن سجل التدقيق يعكس ما حدث فعليًا. أي طرف يملك مفتاح توقيع البرمجيات يمكنه إعادة بناء سلسلة تدقيق صالحة بعد وقوع الحدث.
يجب أن تعمل طبقة التحكم التي تحكم استدعاءات الأدوات في مكان لا يمكن للعملية التي تحكمها الوصول إليه.
فرض سياسات بمصادقة عتادية لاستدعاءات أدوات MCP. يتم اعتراض كل استدعاء أداة، وتقييمه مقابل حزمة سياسات Cedar، وفرضه بواسطة محرك سياسات يعمل داخل بيئة تنفيذ موثوقة (TEE). يتم قياس تجزئة حزمة السياسات في تقرير مصادقة العتاد قبل تشغيل أي كود.
على عكس حلول الاتصال القائمة على الأنفاق، تعالج بيئة تشغيل cMCP حمولات استدعاء الأدوات داخل TEE. مزوّد الاتصال يرى نصًا مشفرًا، وليس نصًا عاديًا. الشيء الوحيد الذي يغادر المنطقة الآمنة هو مطالبة TRACE الموقعة.
بدء سريع
pip install cmcp-runtime
أنشئ cmcp-config.yaml:
attestation:
provider: auto
enforcement_mode: advisory # advisory يسهّل الضبط الأول؛ الافتراضي هو `enforcing`
listen_addr: "127.0.0.1:8443" # ثبّت الحلقة المحلية: وضع التطوير يعمل دون رمز حامل
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 يُرفض ذلك: وضع التطوير بدون رمز قد يربط عنوان حلقة محلية فقط، والربط غير المحلي يتطلب 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، والتحقق (لا يتطلب TEE عتاديًا).
كيف يعمل
- يرسل الوكيل كل استدعاء أداة إلى بوابة cMCP بدلاً من إرساله مباشرة إلى خوادم MCP.
- عند بدء التشغيل، تقيس البوابة تجزئة حزمة سياسات Cedar في تقرير مصادقة العتاد. لا يعمل أي كود قبل هذا القياس.
- يتم تقييم كل استدعاء أداة وارد بواسطة محرك سياسات Cedar الذي يعمل داخل TEE. النتيجة هي: اسمح، ارفض، أو احجب. يُلحق الاستدعاء وقراره بسلسلة التدقيق المختومة بالعتاد.
- في نهاية الجلسة، تنتج البوابة مطالبة TRACE: أثر موقّع ومصادق عليه بالعتاد يسجّل الأدوات التي عملت، والسياسة التي قررت كل استدعاء، وسلسلة التدقيق الكاملة. يتحقق المُدقِّق من ذلك دون الوثوق بالمشغِّل.
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 | غير متاح (لم يُنفَّذ بعد) | عنصر نائب: مستبعد من الاكتشاف التلقائي؛ اختياره صراحةً يرفع خطأ غير منفَّذ |
ترتيب فحص الاكتشاف التلقائي للمزوّد: azure-cvm -> tpm -> sev-snp -> tdx. يتم اختيار أول مزوّد تنجح دالة detect() الخاصة به. opaque عنصر نائب لم يُنفَّذ بعد: مستبعد من الاكتشاف التلقائي، واختياره صراحةً يرفع ATTESTATION_PROVIDER_NOT_IMPLEMENTED بدلاً من المرور بصمت. إذا لم يتم اكتشاف أي مزوّد عتادي، تبدأ البوابة فقط تحت CMCP_DEV_MODE=1 (بديل برمجي فقط غير مصادق عليه) وإلا ترفض البدء.
from cmcp_runtime.config import TEEProvider
# الاكتشاف التلقائي (الافتراضي)
# attestation.provider: auto -> azure-cvm -> tpm -> sev-snp -> tdx
# (الوضع البرمجي فقط يُستخدم فقط تحت CMCP_DEV_MODE=1)
# اختيار عتادي صريح
# attestation.provider: sev-snp
# OPAQUE Managed Runtime (اشتراك اختياري فقط؛ لم يُنفَّذ بعد)
# OPAQUE_ATTESTATION_URL=https://... cmcp start --config cmcp-config.yaml
أوضاع الفرض
| الوضع | السلوك | حالة الاستخدام |
|---|---|---|
enforcing | رفض السياسة يعيد HTTP 403؛ لا يتم إعادة توجيه الاستدعاء | الإنتاج |
advisory | رفض السياسة يُسجَّل؛ الاستدعاء يستمر | أول نشر، ضبط السياسات |
silent | يتم تقييم السياسة دون تسجيل أو حظر أي شيء | قياس خط الأساس |
الافتراضي هو enforcing. عيّن enforcement_mode: advisory في cmcp-config.yaml لاستخدام وضع الاستشارة.
الإعداد
مرجع cmcp-config.yaml الكامل:
attestation:
provider: auto # auto | tpm | sev-snp | tdx | opaque | software-only
enforcement_mode: enforcing # enforcing | advisory | silent
validity_seconds: 86400 # نافذة حداثة المصادقة (الافتراضي: 24 ساعة)
staleness_policy: fail_closed # fail_closed | warn_only
expected_measurement: ~ # تثبيت PCR/قياس محدد (اختياري)
policy_bundle_path: policies/ # دليل يحتوي على ملفات .cedar وmanifest.json
catalog_path: catalog.json # كتالوج الأدوات المعتمدة
listen_addr: "127.0.0.1:8443" # وضع التطوير بدون رمز يقتصر على الحلقة المحلية؛ عيّن CMCP_BEARER_TOKEN قبل الربط على نطاق أوسع
max_response_size_bytes: 2097152 # 2 ميجابايت افتراضيًا
policy_reload_interval_seconds: 0 # >0 مع CMCP_POLICY_HASH مثبّت يرفض البدء، راجع docs/spec/policy-hot-reload.md
متغيرات البيئة:
| المتغير | التأثير |
|---|---|
CMCP_DEV_MODE=1 | استخدام مزوّد TEE برمجي فقط؛ لا يتطلب عتادًا |
CMCP_BEARER_TOKEN | طلب رمز الحامل هذا على جميع الطلبات الواردة |
OPAQUE_ATTESTATION_URL | تفعيل مصادقة OPAQUE Managed Runtime (اشتراك اختياري صريح) |
مرجع واجهة الأوامر
| الأمر | العلامات | الوصف |
|---|---|---|
cmcp start | --config PATH (مطلوب) | بدء البوابة |
cmcp validate-config | --config PATH (مطلوب) | التحقق من cmcp-config.yaml دون بدء |
cmcp validate-bundle | --bundle-path PATH (مطلوب)، --expected-hash sha256:<hex> (مطلوب) | التحقق من تجزئة حزمة Cedar قبل النشر |
cmcp verify | CLAIM_FILE (مطلوب)؛ --policy-hash، --catalog-hash، --max-age، --trusted-key، --trusted-tpm-ca، --audit-bundle، --agent-manifest، --agent-manifest-trust-anchor | التحقق من مطالبة TRACE موقعة (التوقيع، المخطط، الحداثة، سلسلة التدقيق، التجزئات المثبّتة، ومراسي الثقة) |
مطالبات TRACE
GatewayClaim هي وحدة الإثبات التي تُسلَّم إلى مدقّق حسابات أو جهة تنظيمية أو مُدقِّق نهائي. تُنتَج لكل جلسة (أو لكل استدعاء، قابل للتكوين) وتُوقَّع بمفتاح لا يغادر TEE أبدًا.
| الحقل | الوصف |
|---|---|
trace.eat_profile | URI ملف تعريف EAT: tag:agentrust-io.com,2026:trace-v0.2 |
trace.runtime | منصة TEE وقياس العتاد المسجَّل عند إقلاع المنطقة الآمنة |
trace.policy.bundle_hash | SHA-256 لحزمة Cedar المحمَّلة عند بدء التشغيل؛ تغيير أي ملف سياسة يغيّر هذه القيمة |
trace.cnf.jwk | المفتاح العام Ed25519 المرتبط بمفتاح توقيع TEE |
trace.tool_transcript | عرض لكل استدعاء مشتق من سلسلة التدقيق: hash (يرتبط بطرف سلسلة التدقيق)، call_count، وentries الحافظة للخصوصية (اسم الأداة، فئة البيانات، القرار) |
gateway.audit_chain | جذر وطرف سجل تدقيق متسلسل بالتجزئة؛ قابل للتحقق دون إعادة تشغيل الإدخالات الفردية |
signature | Ed25519 فوق JSON الأساسي لجسم المطالبة الكامل (RFC 8785) |
(هذا الجدول ملخص للحقول الأكثر استخدامًا.)
التحقق باستخدام مكتبة cmcp_verify لا يتطلب الوثوق بالمشغِّل. يتحقق المُدقِّق من التوقيع مقابل المفتاح المرتبط بـ TEE، وتجزئة حزمة السياسات مقابل القيمة المعتمدة، وسلسلة التدقيق للاتساق الداخلي.
المخطط المعياري هو schemas/trace-claim.schema.json، وdocs/quickstart.md يعرض مثالًا كاملًا. راجع docs/spec/verification-library.md ومواصفات TRACE لبروتوكول التحقق الكامل.
التوافق مع المعايير
| المعيار | التغطية |
|---|---|
| OWASP Agentic AI Top 10 | MCP10 (تسريب البيانات عبر استدعاءات الأدوات)، MCP02 (أدوات غير مصرح بها)، MCP08 (حوكمة قابلة للإثبات)، MCP04 (سلسلة التوريد) |
| NIST SP 800-207 | نقطة قرار السياسة داخل TEE؛ لا ثقة ضمنية في هوية عبء العمل |
| قانون الذكاء الاصطناعي الأوروبي، المواد 12 و15 | سجلات تدقيق لكل قرار (المادة 12)؛ ضوابط أمن سيبراني مدعومة بـ TEE (المادة 15) |
| DORA المادة 9 | سلسلة المصادقة؛ الاحتفاظ بسجل التدقيق عبر gateway.audit_chain |
| RATS/EAT RFC 9711 | GatewayClaim هو EAT؛ حقل eat_profile يحدد ملف تعريف TRACE |
الأمان
| الأداة | ما تفحصه |
|---|---|
| ruff | فحص النمط والاستيراد في كل طلب سحب |
| bandit | فحص أمان Python في كل طلب سحب |
| pip-audit | فحص ثغرات التبعيات في كل طلب سحب |
| mypy | فحص الأنواع الثابت في كل طلب سحب |
| CodeQL | SAST لـ Python، استعلامات أمان موسعة، أسبوعيًا |
| OpenSSF Scorecard | تقييم أسبوعي، رفع SARIF |
راجع SECURITY.md للإبلاغ عن الثغرات واتفاقيات مستوى الخدمة للاستجابة. راجع LIMITATIONS.md لحدود النطاق الصريحة، بما في ذلك المخاطر المتبقية لالتقاط حمولة APM، وحقن إعدادات وقت التشغيل، وثغرة سلسلة التوريد P4.1 (انتحال الأسماء) التي لا تغلقها المرحلة 1.
التوثيق
| الصفحة | الوصف |
|---|---|
| docs/quickstart.md | من الصفر إلى أول مطالبة TRACE في أقل من 30 دقيقة |
| docs/configuration.md | مرجع الإعداد الكامل بجميع الحقول والافتراضيات |
| docs/SPEC.md | مواصفات المنتج: تصنيف المشكلات، البنية، مصفوفة التغطية |
| docs/spec/threat-model.md | تحليل STRIDE، نموذج الخصم، المخاطر المتبقية |
| docs/spec/cedar-policy.md | مرجع لغة سياسات Cedar والمخطط |
| docs/testing/benchmarks.md | معايير زمن الاستجابة والإنتاجية لكل مزوّد TEE |
الأسئلة الشائعة
ما هو cMCP؟
cMCP (بيئة تشغيل MCP السرية) هي بوابة مفتوحة المصدر تفرض سياسة استدعاء أدوات MCP داخل بيئة تنفيذ موثوقة قائمة على العتاد. تعترض كل استدعاء أداة، وتقيّمه مقابل حزمة سياسات Cedar، وتفرض القرار (اسمح، ارفض، أو احجب)، وتسجّل الاستدعاء في سلسلة تدقيق مختومة بالعتاد.
كيف يختلف cMCP عن حوكمة MCP القائمة على البرمجيات فقط؟
الحوكمة القائمة على البرمجيات فقط تشغّل محرك السياسات في نفس نظام التشغيل الذي يمكن للمشغِّل أو ثغرة سلسلة التوريد الوصول إليه، لذا لا يمكنها إثبات أن السياسة التي نُفِّذت هي المعتمدة أو أن القرار لم يُقلب في الذاكرة. يشغّل cMCP محرك السياسات داخل TEE ويقيس تجزئة حزمة Cedar في تقرير مصادقة العتاد قبل تشغيل أي كود، بحيث لا يمكن للعملية التي يحكمها الوصول إلى طبقة التحكم.
هل أحتاج إلى عتاد خاص لتجربته؟
لا. عيّن CMCP_DEV_MODE=1 لاستخدام مزوّد TEE البرمجي فقط وتشغيل دليل البدء الكامل دون TEE عتادي. تُستخدم مزوّدات العتاد (TPM، AMD SEV-SNP، Intel TDX، OPAQUE) في الإنتاج.
ما هي مطالبة TRACE؟
مطالبة TRACE (وهي GatewayClaim) هي أثر موقّع ومصادق عليه بالعتاد يُنتَج لكل جلسة. تسجّل الأدوات التي عملت، والسياسة التي قررت كل استدعاء، وتجزئة حزمة Cedar، وسلسلة التدقيق، وتُوقَّع بمفتاح Ed25519 لا يغادر TEE أبدًا. يتحقق منها المُدقِّق باستخدام مكتبة cmcp_verify دون الوثوق بالمشغِّل.
ما هي مزوّدات TEE المدعومة؟
TPM 2.0 / vTPM، AMD SEV-SNP، وIntel TDX، مع حوسبة سرية لوحدات معالجة الرسوم NVIDIA NVIDIA المخطط لها في v0.2 وOPAQUE Confidential Runtime متاحة كاشتراك اختياري صريح. ترتيب الاكتشاف التلقائي هو Azure confidential VM، ثم TPM 2.0 / vTPM، ثم AMD SEV-SNP، ثم Intel TDX؛ يُستخدم المزوّد البرمجي فقط تحت CMCP_DEV_MODE=1.
ما هو ترخيص cMCP؟
MIT.
المساهمة
CONTRIBUTING.md · GOVERNANCE.md · المناقشات
انضم إلى المجتمع على Discord.
تستخدم cMCP في الإنتاج؟ أضف مؤسستك إلى ADOPTERS.md.
الترخيص
MIT - راجع LICENSE.