区块链协议服务器

一个为Substrate区块链设计的模型上下文协议(MCP)服务器,支持动态查询账户余额、存储、事件等操作,适用于AI驱动的区块链操作和自定义监控系统。

  • by ThomasMarches
  • Rust
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 ThomasMarches/substrate-mcp-rs

使用说明

基板MCP服务器

一种模型上下文协议 (MCP) Substrate区块链服务器,用Rust编写。该项目通过MCP协议公开了动态Substrate区块链操作(查询余额、块、托盘、存储、事件等),并且可以通过环境变量进行完全配置。

设计用于与 subxt 机箱。

✨ 特性

  • 动态查询账户余额和存储
  • 列出托盘及其条目
  • 获取和过滤事件和外部取证
  • 提交并查看动态签名交易
  • 访问系统和块信息
  • 对Substrate节点的自定义RPC调用

🚀 潜在用例

  1. 人工智能驱动的区块链运营

    • 与LLM(如Cursor或Claude)集成,允许用户用自然语言提问(例如,“Alice的最后一次转移是什么?”),这些问题会被翻译成MCP工具调用。
    • 使用您的MCP服务器作为后端,构建一个聊天机器人,可以回答问题、获取余额或解释链上活动。
    • 使用MCP服务器向VSCode、Cursor、Claude Code等开发工具提供链活动的实时更新,如余额变化或交易状态。
  2. 自定义仪表板和监控

    • 为您的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服务器并与之交互。

  1. 在发布模式下构建服务器:

    cargo build --release
    
  2. 找到构建二进制文件的路径(通常 target/release/substrate-mcp-rs).

  3. 在您的项目中(或全球) .cursor/mcp.json 文件,为您的服务器添加一个条目。例如:

    {
      "mcpServers": {
        "substrate-mcp-rs": {
          "command": "$PROJECT_ROOT_ABSOLUTE_PATH/target/release/substrate-mcp-rs",
          "args": []
        }
      }
    }
    
    • 更换 command 如果构建的二进制文件的绝对路径不同,则使用该路径。
  4. 重新启动游标。现在,它应该检测并连接到您的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 提交前
  • 在可能的情况下添加测试

📄 许可证

麻省理工学院