关于 bernstein-mcp
bernstein-mcp 是无状态、只读的 MCP 端点,用于检查 bernstein 运行回执、哈希链、Trust Record 和签名 Agent 清单。它返回验证检查结果和签名判定,不存储或获取数据。
主要功能
- 01验证回执和哈希链
- 02检查 TRACE Trust Record
- 03验证签名 Agent 清单
- 04说明回执与 TRACE 的映射
- 05列出预设和内置适配器
- 06返回签名验证判定
适用场景
- 01在依赖运行回执前进行检查
- 02定位链中的首个断裂链接
- 03评估委托链
- 04将签名判定与回执一同保存
MCP 相关
通过 https://mcp.bernstein.run/mcp 向 MCP 客户端提供只读验证、说明和列表工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.bernstein.run/mcpclaude mcp add --transport http sipyourdrink-ltd-bernstein https://mcp.bernstein.run/mcp{"mcpServers":{"sipyourdrink-ltd-bernstein":{"type":"http","url":"https://mcp.bernstein.run/mcp"}}}在 Cursor 中打开{"servers":{"sipyourdrink-ltd-bernstein":{"type":"http","url":"https://mcp.bernstein.run/mcp"}}}在 VS Code 中打开{"mcpServers":{"sipyourdrink-ltd-bernstein":{"type":"http","url":"https://mcp.bernstein.run/mcp"}}}{"mcpServers":{"sipyourdrink-ltd-bernstein":{"serverUrl":"https://mcp.bernstein.run/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
11此工具无需参数。
详细介绍

bernstein-mcp
无状态、只读的 MCP 端点,地址为 **https://mcp.bernstein.run**,用于验证 bernstein 运行回执和 哈希链。无需账户或密钥;不存储任何内容,也不获取任何内容。
claude mcp add --transport http bernstein https://mcp.bernstein.run/mcp
功能
| 工具 | 结果 |
|---|---|
verify_receipt | 重新计算运行回执中包含的每条链,重建签名主体,并检查 Ed25519 签名;返回判定结果和每项检查对应的一行说明,此外还会返回作为签名声明的判定结果(见下文) |
explain_receipt | 执行相同的验证并附带说明:运行记录了什么、在哪些地方存在差异,以及验证结果能证明和不能证明什么 |
verify_chain | 单独遍历日志行、沿袭条目或审计事件(传入文件文本可确保逐字节精确处理行);指出首个断链位置 |
verify_trace_record | 对单个 Trust Record 执行 TRACE v0.2 一致性检查,无状态且无需账户:包括随附的架构、配置文件规则,以及使用 cnf.jwk 中密钥的嵌入式签名(EdDSA、ES256、ES384);record_sha256 是子级跳转所链接的 RFC 8785 摘要 |
verify_delegation_chain | 从叶节点到根节点遍历一组 Trust Record,并对链进行分类(verified、provenance-invalid、authorization-invalid、unverifiable);使用与委派链接测试集相同的代码 |
verify_agent_manifest | 对已签名的 Agent 清单执行无状态检查(v0.2 COSE 信封):包括随附的架构、配置文件、规范化和嵌入式签名(Ed25519、P-256、P-384);可通过 references[] 与 Trust Record 进行交叉检查;判定结果为 valid / invalid / unverifiable |
explain_trace_mapping | 逐项说明 bernstein 运行如何映射到 TRACE v0.2 Trust Record;传入回执即可填入其日志所能回答的内容 |
list_presets / get_preset | 此版本附带的合规预设 |
list_adapters | 此版本附带的 Agent 适配器 |
server_info | 版本和限制 |
与 bernstein verify-receipt 执行相同的遍历,可通过任意 MCP 客户端或
/verify 粘贴表单访问。判定结果页面的
地址就是回执本身的摘要。
信任模型
| 能证明 | 不能证明 |
|---|---|
| 嵌入的行与签名时的行完全一致 | 嵌入的密钥属于你认为的主体(首次使用时建立信任;请自行固定运营方公布的密钥) |
| 签名后没有任何内容被编辑、重排、删除或追加 | 审计范围 HMAC 值(由生成方安装实例的密钥生成;仍会检查其关联关系和内容哈希) |
请将回执文件的内容作为字符串传入:已解析的对象无法区分 1 和 1.0,而参考实现会对原始拼写进行哈希。
签名判定结果
每个判定结果都会以 DSSE
信封(signed_verdict)的形式返回,并使用此部署的 Ed25519 密钥签名:其负载是一份 JCS 规范化声明,其中包含回执摘要、判定结果、每项检查,以及采用 EAR 状态词汇表(affirming / contraindicated / none)的 appraisal 块。请将其与回执一同保存;
任何人都可以使用
/.well-known/bernstein-mcp/keys.json
中的公钥离线重新验证(kid = RFC 7638 指纹)。签名覆盖
application/vnd.bernstein.verdict+json 的 DSSE PAE,构造方式与回执本身相同。它证明的是此验证器在此时针对这些字节得出了此判定结果——与回执的生成方无关。
会话收据
bernstein-attest 会将 Claude Code 或 Codex CLI 会话转换为签名运行收据,由此服务验证。
npx bernstein-attest init # registers hooks for both agents (user scope); --claude-code / --codex / --project to narrow
bernstein-attest link # verify link + one Markdown line for a PR description
bernstein-attest verify .bernstein/receipts/<session>.json
Codex 只有在交互式会话中通过 /hooks 信任项目钩子一次后,才会运行这些钩子;codex exec 会跳过未受信任的钩子,且不输出任何内容。使用 --project 时,Claude Code 钩子会写入 .claude/settings.local.json,Codex 钩子会写入 .codex/hooks.json;两者都会指向你主目录下的程序包,因此请勿将 .codex/hooks.json 纳入版本控制。
每次工具调用会记录:工具名称、输入和输出的哈希值、成功标记、调用所写文件相对于仓库的路径(项目外路径仅记录哈希值),以及 shell 命令的程序名称(首个词,去掉路径,最多 32 个字符)。不会记录:提示词、模型输出、命令文本、文件内容、绝对路径。每当某一轮记录了新内容,以及每累计 2 000 行时,都会封存收据;文件位于 .bernstein/receipts/,可与其描述的更改一同提交。由于后续轮次会重新封存同一文件,请在提交前立即运行 npx bernstein-attest link,以确保你粘贴的链接指向当前文件内容。
限制
| 请求正文 | 1 MiB |
| 每条链的行数 | 2 000(更大的收据:在本地验证) |
| 速率 | POST /mcp 和 POST /verify 每个地址每分钟 60 个请求 |
| 日志记录 | 每个请求一行 JSON:路由、方法、状态、JSON-RPC 方法、工具、判定结果、生成方类别、MCP 客户端名称/版本、国家/地区、colo。绝不记录地址、标头、正文或收据 |
正确性
vectors/ 中有八个由 Python 参考实现生成的黄金测试向量
(通过 scripts/gen_vectors.py,使用固定版本的 bernstein 源代码)。TypeScript 验证器必须逐字节重现每个向量的判定结果、每项检查、绑定字节和收据摘要(test/vectors.test.ts)。
vectors/session/ 中有三个由 bernstein-attest 写入的冻结会话收据(scripts/gen-session-vectors.mjs)。
开发
npm install
npm test # no-fetch guard + vitest
npm run typecheck
npm run dev # wrangler dev
src/ 不得调用 fetch、eval 或 new Function;否则 CI 会失败。
部署说明:参见 DEPLOY.md。许可证:Apache-2.0。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。