返回更新列表
新发布Aug 31, 2026

cmcp v0.4.0

cMCP:机密 MCP 网关。针对 MCP 工具调用的硬件认证策略执行。

分享

cMCP

cMCP:机密 MCP 运行时

在 TEE 内强制执行 MCP 工具策略,使其所管控的智能体无法触及

Documentation

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

CI License: MIT PyPI OpenSSF Scorecard Discord

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

cMCP(机密 MCP 运行时)是运行 MCP 的安全、机密方式:一个开源网关,在硬件可信执行环境(TEE)内强制执行 MCP 工具调用策略。 每次工具调用都会被拦截,依据 Cedar 策略包进行评估,并在其所管控的进程无法触及的位置强制执行。每个会话都会生成一份带签名的 TRACE 声明,验证方无需信任操作者即可对其进行校验;当网关在 TEE 中运行时,该声明具备硬件证明,而在软件模式下则仅签名。如果您正在寻找 MCP 的安全版本,这就是 AgenTrust 为其提供的运行时。

TL;DR - 将您的智能体指向 cMCP 网关。它会在 TEE 内依据 Cedar 策略评估每次工具调用,阻止或脱敏策略拒绝的内容,并生成防篡改的 TRACE 声明作为证明。运行 pip install cmcp-runtime,无需任何硬件即可在软件模式下启动。

您的智能体调用 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 便于首次运行调优;默认值为 `enforcing`
listen_addr: "127.0.0.1:8443"  # 固定为回环地址:开发模式无需 bearer token 即可运行
policy_bundle_path: ./policies/
catalog_path: ./catalog.json

此处 listen_addr 不可省略。CMCP_DEV_MODE=1 有意跳过 bearer token 要求,以便您快速试用,但默认绑定地址仍为 0.0.0.0:8443。在 0.3.0 版本中,该组合会在您机器的所有接口上搭建一个未认证的网关。从 0.4.0 版本起,此行为被拒绝:无 token 的开发模式只能绑定回环地址,而非回环地址的绑定则需要 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)。


工作原理

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

硬件提供商

提供商平台保证级别备注
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 远程证明服务(NRAS)
opaque (可选启用)OPAQUE 机密运行时不适用 (尚未实现)占位符:已从自动检测中排除;显式选择将引发未实现错误

提供商自动检测探测顺序: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 托管运行时(仅可选启用;尚未实现)
# 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           # 证明新鲜度窗口(默认: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"     # 无 token 的开发模式仅限回环地址;在绑定更广范围前设置 CMCP_BEARER_TOKEN
max_response_size_bytes: 2097152    # 默认 2 MB
policy_reload_interval_seconds: 0   # 大于 0 且固定了 CMCP_POLICY_HASH 时将拒绝启动,参见 docs/spec/policy-hot-reload.md

环境变量:

变量作用
CMCP_DEV_MODE=1使用纯软件 TEE 提供商;无需硬件
CMCP_BEARER_TOKEN要求所有入站请求携带此 bearer token
OPAQUE_ATTESTATION_URL启用 OPAQUE 托管运行时证明(显式选择启用)

CLI 参考

命令标志描述
cmcp start--config PATH(必填)启动网关
cmcp validate-config--config PATH(必填)验证 cmcp-config.yaml 而不启动
cmcp validate-bundle--bundle-path PATH(必填)、--expected-hash sha256:<hex>(必填)部署前验证 Cedar 包哈希
cmcp verifyCLAIM_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_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-207策略决策点在 TEE 内;不隐式信任工作负载身份
EU AI Act Art. 12, 15逐决策审计记录(第 12 条);TEE 支持的网络安全控制(第 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 上传

漏洞报告和响应 SLA 请参阅 SECURITY.md。明确的范围边界(包括 APM 负载捕获、运行时配置注入以及第一阶段未关闭的 P4.1 供应链(拼写仿冒)残余风险)请参阅 LIMITATIONS.md


文档

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

常见问题

什么是 cMCP?

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

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

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

试用需要特殊硬件吗?

不需要。设置 CMCP_DEV_MODE=1 即可使用纯软件 TEE 提供商,无需硬件 TEE 即可完成完整快速入门。硬件提供商(TPM、AMD SEV-SNP、Intel TDX、OPAQUE)用于生产环境。

什么是 TRACE 声明?

TRACE 声明(GatewayClaim)是按会话生成的带签名、经硬件证明的工件。它记录哪些工具被运行、哪个策略决定了每次调用、Cedar 包哈希以及审计链,并使用一把永不离开 TEE 的 Ed25519 密钥签名。验证方可使用 cmcp_verify 库进行校验,无需信任操作者。

支持哪些 TEE 提供商?

TPM 2.0 / vTPM、AMD SEV-SNP 和 Intel TDX,NVIDIA GPU 机密计算计划在 v0.2 中推出,OPAQUE 机密运行时可作为显式选择启用。自动检测顺序为 Azure 机密 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

分类