
Substrate MCP Server
Substrate MCP Server
README
Substrate MCP Server
A Model Context Protocol (MCP) server for Substrate blockchains, written in Rust. This project exposes dynamic Substrate blockchain operations (querying balances, blocks, pallets, storage, events, and more) via the MCP protocol, and is fully configurable via environment variables.
Designed to interface with the subxt crate.
✨ Features
- Query account balances and storage dynamically
- List pallets and their entries
- Fetch and filter events and extrinsics
- Submit and watch dynamic signed transactions
- Access system and block information
- Custom RPC calls to Substrate nodes
🚀 Potential Use Cases
-
AI-Driven Blockchain Operations
- Integrate with LLMs (like Cursor or Claude) to allow users to ask questions in natural language (e.g., "What was the last transfer from Alice?"), which are translated into MCP tool calls.
- Build a chatbot that can answer questions, fetch balances, or explain on-chain activity using your MCP server as the backend.
- Use the MCP server to provide live updates on-chain activity, such as balance changes or transaction statuses, to development tools like VSCode, Cursor, Claude Code, etc.
-
Custom Dashboards and Monitoring
- Create custom dashboards and monitoring systems for your Substrate blockchain
- Display real-time data and analytics on your blockchain operations
- Set up alerts and notifications for critical events
- Use AI agents to detect suspicious activity by analyzing events and extrinsics in real time.
🛠️ Requirements
- Rust
- Access to a Substrate node endpoint (WebSocket)
- A valid signing keypair (as hex)
- Runtime metadata file for your target chain (see below for naming and placement)
📦 Installation
Clone the repository and build:
git clone https://github.com/ThomasMarches/substrate-mcp-rs.git
cd substrate-mcp-rs
cargo build --release
⚙️ Configuration
Create a .env
file in the project root with the following variables:
# 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
Generating a Signing Keypair
You can generate a keypair and get the secret seed in hex using subkey:
subkey generate --scheme Sr25519 --output-type Json
Use the secretSeed
field (strip the 0x prefix if present) for SIGNING_KEYPAIR_HEX
.
Obtaining and Placing Runtime Metadata
Export the runtime metadata from your node and place it at artifacts/metadata.scale
:
subxt metadata -f bytes > artifacts/metadata.scale
Important: The file must be named metadata.scale
and located in the artifacts/
directory before building. The build will fail if this file is missing or misnamed.
▶️ Usage
To start the MCP server:
cargo run --release
The server will start and listen for MCP requests via stdio.
🖇️ Integrating with Cursor
To use this MCP server with Cursor, you need to add it to your Cursor MCP configuration. This allows Cursor to discover and interact with your Substrate MCP server.
-
Build your server in release mode:
cargo build --release
-
Locate the path to the built binary (typically
target/release/substrate-mcp-rs
). -
In your project (or global)
.cursor/mcp.json
file, add an entry for your server. For example:{ "mcpServers": { "substrate-mcp-rs": { "command": "$PROJECT_ROOT_ABSOLUTE_PATH/target/release/substrate-mcp-rs", "args": [] } } }
- Replace the
command
path with the absolute path to your built binary if it differs.
- Replace the
-
Restart Cursor. It should now detect and connect to your Substrate MCP server, making its tools available for use.
For more details, see the Cursor documentation or the Model Context Protocol introduction.
🧰 Available Tools
The server exposes a set of tools for interacting with a Substrate blockchain, including:
query_balance
: Fetch the balance of an accountlist_pallets
: List all pallets in the runtimelist_pallet_entries
: List all storage entries for a palletdynamic_runtime_call
: Execute a runtime API callsend_dynamic_signed_transaction
: Construct, sign, and send a transactionquery_storage
: Query storage by pallet and entryget_latest_events
: Get all events from the latest blockfind_events
: Find specific events by pallet and variantget_latest_block
: Get details about the latest blockget_block_by_hash
: Get block details by hashfind_extrinsics
: Find extrinsics in the latest blockget_system_info
: Get system info via RPCcustom_rpc
: Make a custom RPC call
See src/tooling/substrate.rs
for full details and parameters.
🗂️ Project Structure
src/main.rs
: Entry point, sets up logging and starts the MCP serversrc/tooling/
: Contains the Substrate tool implementationartifacts/
: Place your runtime metadata file here asmetadata.scale
(required before building)
📈 Next Steps and Goals
- [ ] Add E2E tests
- [ ] Add Unit tests
- [ ] Add more tools
🤝 Contributing
Contributions are welcome! Please open issues or pull requests. For larger changes, open an issue first to discuss your proposal.
- Follow Rust best practices and ensure code is documented
- Run
cargo fmt
andcargo clippy
before submitting - Add tests where possible
📄 License
MIT
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。