mcpField
A
authority-risk-mcp

authority-risk-mcp

本地服务
github.com/RealSpap安全0今天更新

关于 authority-risk-mcp

authority-risk-mcp 是只读 MCP 服务,帮助 AI Agent 查看智能合约的管理权限、变更延迟和风险评分。它读取 Authority Risk Oracle Watch 发布的数据,并在回答前验证签名清单与文件哈希。

主要功能

  1. 01查询合约综合评分及子评分
  2. 02查看管理员、阈值、密钥和延迟
  3. 03列出受跟踪合约及低分项
  4. 04检查协议跨链合约评分
  5. 05验证签名清单和发布文件哈希

适用场景

  1. 01在依赖合约前了解其管理权限
  2. 02比较受跟踪合约的风险评分
  3. 03检查协议在各链上的合约情况
  4. 04确认数据完整性及快照是否过期

MCP 相关

向 MCP 客户端提供只读工具,用于查询合约和协议的权限及评分数据。回答包含完整性信息;该服务不执行交易,也不需要账户、密钥或钱包。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"realspap-authority-risk": {
"command": "npx",
"args": [
"-y",
"authority-risk-mcp"
]
}
}
}
启动命令npx -y authority-risk-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiauthority-risk-mcp0.1.0
npmauthority-risk-mcp0.1.0

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
chainstring是robinhood、ethereum-l1、arbitrum、base、tempo、plasma、monad、hyperliquid 或 solana
addressstring是

详细介绍

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 和哈希链事件日志的最新位置)签名。此服务会:

  1. 获取 signature.json,并使用预先固定的密钥(11baca3e...f409)验证签名;遇到未知密钥、未签名的清单或错误签名时,会拒绝处理;
  2. 获取所需的每个文件,并将其 sha256 与清单进行比对;如果第一个来源(raw.githubusercontent.com)提供了不同的副本,则会尝试第二个来源(jsDelivr);如果所有来源的内容都不匹配,则会拒绝处理;
  3. 在条件允许时,将事件日志的最新位置与清单进行比对。

每个回答都包含一个 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/ 文件夹逐字节复制。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。