CHP MCP 是 Consensus Hardening Protocol 的 MCP 实现,专注于审批收据与策略门禁。它解决的核心问题是:MCP 客户端(如 Cursor、Claude Desktop、Claude Code)的托管允许列表只能回答“这个工具名是否已安装”,无法绑定租户、参数、风险或人工决策。该服务器将这一缺口视为硬拒绝,除非存在与即将运行的调用相匹配的签名审批收据。
主要能力包括:
- 一条命令安装 MCP,包装 @cubiczan/chp,使任何 MCP 客户端可调用 evaluate_spend_gate,无需内嵌协议代码。
- 引擎摘要与规范黄金向量匹配(Profile B 30/30)。
- 审批收据使用 HMAC-SHA256 对 CHP 规范 JSON 签名,覆盖租户、参数、风险与人工决策。
- 结构化拒绝账本,拒绝事件在调用者看到之前必须写入 CHP 签名的账本。
- 收据门禁的金融工具(place_equity_order、wire_treasury_transfer、rebalance_portfolio),这些工具为合成工具,无真实交易场所或银行通道,使用单独的 kind: "authorization" 收据,绑定工具、范围和参数哈希。
- 支持主机注入参数(host-injected args)与网关 _meta,防止模型自行选择索引、键或租户。
使用方式:
- 在 MCP 服务器环境中设置 CHP_RECEIPT_KEY(或 AUDIT_LEDGER_KEY)。未设置时回退到文档化的不安全默认值,仅适用于本地 cookbook,不适用于生产。
- 示例策略文件:examples/tool-approval-policy.json。stripe.create_charge 在允许列表中,但仍需绑定到 acct_live_acme 和确切收费参数的收据才能运行。
- 主机注入策略示例:examples/host-injected-policy.json。
- 设置 CHP_AUDIT_LEDGER 为 JSONL 路径(默认 ./data/chp-audit.jsonl),或 :memory: 用于测试。
- 运行测试:npm test 构建后运行 node --test dist/.test.js(审批收据 + 主机注入绑定)和 node --import tsx --test test/**/.test.ts(拒绝账本)。
适用场景:
- 需要人工介入审批的 MCP 工具调用。
- 需要防止模型自行选择租户或索引的 Semantic Kernel 等主机环境。
- 需要可审计拒绝记录的金融或敏感操作。
- 需要收据门禁的支出/资本门禁。
限制:
- 金融工具为合成工具,无真实交易场所或银行通道。
- 未设置 CHP_RECEIPT_KEY 时回退到不安全默认值,不适用于生产。
- 该 Cubiczan 镜像可能省略 GitHub Actions,需本地运行测试套件。
- 拒绝账本失败会抛出异常而非返回拒绝对象,确保未记录拒绝不可能发生。
- 收据一旦成功消费,nonce 即被烧毁,重放会被拒绝。
- 收据过期后无法复活,时钟回拨也无法恢复。
- 歧义情况(如 resource: "*"、any、all、空字符串、缺失参数、无具体版本策略、actor/tool 通配符、收据额外键)永不产生可用允许收据,且 deny_on_ambiguity 无法关闭。