Substrate MCP 服务器
一个用 Rust 编写的用于 Substrate 区块链的模型上下文协议(MCP)服务器。该项目通过 MCP 协议公开动态 Substrate 区块链操作(查询余额、区块、模块、存储、事件等),并且可以通过环境变量进行完全配置。
设计用于与subxt板条箱接口。
✨ 特点
动态查询账户余额和存储
列出托盘及其条目
获取并过滤事件和外部信息
提交并查看动态签名交易
访问系统和阻止信息
对 Substrate 节点的自定义 RPC 调用
Related MCP server: Official Substack MCP Server
🚀 潜在用例
人工智能驱动的区块链运营
与 LLM(如 Cursor 或 Claude)集成,允许用户以自然语言提问(例如,“Alice 的最后一次转账是什么?”),然后将其转换为 MCP 工具调用。
构建一个聊天机器人,它可以回答问题、获取余额或使用 MCP 服务器作为后端解释链上活动。
使用 MCP 服务器向 VSCode、Cursor、Claude Code 等开发工具提供实时更新的链上活动,例如余额变化或交易状态。
自定义仪表板和监控
为您的 Substrate 区块链创建自定义仪表板和监控系统
显示区块链操作的实时数据和分析
为关键事件设置警报和通知
使用人工智能代理通过实时分析事件和外部因素来检测可疑活动。
🛠️ 要求
锈
访问 Substrate 节点端点 (WebSocket)
有效的签名密钥对(十六进制)
目标链的运行时元数据文件(请参阅下文了解命名和位置)
📦安装
克隆存储库并构建:
⚙️ 配置
在项目根目录中创建一个.env文件,其中包含以下变量:
生成签名密钥对
您可以生成密钥对并使用子密钥获取十六进制的秘密种子:
对SIGNING_KEYPAIR_HEX使用secretSeed字段(如果存在,则删除 0x 前缀)。
获取和放置运行时元数据
从节点导出运行时元数据并将其放置在artifacts/metadata.scale :
**重要提示:**该文件必须命名为metadata.scale ,并在构建前位于artifacts/目录中。如果该文件缺失或命名错误,构建将失败。
▶️ 使用方法
要启动 MCP 服务器:
服务器将启动并通过 stdio 监听 MCP 请求。
🖇️ 与 Cursor 集成
要将此 MCP 服务器与Cursor一起使用,您需要将其添加到您的 Cursor MCP 配置中。这样,Cursor 就可以发现您的 Substrate MCP 服务器并与其交互。
在发布模式下构建您的服务器:
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": [] } } }如果
command路径不同,请将其替换为构建的二进制文件的绝对路径。
重启 Cursor。它现在应该可以检测并连接到你的 Substrate MCP 服务器,并使其工具可供使用。
更多详细信息,请参见Cursor 文档或Model Context Protocol 介绍。
🧰 可用工具
该服务器公开了一组用于与 Substrate 区块链交互的工具,包括:
query_balance:获取账户余额list_pallets:列出运行时的所有托盘list_pallet_entries:列出托盘的所有存储条目dynamic_runtime_call:执行运行时 API 调用send_dynamic_signed_transaction:构造、签名并发送交易query_storage:按托盘和条目查询存储get_latest_events:获取最新区块的所有事件find_events:通过托盘和变体查找特定事件get_latest_block:获取有关最新区块的详细信息get_block_by_hash:通过哈希获取区块详细信息find_extrinsics:在最新区块中查找外部变量get_system_info:通过 RPC 获取系统信息custom_rpc:进行自定义 RPC 调用
有关完整详细信息和参数,请参阅src/tooling/substrate.rs 。
🗂️ 项目结构
src/main.rs:入口点,设置日志并启动 MCP 服务器src/tooling/:包含 Substrate 工具实现artifacts/:将运行时元数据文件放在此处作为metadata.scale(构建前必需)
📈 后续步骤和目标
[ ] 添加 E2E 测试
[ ] 添加单元测试
[ ] 添加更多工具
🤝 贡献
欢迎贡献!请打开问题或拉取请求。对于较大的更改,请先打开问题来讨论您的提案。
遵循 Rust 最佳实践并确保代码已记录
提交前运行
cargo fmt和cargo clippy尽可能添加测试
📄 许可证
麻省理工学院