ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

cMCP

cMCP: Confidential MCP Runtime

在 TEE 内部强制执行 MCP 工具策略,受其治理的 agent 无法触及

Documentation

快速开始 · 架构 · 配置 · CLI · 更新日志

CI License: MIT PyPI OpenSSF Scorecard Discord

开发者预览版 - 于 2026 年 6 月 23 日在机密计算峰会上发布。在 v1.0 之前可能存在破坏性变更。请参阅 STATUS.md 了解当前发布的具体内容以及路线图上的规划。

cMCP(Confidential MCP Runtime)是运行 MCP 的安全、机密方式:一个开源网关,在硬件可信执行环境(TEE)内强制执行 MCP 工具调用策略。 每个工具调用都会被拦截,针对 Cedar 策略包进行评估,并在其管辖进程无法触及的地方强制执行。每个会话都会生成一个签名的 TRACE Claim,验证者可以在不信任操作者的情况下对其进行检查;当网关在 TEE 中运行时,该 Claim 经过硬件证明,在软件模式下则仅经过签名。如果您正在寻找 MCP 的安全版本,这就是它的 AgenTrust 运行时。

TL;DR - 将您的 agent 指向 cMCP Gateway。它在 TEE 内针对 Cedar 策略评估每个工具调用,阻止或脱敏策略拒绝的内容,并输出一个防篡改的 TRACE Claim 作为证明。运行 pip install cmcp-runtime 即可在无需硬件的情况下以软件模式启动。

您的 agent 调用 Snowflake、Salesforce 以及十几个 API。是什么阻止它在其中一次调用中泄露客户数据?如果监管机构询问,您能证明它没有泄露吗?


问题

代理调用一个工具。策略引擎返回允许。工具调用得以执行。

以上任何一点都无法证明策略引擎本身未被攻破。仅基于软件的 MCP 治理无法保证:

  • 磁盘上的 Cedar 策略与实际执行的策略一致。恶意管理员可在审批后替换策略包;哈希检查运行在管理员所控制的同一操作系统内。
  • 允许/拒绝决策未在内存中被篡改。评估器中的供应链 CVE 与攻击者运行在同一地址空间。
  • 审计日志反映了实际发生的情况。任何持有软件签名密钥的一方均可事后重建有效的审计链。

治理工具调用的控制平面必须运行在其所治理进程无法触及的位置。

针对 MCP 工具调用的硬件证明策略执行。每个工具调用均被拦截,对照 Cedar 策略包进行评估,并由运行在可信执行环境(TEE)内的策略引擎强制执行。策略包的哈希值在任何代码执行前即被测量并纳入硬件证明报告。

与基于隧道的连接解决方案不同,cMCP 运行时在 TEE 内部处理工具调用负载。连接提供方看到的是密文,而非明文。唯一离开隔离区的是签名的 TRACE 声明。


快速入门

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 故意跳过了 bearer token 要求,以便您可以快速尝试,并且在已发布的 0.3.0 版本中,默认绑定为 0.0.0.0:8443,因此省略它会在您机器上的所有接口上 启动一个未认证的网关。后续版本 默认绑定到回环地址,并且如果没有 CMCP_BEARER_TOKEN,则拒绝绑定非回环地址,但显式指定它,配置在两者中都是正确的。

启动网关:

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)。


工作原理

  1. 代理将每个工具调用发送至 cMCP Gateway,而非直接发送至 MCP 服务器。
  2. 启动时,网关将 Cedar 策略包哈希测量至硬件证明报告中。在此测量之前不运行任何代码。
  3. 每个传入的工具调用由运行在 TEE 内部的 Cedar 策略引擎进行评估。结果为允许、拒绝或脱敏。该调用及其决策被追加至硬件密封的审计链中。
  4. 会话结束时,网关生成 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)

硬件提供商

