# 基板MCP
## 基本信息
- Slug: `thomasmarches-substrate-mcp-rs`
- Source: modelscope
- Publisher: @ThomasMarches/substrate-mcp-rs
- Categories: blockchain / code-execution
- Hosted: No
- License: MIT License
- Source URL: https://www.modelscope.cn/mcp/servers/@ThomasMarches/substrate-mcp-rs
## 简介
语言类型：英语 翻译结果：基板MCP服务器
## MCP Server 详情

# Substrate MCP 服务器

[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Rust](https://img.shields.io/badge/Rust-2024-brightgreen)](https://www.rust-lang.org/)
[![Subxt](https://img.shields.io/badge/Subxt-0.41-orange)](https://github.com/paritytech/subxt)

这是一个用 Rust 编写的用于 Substrate 区块链的 Model Context Protocol [(MCP)](https://modelcontextprotocol.io/introduction) 服务器。该项目通过 MCP 协议暴露动态的 Substrate 区块链操作（如查询余额、区块、模块、存储、事件等），并且可以通过环境变量完全配置。

设计用于与 [subxt](https://github.com/paritytech/subxt) 库接口。

## ✨ 特性

- 动态查询账户余额和存储
- 列出模块及其条目
- 获取并过滤事件和外部调用
- 提交并监视动态签名交易
- 访问系统和区块信息
- 自定义 RPC 调用到 Substrate 节点

## 🚀 潜在用例

1. AI 驱动的区块链操作

    - 与 LLMs（如 Cursor 或 Claude）集成，允许用户使用自然语言提问（例如，“Alice 最后一次转账是什么？”），并将这些问题转换为 MCP 工具调用。
    - 构建一个聊天机器人，可以回答问题、获取余额或解释链上活动，使用您的 MCP 服务器作为后端。
    - 使用 MCP 服务器为开发工具（如 VSCode、Cursor、Claude Code 等）提供链上活动的实时更新，例如余额变化或交易状态。

2. 自定义仪表板和监控

    - 为您的 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](https://paritytech.github.io/polkadot-sdk/master/subkey/index.html) 生成密钥对并获取十六进制的秘密种子：

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](https://www.cursor.so/) 一起使用，您需要将其添加到您的 Cursor MCP 配置中。这允许 Cursor 发现并与您的 Substrate MCP 服务器交互。

1. 在发布模式下构建您的服务器：

   sh
   cargo build --release
   

2. 找到构建后的二进制文件路径（通常是 `target/release/substrate-mcp-rs`）。

3. 在您的项目（或全局）`.cursor/mcp.json` 文件中，为您的服务器添加一个条目。例如：

   json
   {
     "mcpServers": {
       "substrate-mcp-rs": {
         "command": "$PROJECT_ROOT_ABSOLUTE_PATH/target/release/substrate-mcp-rs",
         "args": []
       }
     }
   }- 将 `command` 路径替换为您的构建二进制文件的绝对路径（如果不同）。

4. 重启 Cursor。它现在应该能够检测并连接到您的 Substrate MCP 服务器，使工具可用。

有关更多详细信息，请参阅 [Cursor 文档](https://docs.cursor.com/context/model-context-protocol) 或 [模型上下文协议介绍](https://modelcontextprotocol.io/introduction)。

## 🧰 可用工具

服务器提供了一组用于与 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/tooling/substrate.rs) 以获取完整详细信息和参数。

## 🗂️ 项目结构

- `src/main.rs`: 入口点，设置日志记录并启动 MCP 服务器
- `src/tooling/`: 包含 Substrate 工具实现
- `artifacts/`: 在此放置您的运行时元数据文件 `metadata.scale`（在构建前需要）

## 📈 下一步和目标

- [ ] 添加端到端测试
- [ ] 添加单元测试
- [ ] 添加更多工具

## 🤝 贡献

欢迎贡献！请提出问题或拉取请求。对于较大的更改，请先提出问题讨论您的提案。

- 遵循 Rust 最佳实践，并确保代码有文档
- 提交前运行 `cargo fmt` 和 `cargo clippy`
- 尽可能添加测试

## 📄 许可证

MIT

