关于 authority-risk-mcp
authority-risk-mcp 是只读 MCP 服务,帮助 AI Agent 查看智能合约的管理权限、变更延迟和风险评分。它读取 Authority Risk Oracle Watch 发布的数据,并在回答前验证签名清单与文件哈希。
主要功能
- 01查询合约综合评分及子评分
- 02查看管理员、阈值、密钥和延迟
- 03列出受跟踪合约及低分项
- 04检查协议跨链合约评分
- 05验证签名清单和发布文件哈希
适用场景
- 01在依赖合约前了解其管理权限
- 02比较受跟踪合约的风险评分
- 03检查协议在各链上的合约情况
- 04确认数据完整性及快照是否过期
MCP 相关
向 MCP 客户端提供只读工具,用于查询合约和协议的权限及评分数据。回答包含完整性信息;该服务不执行交易,也不需要账户、密钥或钱包。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| chain | string | 是 | robinhood、ethereum-l1、arbitrum、base、tempo、plasma、monad、hyperliquid 或 solana |
| address | string | 是 |
详细介绍
authority-risk-mcp
一个只读的 MCP 服务,可在 AI Agent 依赖智能合约之前,告知它谁能更改该合约、变更速度有多快,以及其配置有多可靠。它会读取 Authority Risk Oracle Watch 每六小时发布的文件,并在作答前根据 Watch 的签名清单进行核验。
无需账户、密钥、钱包或交易。分数来自测试网预言机,针对的是每个回答中所列网络上的合约。分数是根据所示时间点的公开数据得出的读数:不是审计结果,也不是投资建议。
安装
使用 uvx(Python 3.9 或更高版本,无需其他依赖):
{ "mcpServers": { "authority-risk": { "command": "uvx", "args": ["authority-risk-mcp"] } } }
使用 npx(需要 Node 18 或更高版本,并且 PATH 中需有 python3 3.9 或更高版本;npm 包是一个轻量启动器,用于启动同一个 Python 服务):
{ "mcpServers": { "authority-risk": { "command": "npx", "args": ["-y", "authority-risk-mcp"] } } }
将此代码块放入 claude_desktop_config.json(Claude Desktop)或 .cursor/mcp.json(Cursor),然后重启客户端。使用 pip:pip install authority-risk-mcp,然后运行 authority-risk-mcp。
四种工具
| 工具 | 询问内容 | 返回结果 |
|---|---|---|
getScore | “Robinhood Chain 上 0x1f7d... 的权限分数是多少?” | 综合分数和五项子分数、数据是否过期、推送和读取时间、预言机和区块,以及用于重放该读数的 cast call |
listTargets | “哪些受跟踪合约的分数低于 40?” | 匹配的合约,按分数从低到高排列,以及未读取分数的合约数量 |
whoControls | “谁能更改此合约,变更需要多长时间?” | 管理员类型(EOA、Safe、timelock 等)、阈值、执行操作所需密钥数、延迟、模块、待处理的管理员变更 |
checkProtocol | “aave-v3 在其所在的每条链上都高于 60 吗?” | 分数最低的合约、已读取数量、过期或触发警报的合约,以及判定结果:ok、fail、unread_part、unread |
每个回答都是带有 status 的 JSON:
ok:已读取该回答所需的数据。not_tracked:Watch 未跟踪此合约。这并不说明它是否安全。not_read:回答所需的文件缺失、无法获取,或签名校验未通过(integrity_failed: true)。
Watch 未读取的值为 null,并会列在 not_read 中。它绝不会是 0,也绝不会是“ok”。unread_part 表示已读取协议的部分合约,但其他合约尚未读取:这不算通过。
调用示例(客户端发送的内容):
{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "getScore", "arguments": {"chain": "robinhood", "address": "0x1f7d7550B1b028f7571E69A784071F0205FD2EfA"}}}
链:robinhood、ethereum-l1、arbitrum、base、tempo、plasma、monad、hyperliquid、solana。
核验内容
Watch 使用 Ed25519 密钥为清单(每个已发布文件的 sha256 和哈希链事件日志的最新位置)签名。此服务会:
- 获取
signature.json,并使用预先固定的密钥(11baca3e...f409)验证签名;遇到未知密钥、未签名的清单或错误签名时,会拒绝处理; - 获取所需的每个文件,并将其 sha256 与清单进行比对;如果第一个来源(raw.githubusercontent.com)提供了不同的副本,则会尝试第二个来源(jsDelivr);如果所有来源的内容都不匹配,则会拒绝处理;
- 在条件允许时,将事件日志的最新位置与清单进行比对。
每个回答都包含一个 integrity 块,其中说明是否已通过验证、由哪个密钥签名、快照的时间有多长(超过 72 小时后,snapshot_stale 会变为 true),以及事件日志核验结果。不匹配的文件绝不会被视为有效数据。
这无法证明什么:Watch 的工作流持有签名密钥,因此如果工作流本身遭到恶意修改,就可能签署任何内容(这种修改会在代码仓库历史中留下记录)。固定密钥可防范其他服务、遭入侵的镜像或被篡改的下载,但无法防范维护者。
选项
authority-risk-mcp [--data-dir DIR] [--base-url URL] [--trust-key HEX] [--allow-unsigned] [--allow-unpinned] [--max-age-hours N]
--data-dir DIR:离线读取watch-data分支的本地克隆(git clone --depth 1 -b watch-data https://github.com/RealSpap/authority-risk-oracle-showcase.git)。如果文件夹中有signature.json,则会使用它进行校验;如果没有,回答会显示verified: false。此模式下不会访问网络。--trust-key HEX(或以逗号分隔的AUTHORITY_RISK_TRUSTED_KEYS):接受由其他密钥签名的清单,用于处理仓库中公布的密钥轮换。- 网络模式仅会连接
raw.githubusercontent.com和cdn.jsdelivr.net(或你提供的 https--base-url),并将经过验证的文件写入私有临时文件夹,该文件夹会在服务停止时删除。
许可证
MIT。源代码位于仓库中的 packages/authority-risk-mcp。工具模块在构建时会从仓库的 scripts/ 文件夹逐字节复制。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。