提供商平台保证级别备注
tpmTPM 2.0 / vTPM (Azure, AWS, GCP Trusted Launch)中等本地 TPM 引证
sev-snpAMD SEV-SNP (Azure DCasv5, AWS C6a Nitro)AMD KDS
tdxIntel TDX (Azure DCedsv5, GCP C3)Intel PCS
gpu-cc (v0.2)NVIDIA H100/H200/Blackwell (CC 模式)NVIDIA Remote Attestation Service (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

# Auto-detect (default)
# attestation.provider: auto  ->  azure-cvm -> tpm -> sev-snp -> tdx
# (software-only is used only under CMCP_DEV_MODE=1)

# Explicit hardware selection
# attestation.provider: sev-snp

# OPAQUE Managed Runtime (opt-in only; not yet implemented)
# OPAQUE_ATTESTATION_URL=https://... cmcp start --config cmcp-config.yaml

执行模式

模式行为使用场景
enforcing策略拒绝返回 HTTP 403;调用不会被转发生产环境
advisory策略拒绝会被记录日志;调用继续执行首次部署,策略调优
silent策略会被评估,但不会记录日志或阻止基线测试

默认值为 enforcing。在 cmcp-config.yaml 中设置 enforcement_mode: advisory 以使用建议模式。


配置

cmcp-config.yaml 完整参考:

attestation:
  provider: auto                    # auto | tpm | sev-snp | tdx | opaque | software-only
  enforcement_mode: enforcing       # enforcing | advisory | silent
  validity_seconds: 86400           # attestation freshness window (default: 24 hours)
  staleness_policy: fail_closed     # fail_closed | warn_only
  expected_measurement: ~           # pin a specific PCR/measurement (optional)

policy_bundle_path: policies/       # directory containing .cedar files and manifest.json
catalog_path: catalog.json          # approved tool catalog

listen_addr: "127.0.0.1:8443"     # tokenless dev mode is loopback-only; set CMCP_BEARER_TOKEN before binding wider
max_response_size_bytes: 2097152    # 2 MB default
policy_reload_interval_seconds: 0   # 0 = disabled; restart required to update policy

环境变量:

变量效果
CMCP_DEV_MODE=1使用纯软件 TEE 提供者;无需硬件
CMCP_BEARER_TOKEN要求所有入站请求携带此 bearer token
OPAQUE_ATTESTATION_URL启用 OPAQUE Managed Runtime 证明(显式选择加入)

CLI 参考

命令标志描述
cmcp start--config PATH (required)启动网关
cmcp validate-config--config PATH (required)验证 cmcp-config.yaml 而不启动
cmcp validate-bundle--bundle-path PATH (required), --expected-hash sha256:<hex> (required)在部署前验证 Cedar bundle 哈希
cmcp verifyCLAIM_FILE (required); --policy-hash, --catalog-hash, --max-age, --trusted-key, --audit-bundle, --agent-manifest, --agent-manifest-trust-anchor验证已签名的 TRACE Claim(签名、模式、新鲜度、审计链和固定哈希)

TRACE 声明

GatewayClaim 是交付给审计员、监管机构或下游验证者的证明单元。它按会话(或按调用,可配置)生成,并使用一个永不离开 TEE 的密钥进行签名。

字段描述
trace.eat_profileEAT 配置文件 URI:tag:agentrust-io.com,2026:trace-v0.2
trace.runtime在飞地启动时记录的 TEE 平台和硬件度量值
trace.policy.bundle_hash启动时加载的 Cedar 捆绑包的 SHA-256 值;更改任何策略文件都会改变此值
trace.cnf.jwk绑定到 TEE 签名密钥的 Ed25519 公钥
trace.tool_transcript由审计链派生的按调用视图:hash(绑定到审计链顶端)、call_count,以及保护隐私的 entries(工具名称、数据类别、决策)
gateway.audit_chain哈希链审计日志的根和顶端;无需重放单个条目即可验证
signature对完整声明主体的规范 JSON 进行的 Ed25519 签名(RFC 8785)

(此表是最常用字段的摘要。)

使用 cmcp_verify 库进行验证不需要信任操作员。验证者将签名与 TEE 绑定密钥进行比对,将策略捆绑包哈希与批准的值进行比对,并检查审计链的内部一致性。

规范性模式为 schemas/trace-claim.schema.jsondocs/quickstart.md 展示了一个完整示例。请参阅 docs/spec/verification-library.mdTRACE 规范 了解完整的验证协议。


标准对齐

标准覆盖范围
OWASP Agentic AI Top 10MCP10(通过工具调用导致的数据泄露),MCP02(未授权工具),MCP08(可证明的治理),MCP04(供应链)
NIST SP 800-207TEE 内部的政策决策点;不对工作负载身份进行隐式信任
EU AI Act Art. 12, 15逐决策审计记录(Art. 12);基于 TEE 的网络安全控制(Art. 15)
DORA Art. 9证明链;通过 gateway.audit_chain 进行审计日志保留
RATS/EAT RFC 9711GatewayClaim 是一个 EAT;eat_profile 字段标识 TRACE 配置文件

安全

工具检查内容
ruff每个 PR 的风格和导入检查
bandit每个 PR 的 Python 安全检查
pip-audit每个 PR 的依赖项漏洞扫描
mypy每个 PR 的静态类型检查
CodeQLPython SAST,安全扩展查询,每周执行
OpenSSF Scorecard每周评分,SARIF 上传

参见 SECURITY.md 了解漏洞报告及响应 SLA。参见 LIMITATIONS.md 了解明确的范围边界,包括 APM 负载捕获、运行时配置注入以及 P4.1 供应链(typosquat)的残留风险,这些风险在第一阶段中未关闭。


文档

页面描述
docs/quickstart.md从零到首个 TRACE Claim 不到 30 分钟
docs/configuration.md包含所有字段和默认值的完整配置参考
docs/SPEC.md产品规格说明:问题分类、架构、覆盖矩阵
docs/spec/threat-model.mdSTRIDE 分析、对手模型、残余风险
docs/spec/cedar-policy.mdCedar 策略语言参考和模式
docs/testing/benchmarks.md每个 TEE 提供商的延迟和吞吐量基准测试

常见问题解答

什么是 cMCP?

cMCP(Confidential MCP Runtime)是一个开源网关,它在硬件可信执行环境(TEE)内强制执行 MCP 工具调用策略。它拦截每次工具调用,根据 Cedar 策略包对其进行评估,执行决策(允许、拒绝或脱敏),并将该调用记录在硬件密封的审计链中。

cMCP 与纯软件 MCP 治理有何不同?

纯软件治理在操作员或供应链 CVE 可触及的同一操作系统中运行策略引擎,因此无法证明所执行的策略是经过批准的版本,也无法证明决策未在内存中被篡改。cMCP 在 TEE 内部运行策略引擎,并在任何代码运行之前将 Cedar 包哈希值测量到硬件证明报告中,因此控制平面无法被其治理的进程触及。

我需要特殊硬件来试用它吗?

不需要。设置 CMCP_DEV_MODE=1 以使用纯软件 TEE 提供者,并在没有硬件 TEE 的情况下运行完整的快速入门。硬件提供者(TPM、AMD SEV-SNP、Intel TDX、OPAQUE)用于生产环境。

什么是 TRACE Claim?

TRACE Claim(一个 GatewayClaim)是每个会话生成的经过签名和硬件证明的工件。它记录了哪些工具运行了、哪个策略决定了每次调用、Cedar 包哈希值以及审计链,并使用从未离开 TEE 的 Ed25519 密钥进行签名。验证者使用 cmcp_verify 库对其进行检查,而无需信任操作员。

支持哪些 TEE 提供者?

TPM 2.0 / vTPM、AMD SEV-SNP 和 Intel TDX,NVIDIA GPU 机密计算计划在 v0.2 中推出,OPAQUE Confidential Runtime 可作为显式选择加入项使用。自动检测顺序为 Azure 机密虚拟机,然后是 TPM 2.0 / vTPM,然后是 AMD SEV-SNP,然后是 Intel TDX;纯软件提供者仅在 CMCP_DEV_MODE=1 下使用。

cMCP 采用什么许可证?

MIT。


贡献指南

CONTRIBUTING.md · GOVERNANCE.md · Discussions

加入我们的 Discord 社区。

在生产环境中使用 cMCP?请将您的组织添加到 ADOPTERS.md


许可证

MIT - 参见 LICENSE.