关于 LEGION Verify: MCP tool-list history
LEGION Verify 是用于审查 MCP 服务工具列表变更的只读 MCP 服务,面向需要检查已批准工具是否发生漂移的开发与安全团队。它依据带签名的追加式透明日志提供历史记录和可离线复核的证明。
主要功能
- 01查询已签名的工具列表历史
- 02验证离线证据包
- 03检查服务工具变更与覆盖情况
- 04比较当前工具列表与签名记录
- 05使用固定根密钥验证证明
适用场景
- 01审查 MCP 服务是否更改工具描述
- 02验证工具列表证据包
- 03检查指定注册服务的变更历史
- 04在离线环境复核签名与包含证明
MCP 相关
该 MCP 服务向客户端提供五种只读工具,用于查询透明日志、验证证据和检查 MCP 服务的工具变更。客户端可通过远程 HTTP 或本地 stdio 连接。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.legion-api.com/mcpclaude mcp add --transport http legion33shadow-legion-verify https://mcp.legion-api.com/mcp{"mcpServers":{"legion33shadow-legion-verify":{"type":"http","url":"https://mcp.legion-api.com/mcp"}}}在 Cursor 中打开{"servers":{"legion33shadow-legion-verify":{"type":"http","url":"https://mcp.legion-api.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"legion33shadow-legion-verify":{"type":"http","url":"https://mcp.legion-api.com/mcp"}}}{"mcpServers":{"legion33shadow-legion-verify":{"serverUrl":"https://mcp.legion-api.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
LEGION Verify — 用于检测 MCP 工具漂移的 MCP 服务(5 个只读工具)· v1.3.0
MCP 服务是否在你批准工具后更改了工具?模型会将工具描述作为指令,因此对描述或 inputSchema 的静默更改(工具漂移,即“rug pull”)值得关注。LEGION Verify 根据 LEGION 已签名、仅追加的 MCP 工具列表透明日志提供答案:服务公开了什么,以及何时发生了更改。
每个答案都会通过基于固定根密钥指纹锚定的密钥环进行校验(Ed25519、RFC 9162 Merkle 证明);证据包可离线重新校验。
如需将工具列表固定到锁文件并在 CI 中检测漂移,请参阅 legion-lock。
工具 — 全部为只读(readOnlyHint: true,destructiveHint: false)
| 工具 | 功能 | 网络 |
|---|---|---|
get_checkpoint | 最新的已签名树头;根据密钥环校验签名 | GET https://tlog.legion-api.com/tlog/v0 的固定路由 |
get_server_changes | 单个 MCP 服务的已签名工具列表历史记录(注册表 ID,limit 为 1–50),按时间从新到旧排列,并附带最新记录的证据包 | GET https://tlog.legion-api.com/tlog/v0 的固定路由 |
verify_evidence_bundle | 离线校验证据包:从固定根密钥开始的密钥环链、记录签名、已签名树头、RFC 9162 包含证明;可选与已批准的工具哈希进行校验(MATCHES_APPROVED / UNAPPROVED_CHANGE) | 无 |
verify_mcp_server | 粘贴 MCP 服务 URL:先与公开 MCP 注册表匹配,再获取最新的已签名工具列表记录、更改次数(总计 / 30 天)、从固定根密钥重新校验的 RFC 9162 包含证明,以及证据包。live=true 会添加当前提供的工具列表,并与已签名列表进行比较(当前列表未签名) | GET https://legion-api.com/drift/verify(默认;LEGION_DRIFT_BASE)。实时比较仅在托管端点运行,且仅针对注册表中列出的服务 |
check_mcp_server | 通过一次调用查询注册表 ID:已签名工具列表指纹历史、最近一次更改及更改前后的指纹和差异链接、来自已签名 COVERAGE_V1 登记表的单服务覆盖情况(仅当每个周期都观察到该服务时,full_register 才为 COMPLETE;不完整时为 UNKNOWN)、证明 URL,以及用于离线重新校验所有内容的一条命令(legion_check 工具包)。未知 ID → UNKNOWN(日志中未收录不代表已作出判定) | GET https://tlog.legion-api.com/tlog/v0 和 https://legion-api.com/tlog/v0/coverage 的固定路由 |
除此之外没有其他功能:无需写入、购买、私钥或 API 密钥。调用方提供的唯一 URL 是传给 verify_mcp_server 的 URL:它会在注册表中查询;本服务绝不会连接该 URL。在托管端点上,live=true 会让 LEGION 的漂移服务向该服务发送 initialize + tools/list,且仅当该服务是注册表中的条目并具有公开地址时才会执行。
连接
Claude Code(远程)
claude mcp add --transport http legion-verify https://mcp.legion-api.com/mcp
Claude Desktop(本地,stdio) — claude_desktop_config.json:
{ "mcpServers": { "legion-verify": { "command": "python3", "args": ["/ABSOLUTE/PATH/server.py"] } } }
(需要 pip install "mcp==2.1.1";server.py 和 legion_tlog_verify.py 位于同一文件夹中)
任意 MCP 客户端(远程):使用 https://mcp.legion-api.com/mcp 上的流式 HTTP,无需身份验证。
试用
- “调用 get_checkpoint 并提供 tree_size、root_sha256 和 signature_valid。”
- “使用 get_server_changes,显示 xyz.signomy/civitae 的已签名历史记录(limit 3)。”
- “将你获得的 evidence_bundle 传给 verify_evidence_bundle,并告诉我证明是否有效。”
- “对 https://tandem.ac/mcp 使用 verify_mcp_server,并设置 live=true:自已签名记录以来,它的工具是否有更改?”
在浏览器中进行同样的检查,并使用可嵌入的徽章:https://legion-api.com/drift/check/
自行验证完整日志(无需 MCP,也无需 pip)
PIN=a7c6a35b1c2c81d589a30c2ad628679bdea9da4139d49aa3c42cdde6e1c65036
curl -fsSLO https://legion33shadow.github.io/legion-tlog-mirror/legion_verify_mirror.py
python3 -I -S legion_verify_mirror.py "$PIN"
根密钥指纹——请通过带外方式固定:a7c6a35b1c2c81d589a30c2ad628679bdea9da4139d49aa3c42cdde6e1c65036
限制
该日志是单个观察者(LEGION)的签名记录;它无法显示服务器向其他客户端提供的内容。
只有 name、description 和 inputSchema 会计算指纹。只有在 LEGION 进行下一次观察并生成下一个签名头后,变更才会显示。Bitcoin 锚点处于 pending 状态(尚未在完整节点上运行 ots verify)。
目前还没有独立见证者共同签名。需要身份验证的服务器不会被观察。
公共服务器(v1.3.0):不可变证明和每个头的历史记录会被缓存;每个客户端(Cloudflare 看到的 IP)每分钟最多可触发 20 次未缓存的日志请求(否则返回 CLIENT_RATE_LIMITED;仍会提供缓存的响应)。
许可证:MIT(参见 LICENSE)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。