基板MCP
语言类型:英语 翻译结果:基板MCP服务器
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"substrate-mcp-rs": {
"args": [],
"command": "$PROJECT_ROOT_ABSOLUTE_PATH/target/release/substrate-mcp-rs"
}
}
}
该服务需要配置环境变量:RPC_URL、SIGNING_KEYPAIR_HEX
服务介绍
Substrate MCP 服务器
这是一个用 Rust 编写的用于 Substrate 区块链的 Model Context Protocol (MCP) 服务器。该项目通过 MCP 协议暴露动态的 Substrate 区块链操作(如查询余额、区块、模块、存储、事件等),并且可以通过环境变量完全配置。
设计用于与 subxt 库接口。
✨ 特性
- 动态查询账户余额和存储
- 列出模块及其条目
- 获取并过滤事件和外部调用
- 提交并监视动态签名交易
- 访问系统和区块信息
- 自定义 RPC 调用到 Substrate 节点
🚀 潜在用例
-
AI 驱动的区块链操作
- 与 LLMs(如 Cursor 或 Claude)集成,允许用户使用自然语言提问(例如,“Alice 最后一次转账是什么?”),并将这些问题转换为 MCP 工具调用。
- 构建一个聊天机器人,可以回答问题、获取余额或解释链上活动,使用您的 MCP 服务器作为后端。
- 使用 MCP 服务器为开发工具(如 VSCode、Cursor、Claude Code 等)提供链上活动的实时更新,例如余额变化或交易状态。
-
自定义仪表板和监控
- 为您的 Substrate 区块链创建自定义仪表板和监控系统
- 显示区块链操作的实时数据和分析
- 设置关键事件的警报和通知
- 使用 AI 代理通过实时分析事件和外部调用来检测可疑活动。
🛠️ 要求
- Rust
- 访问 Substrate 节点端点(WebSocket)
- 有效的签名密钥对(十六进制格式)
- 目标链的运行时元数据文件(请参阅下方的命名和放置说明)
📦 安装
克隆仓库并构建:
sh
git clone https://github.com/ThomasMarches/substrate-mcp-rs.git
cd substrate-mcp-rs
cargo build --release
⚙️ 配置
在项目根目录中创建一个 .env 文件,并包含以下变量:
env
Substrate 节点的 WebSocket 端点
RPC_URL=wss://your-node-url.example.com
作为十六进制的签名密钥对(32 字节,例如 subkey inspect-key --scheme Sr25519 的输出)
SIGNING_KEYPAIR_HEX=your_signing_keypair_hex_here
生成签名密钥对
您可以使用 subkey 生成密钥对并获取十六进制的秘密种子:
sh
subkey generate --scheme Sr25519 --output-type Json
使用 secretSeed 字段(如果存在则去掉 0x 前缀)作为 SIGNING_KEYPAIR_HEX。
获取并放置运行时元数据
从您的节点导出运行时元数据,并将其放置在 artifacts/metadata.scale 中:
sh
subxt metadata -f bytes > artifacts/metadata.scale
重要提示: 该文件必须命名为 metadata.scale 并位于 artifacts/ 目录中,否则构建将失败。
▶️ 使用
启动 MCP 服务器:
sh
cargo run --release
服务器将启动并通过标准输入输出监听 MCP 请求。
🖇️ 与 Cursor 集成
要将此 MCP 服务器与 Cursor 一起使用,您需要将其添加到您的 Cursor MCP 配置中。这允许 Cursor 发现并与您的 Substrate MCP 服务器交互。
-
在发布模式下构建您的服务器:
sh
cargo build --release -
找到构建后的二进制文件路径(通常是
target/release/substrate-mcp-rs)。 -
在您的项目(或全局)
.cursor/mcp.json文件中,为您的服务器添加一个条目。例如:json
{
"mcpServers": {
"substrate-mcp-rs": {
"command": "$PROJECT_ROOT_ABSOLUTE_PATH/target/release/substrate-mcp-rs",
"args": []
}
}
}- 将command路径替换为您的构建二进制文件的绝对路径(如果不同)。 -
重启 Cursor。它现在应该能够检测并连接到您的 Substrate MCP 服务器,使工具可用。
有关更多详细信息,请参阅 Cursor 文档 或 模型上下文协议介绍。
🧰 可用工具
服务器提供了一组用于与 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(在构建前需要)
📈 下一步和目标
- 添加端到端测试
- 添加单元测试
- 添加更多工具
🤝 贡献
欢迎贡献!请提出问题或拉取请求。对于较大的更改,请先提出问题讨论您的提案。
- 遵循 Rust 最佳实践,并确保代码有文档
- 提交前运行
cargo fmt和cargo clippy - 尽可能添加测试
📄 许可证
MIT