这是一个使用 Rust 编写的针对 Substrate 区块链的 Model Context Protocol (MCP) 服务器。该项目通过 MCP 协议动态地暴露 Substrate 区块链操作(查询余额、区块、模块、存储、事件等),并且完全可以通过环境变量进行配置。
设计用于与 subxt 库交互。
基于AI的区块链操作
自定义仪表板和监控
克隆仓库并构建:
git clone https://github.com/ThomasMarches/substrate-mcp-rs.git
cd substrate-mcp-rs
cargo build --release
在项目根目录创建一个 .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 生成密钥对并获取十六进制的私钥种子:
subkey generate --scheme Sr25519 --output-type Json
使用 secretSeed 字段(如果有 0x 前缀则去掉)作为 SIGNING_KEYPAIR_HEX。
从节点导出运行时元数据,并将其放置在 artifacts/metadata.scale:
subxt metadata -f bytes > artifacts/metadata.scale
重要: 在构建之前,该文件必须命名为 metadata.scale 并位于 artifacts/ 目录中。如果缺少或命名错误,构建将会失败。
启动 MCP 服务器:
cargo run --release
服务器将启动并通过标准输入输出监听 MCP 请求。
要将此 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(在构建前必需)欢迎贡献!请打开问题或拉取请求。对于较大的更改,请先打开一个问题来讨论你的提案。
cargo fmt 和 cargo clippyMIT