基板MCP服务器
 

一种模型上下文协议 (MCP) Substrate区块链服务器,用Rust编写。该项目通过MCP协议公开了动态Substrate区块链操作(查询余额、块、托盘、存储、事件等),并且可以通过环境变量进行完全配置。
设计用于与 subxt 机箱。
✨ 特性
- 动态查询账户余额和存储
- 列出托盘及其条目
- 获取和过滤事件和外部取证
- 提交并查看动态签名交易
- 访问系统和块信息
- 对Substrate节点的自定义RPC调用
🚀 潜在用例
- 人工智能驱动的区块链运营
- 与LLM(如Cursor或Claude)集成,允许用户用自然语言提问(例如,“Alice的最后一次转移是什么?”),这些问题会被翻译成MCP工具调用。 - 使用您的MCP服务器作为后端,构建一个聊天机器人,可以回答问题、获取余额或解释链上活动。 - 使用MCP服务器向VSCode、Cursor、Claude Code等开发工具提供链活动的实时更新,如余额变化或交易状态。
- 自定义仪表板和监控
- 为您的Substrate区块链创建自定义仪表板和监控系统 - 显示区块链操作的实时数据和分析 - 为关键事件设置警报和通知 - 使用AI代理通过实时分析事件和外部取证来检测可疑活动。
🛠️ 需求
- 锈
- 访问Substrate节点端点(WebSocket)
- 有效的签名密钥对(十六进制)
- 目标链的运行时元数据文件(命名和位置见下文)
📦 安装
克隆存储库并构建:
git clone https://github.com/ThomasMarches/substrate-mcp-rs.git
cd substrate-mcp-rs
cargo build --release⚙️ 配置
创建一个 .env 项目根目录中的文件,包含以下变量:
# WebSocket endpoint for the Substrate node
RPC_URL=wss://your-node-url.example.com
# Signing keypair as hex (32 bytes, e.g. output of subkey inspect-key --scheme Sr25519)
SIGNING_KEYPAIR_HEX=your_signing_keypair_hex_here生成签名密钥对
您可以使用以下命令生成密钥对并获取十六进制的秘密种子 子键:
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服务器将启动并通过stdio监听MCP请求。
🖇️ 与Cursor集成
使用此MCP服务器 光标,您需要将其添加到游标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 如果构建的二进制文件的绝对路径不同,则使用该路径。
- 重新启动游标。现在,它应该检测并连接到您的Substrate MCP服务器,使其工具可供使用。
有关更多详细信息,请参阅 光标文档 或 模型上下文协议介绍.
🧰 可用工具
服务器公开了一组用于与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提交前 - 在可能的情况下添加测试
📄 许可证
麻省理工学院

