Substrate MCP Server について
Substrate MCP Serverは、Substrateブロックチェーンの開発者や運用者向けのRust製サーバーです。動的な署名トランザクションやカスタムRPC呼び出しを含む、チェーンの照会と操作をMCPツールとして提供します。
主な機能
- 01アカウント残高とストレージの照会
- 02ランタイムのパレットとエントリーの一覧
- 03イベントとエクストリンシックの取得
- 04署名トランザクションの送信と監視
- 05システム情報とブロック情報の取得
- 06カスタムRPCメソッドの呼び出し
活用シーン
- 01アカウント残高とチェーンストレージの確認
- 02直近のブロック、イベント、エクストリンシックの調査
- 03チェーンへの署名トランザクション送信
- 04ブロックチェーンのダッシュボードと監視の構築
MCP 対応
Substrateのチェーンデータ照会や操作を行うツールを提供し、署名トランザクションやカスタムRPC呼び出しにも対応します。MCPクライアントはこれらのツールを通じて設定済みのSubstrateノードにアクセスできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Substrate MCP サーバー
Rust で記述された、Substrate ブロックチェーン向けの Model Context Protocol (MCP) サーバーです。このプロジェクトは、MCP プロトコルを通じて、動的な Substrate ブロックチェーン操作(残高、ブロック、パレット、ストレージ、イベントなどの照会)を提供し、環境変数で完全に設定できます。
subxt クレートと連携するよう設計されています。
✨ 機能
- アカウント残高とストレージを動的に照会
- パレットとそのエントリーを一覧表示
- イベントとエクストリンシックを取得してフィルタリング
- 署名付きの動的トランザクションを送信して監視
- システム情報とブロック情報にアクセス
- Substrate ノードへのカスタム RPC 呼び出し
🚀 想定されるユースケース
-
AI 主導のブロックチェーン操作
- Cursor や Claude などの LLM と統合し、ユーザーが自然言語(例:「Alice からの最後の送金は何でしたか?」)で質問できるようにします。質問は MCP ツール呼び出しに変換されます。
- MCP サーバーをバックエンドとして使用し、質問に回答したり、残高を取得したり、オンチェーンのアクティビティを説明したりできるチャットボットを構築します。
- MCP サーバーを使って、残高の変動やトランザクションのステータスなど、オンチェーンのアクティビティに関するライブ更新を、VSCode、Cursor、Claude Code などの開発ツールに提供します。
-
カスタムダッシュボードとモニタリング
- Substrate ブロックチェーン向けのカスタムダッシュボードとモニタリングシステムを作成します
- ブロックチェーン操作のリアルタイムデータと分析結果を表示します
- 重要なイベントに対するアラートと通知を設定します
- AI エージェントを使って、イベントとエクストリンシックをリアルタイムで分析し、不審なアクティビティを検出します。
🛠️ 必要条件
- Rust
- Substrate ノードエンドポイントへのアクセス(WebSocket)
- 有効な署名用キーペア(hex 形式)
- 対象チェーンのランタイムメタデータファイル(名前と配置については以下を参照)
📦 インストール
リポジトリをクローンしてビルドします。
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 を使って、キーペアを生成し、秘密シードを hex 形式で取得できます。
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 サーバーを 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として配置してください(必須)
📈 次のステップと目標
- E2E テストを追加する
- 単体テストを追加する
- ツールを追加する
🤝 コントリビューション
コントリビューションを歓迎します。イシューまたはプルリクエストを作成してください。大規模な変更の場合は、まずイシューを作成して提案について相談してください。
- Rust のベストプラクティスに従い、コードにドキュメントを追加してください
- 提出前に
cargo fmtとcargo clippyを実行してください - 可能であればテストを追加してください
📄 ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。