用途
substrate-mcp-rs 是一个 Model Context Protocol(MCP)服务器,专门用于与基于 Substrate 的区块链进行交互。它使用 Rust 编写,并与 subxt crate 对接,通过 MCP 协议暴露动态的 Substrate 区块链操作能力。
主要能力
该服务器提供了一系列工具,用于查询和操作 Substrate 区块链,包括:
- query_balance:查询账户余额
- list_pallets:列出运行时中的所有 pallet
- list_pallet_entries:列出某个 pallet 的所有存储条目
- dynamic_runtime_call:执行运行时 API 调用
- send_dynamic_signed_transaction:构造、签名并发送交易
- query_storage:按 pallet 和条目查询存储
- get_latest_events:获取最新区块中的所有事件
- find_events:按 pallet 和变体查找特定事件
- get_latest_block:获取最新区块的详细信息
- get_block_by_hash:按哈希获取区块详情
- find_extrinsics:在最新区块中查找外部交易
- get_system_info:通过 RPC 获取系统信息
- custom_rpc:进行自定义 RPC 调用
完整细节和参数可参见 src/tooling/substrate.rs。
使用方式
- 环境要求:需要访问 Substrate 节点的 WebSocket 端点、一个有效的签名密钥对(十六进制格式)以及目标链的运行时元数据文件。
- 构建:克隆仓库后进行构建。必须先将运行时元数据导出并放置在 artifacts/metadata.scale,文件必须命名为 metadata.scale,否则构建会失败。
- 配置:在项目根目录创建 .env 文件,配置相关环境变量。
- 生成签名密钥对:可使用 subkey 生成密钥对并获取十六进制格式的 secret seed,将 secretSeed 字段(去除 0x 前缀)用于 SIGNING_KEYPAIR_HEX。
- 启动:启动 MCP 服务器后,服务器将通过 stdio 监听 MCP 请求。
- 与 Cursor 集成:以 release 模式构建(cargo build --release),找到构建的二进制文件路径(通常为 target/release/substrate-mcp-rs),在项目或全局的 .cursor/mcp.json 文件中添加服务器条目(例如 {"mcpServers":{"substrate-mcp-rs":{"command":"$PROJECT_ROOT_ABSOLUTE_PATH/target/release/substrate-mcp-rs","args":[]}}}),然后重启 Cursor 即可检测并连接。
适用场景
- AI 驱动的区块链操作:与 LLM(如 Cursor 或 Claude)集成,让用户用自然语言提问(例如“Alice 的最后一笔转账是什么?”),这些问题会被转换为 MCP 工具调用。可构建聊天机器人,使用 MCP 服务器作为后端来回答问题、获取余额或解释链上活动。还可将链上活动(如余额变化或交易状态)的实时更新提供给 VSCode、Cursor、Claude Code 等开发工具。
- 自定义仪表盘和监控:为 Substrate 区块链创建自定义仪表盘和监控系统,显示实时数据和分析,设置关键事件的警报和通知,使用 AI 代理实时分析事件和外部交易以检测可疑活动。
限制
使用前必须满足以下要求:访问 Substrate 节点端点(WebSocket)、有效的签名密钥对(十六进制)、目标链的运行时元数据文件(必须命名为 metadata.scale 并放在 artifacts/ 目录下,否则构建失败)。其他限制信息暂未提供。