开发者预览版 - 于 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 治理无法保证:
治理工具调用的控制平面必须运行在其所管控的进程无法触及的位置。
针对 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)。
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)
提供商自动检测探测顺序: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 |
默认值为 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 托管运行时证明(显式选择启用) |
GatewayClaim 是交给审计方、监管机构或下游验证方的证明单元。它按会话(或按调用,可配置)生成,并使用一把永不离开 TEE 的密钥签名。
(此表为最常用字段的摘要。)
使用 cmcp_verify 库进行验证无需信任操作者。验证方将签名与 TEE 绑定密钥进行比对,将策略包哈希与已批准值进行比对,并检查审计链的内部一致性。
规范模式为 schemas/trace-claim.schema.json,docs/quickstart.md 展示了完整示例。完整验证协议请参阅 docs/spec/verification-library.md 和 TRACE 规范。
漏洞报告和响应 SLA 请参阅 SECURITY.md。明确的范围边界(包括 APM 负载捕获、运行时配置注入以及第一阶段未关闭的 P4.1 供应链(拼写仿冒)残余风险)请参阅 LIMITATIONS.md。
cMCP(机密 MCP 运行时)是一个开源网关,在硬件可信执行环境内强制执行 MCP 工具调用策略。它拦截每次工具调用,依据 Cedar 策略包进行评估,强制执行决策(允许、拒绝或脱敏),并将调用记录在硬件密封的审计链中。
纯软件治理在与操作者或供应链 CVE 可触及的同一操作系统中运行策略引擎,因此无法证明实际运行的策略是已批准的策略,也无法证明决策未被在内存中篡改。cMCP 在 TEE 内运行策略引擎,并在任何代码运行之前将 Cedar 包哈希度量到硬件证明报告中,因此控制平面无法被其所管控的进程触及。
不需要。设置 CMCP_DEV_MODE=1 即可使用纯软件 TEE 提供商,无需硬件 TEE 即可完成完整快速入门。硬件提供商(TPM、AMD SEV-SNP、Intel TDX、OPAQUE)用于生产环境。
TRACE 声明(GatewayClaim)是按会话生成的带签名、经硬件证明的工件。它记录哪些工具被运行、哪个策略决定了每次调用、Cedar 包哈希以及审计链,并使用一把永不离开 TEE 的 Ed25519 密钥签名。验证方可使用 cmcp_verify 库进行校验,无需信任操作者。
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 下使用。
MIT。
CONTRIBUTING.md · GOVERNANCE.md · 讨论区
在 Discord 上加入社区。
正在生产环境中使用 cMCP?请将您的组织添加到 ADOPTERS.md。
MIT - 参见 LICENSE。
| 提供商 | 平台 | 保证级别 | 备注 |
|---|
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 机密运行时 | 不适用 (尚未实现) | 占位符:已从自动检测中排除;显式选择将引发未实现错误 |
| 策略拒绝被记录;调用继续执行 |
| 首次部署、策略调优 |
silent | 策略被评估但不记录、不阻止任何内容 | 基线测量 |
| 命令 | 标志 | 描述 |
|---|
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.eat_profile | EAT 配置文件 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) |
| 标准 | 覆盖范围 |
|---|
| OWASP Agentic AI Top 10 | MCP10(通过工具调用泄露数据)、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 9711 | GatewayClaim 是 EAT;eat_profile 字段标识 TRACE 配置文件 |
| 工具 | 检查内容 |
|---|
| ruff | 每次 PR 的样式和导入检查 |
| bandit | 每次 PR 的 Python 安全检查 |
| pip-audit | 每次 PR 的依赖漏洞扫描 |
| mypy | 每次 PR 的静态类型检查 |
| CodeQL | Python SAST、安全扩展查询、每周执行 |
| OpenSSF Scorecard | 每周评分、SARIF 上传 |
| 页面 | 描述 |
|---|
| 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 提供商的延迟和吞吐量基准 |