chia-mcp について
chia-mcpは、ホスト型ノードまたは設定したフルノードRPCを通じてChiaブロックチェーンを照会するMCPサーバーです。チェーンの調査や分析向けに、ブロック、コイン、取引の取得と要約を提供します。
主な機能
- 01Chia照会用の36ツール
- 02ブロックとコイン記録の検索
- 03メンプールと手数料の確認
- 04アドレス残高の集計とコイン追跡
- 05オファーのデコードとブロック要約
- 06アドレスとコインIDのローカル計算
活用シーン
- 01ネットワーク状態と残高の確認
- 02ブロック、コイン、取引の調査
- 03コインの由来追跡と資金移動の要約
- 04オファーのデコードと手数料の見積もり
MCP 対応
Chiaフルノードの照会機能をMCPツールとして公開し、ライブネットワーク状態のリソースとタスク別プロンプトも提供します。多くの呼び出しはCoinsetのホストノードを使い、フルノードURLも設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
36掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
chia-mcp
Chia ブロックチェーンを照会する 36 個のツール(push_tx とローカルノードのオプションを含めると最大 38 個)を公開する Model Context Protocol (MCP) サーバーです。Coinset のホスト型ノードを使用するため、ローカルの Chia ノードは不要です。
クイックスタート
Claude Desktop
設定ファイルに追加します。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"chia": {
"command": "npx",
"args": ["-y", "chia-mcp"]
}
}
}
Claude Code
claude mcp add chia -- npx -y chia-mcp
claude mcp add chia --env CHIA_NETWORK=testnet11 -- npx -y chia-mcp
Cursor
プロジェクト内の .cursor/mcp.json またはグローバル設定の ~/.cursor/mcp.json に追加します。
{
"mcpServers": {
"chia": {
"command": "npx",
"args": ["-y", "chia-mcp"]
}
}
}
VS Code
ユーザー設定(JSON)または .vscode/mcp.json に追加します。
{
"mcp": {
"servers": {
"chia": {
"command": "npx",
"args": ["-y", "chia-mcp"]
}
}
}
}
テストネット
CHIA_NETWORK に testnet11 を設定します。
{
"mcpServers": {
"chia": {
"command": "npx",
"args": ["-y", "chia-mcp"],
"env": {
"CHIA_NETWORK": "testnet11"
}
}
}
}
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
CHIA_NETWORK | mainnet | 接続先ネットワーク:mainnet または testnet11 |
CHIA_FULL_NODE_URL | (ネットワークから自動設定) | フルノードの RPC エンドポイント URL を上書きします(例:https://api.coinset.org または独自のノード)。ローカルの Chia ノードには mTLS クライアント証明書が必要です。chia-mcp はクライアント証明書を直接サポートしていないため、mTLS を終端するリバースプロキシを使用してください。 |
CHIA_MCP_ENABLE_PUSH_TX | (未設定) | push_tx ツールを有効にするには 1 または true を設定します(安全のため、デフォルトでは無効です) |
利用可能なツール
ブロックチェーンの状態
get_blockchain_state— 現在のチェーン状態:ピーク高、同期状況、難易度、サブスロット反復回数、メンプールサイズ、ネットワーク容量の推定値。get_network_info— ネットワーク名とアドレスプレフィックス(xch/txch)。get_routes— ノードで利用可能なすべての RPC エンドポイントを一覧表示します(Coinset 以外のノードでのみ利用可能)。
ブロック
get_block— ヘッダーハッシュで指定したブロック全体(トランザクション、証明、報酬)。get_block_record— ヘッダーハッシュで指定したブロックレコード(ブロック全体より軽量)。get_block_record_by_height— 指定した高さのブロックレコードメタデータ(ブロック全体より軽量)。get_block_records— 高さの範囲[start, end)に含まれるブロックレコード。get_blocks— 高さの範囲[start, end)に含まれるブロック全体。get_block_spends— ヘッダーハッシュで指定したブロック内のすべてのコイン支出。get_block_spends_with_conditions— ヘッダーハッシュで指定したブロック内のコイン支出と、解析済み CLVM 条件。get_additions_and_removals— ブロック内で作成または消費されたすべてのコイン。get_unfinished_block_headers— 未完了のブロックヘッダー(処理中のブロック)。get_block_count_metrics— ブロック数の指標(圧縮済み/未圧縮の件数)。
コイン
get_coin_record_by_name— ID(親コイン+パズルハッシュ+金額の sha256)で指定した単一のコイン。get_coin_records_by_names— ID で指定した複数のコイン(一括検索)。get_coin_records_by_puzzle_hash— パズルハッシュにロックされたコイン。使用済み状態や高さによるフィルターを任意で指定できます。get_coin_records_by_puzzle_hashes— 複数のパズルハッシュにロックされたコイン(一括検索)。get_coin_records_by_hint— ヒントが付与されたコイン(CAT/NFT トランザクションでよく使用されます)。get_coin_records_by_hints— 複数のヒントが付与されたコイン(一括検索)。get_coin_records_by_parent_ids— 特定の親コインから作成されたコイン(系譜の追跡)。get_puzzle_and_solution— 指定した高さで消費されたコインの CLVM パズルとソリューション。get_puzzle_and_solution_with_conditions— 消費されたコインのパズル、ソリューション、および解析済み CLVM 条件。get_memos_by_coin_name— コインに関連付けられたメモ/メッセージ。
メンプール
get_all_mempool_tx_ids— 保留中のトランザクション ID をすべて一覧表示します。get_all_mempool_items— 詳細情報を含むメンプール項目すべて(大量になる場合があります)。get_mempool_item_by_tx_id— トランザクション ID で指定した単一のメンプール項目。get_mempool_items_by_coin_name— 特定のコインを参照するメンプール項目。get_fee_estimate— 目標とする取り込み時間に対する手数料の推定値。
トランザクション
push_tx— 署名済みの spend bundle を mempool に送信します。get_aggsig_additional_data— 署名検証用の AGG_SIG 追加データです。
ネットワーク
get_network_space— 2つのブロック間のネットワーク全体の容量を推定します。
複合(高レベルのクエリ、複数の RPC)
get_address_summary— アドレスまたは puzzle hash の完全な残高サマリーです。すべての未使用コインをページごとに取得し、completeフラグ付きで正確な合計を算出します。残高の確認にはこの方法を使用してください。decode_offer— Chia のオファー文字列(offer1...)を、コインの支出、金額、コイン ID、パズルサイズ、署名ステータスを含む構造化サマリーにデコードします。正確な解析には公式の chia-wallet-sdk を使用します。trace_coin_lineage— コインの系譜を起源(coinbase)までたどります。max_depth回まで親リンクをたどります。summarize_block— ブロック内のすべてのコイン移動を簡潔にまとめます。件数、合計、最大の移動、puzzle hash ごとの純フローが含まれます。生のget_additions_and_removals(1 MB 以上になることがあります)よりもはるかに便利です。
ユーティリティ(ローカルでの計算、RPC 不要)
address_encode— puzzle hash を bech32m Chia アドレス(xch1.../txch1...)に変換します。address_decode— bech32m Chia アドレスを puzzle hash にデコードします。coin_id— parent_coin_id + puzzle_hash + amount からコイン ID を計算します。
ツールの例
よく使用されるツールの入力 → 出力形式を示すクイックリファレンスです。
get_blockchain_state
Input: {} (no parameters)
Output: { peak_height: 9470000, sync: { synced: true }, difficulty: 2528, space: "33501849665552384", mempool_size: 3, ... }
get_coin_record_by_name
Input: { name: "0xabc123..." }
Output: { coin: { parent_coin_info: "0x...", puzzle_hash: "0x...", amount: 1750000000000 }, confirmed_block_index: 5000000, spent_block_index: 5000042, coinbase: false, timestamp: 1700000000 }
get_coin_records_by_puzzle_hash
Input: { puzzle_hash: "0xabc123...", include_spent_coins: false }
Output: [ { coin: { ... }, confirmed_block_index: ..., spent_block_index: 0 }, ... ]
Note: Response truncated at 50KB. For complete balance, use get_address_summary instead.
get_address_summary
Input: { address: "xch1abc123..." }
Output: { total_balance_mojos: "1750000000000", total_balance_xch: "1.75", coin_count: 3, complete: true, oldest_coin_height: 4500000, newest_coin_height: 9400000 }
Note: Pages through ALL unspent coins. The `complete` flag indicates whether the full balance was reached.
trace_coin_lineage
Input: { coin_id: "0xabc123...", max_depth: 10 }
Output: { lineage: [ { coin_id: "0x...", parent: "0x...", amount: 1750000000000, height: 5000042 }, ... ], depth_reached: 5, reached_coinbase: true }
summarize_block
Input: { header_hash: "0xabc123..." }
Output: { height: 5000042, is_transaction_block: true, num_additions: 12, num_removals: 6, total_amount_created: "3500000000000", total_amount_spent: "3500000000000", top_movements: [ ... ] }
Note: Much smaller than raw get_additions_and_removals (which can be 1+ MB).
decode_offer
Input: { offer: "offer1..." }
Output: { valid: true, summary: { offered: { xch: "1.0" }, requested: { "asset_id_abc...": 100 } }, coin_spends: 3, has_signature: true }
address_encode
Input: { puzzle_hash: "0xabc123...", prefix: "xch" }
Output: { address: "xch1abc123..." }
Note: Local computation — no RPC call.
address_decode
Input: { address: "xch1abc123..." }
Output: { puzzle_hash: "0xabc123..." }
Note: Local computation — no RPC call.
coin_id
Input: { parent_coin_info: "0x...", puzzle_hash: "0x...", amount: 1750000000000 }
Output: { coin_id: "0xabc123..." }
Note: SHA256(parent + puzzle_hash + amount). Accepts string amounts for values > Number.MAX_SAFE_INTEGER.
リソース
ネットワーク状態(ライブ)
chia://network/mainnet— Mainnet の接続情報とライブのブロックチェーン状態です。chia://network/testnet11— Testnet11 の接続情報とライブのブロックチェーン状態です。
ガイド(埋め込みドキュメント)
chia://guide/coin-model— Chia の coin/UTXO モデル、spend bundle、トークン規格、および LLM によくある誤りについて説明します。chia://guide/rpc-quickstart— curl の例と Coinset エンドポイントを含む、一般的な RPC 呼び出しについて説明します。chia://guide/recipes— 残高確認、トランザクションの追跡、CAT の検出について、失敗モードを含めた手順を説明します。
仕組み
このサーバーは、Coinset のホスト型エンドポイントを使用して Chia full node RPC API をラップします。
- Mainnet:
https://api.coinset.org/<method> - Testnet11:
https://testnet11.api.coinset.org/<method>
すべての RPC 呼び出しは、JSON ボディを使ったシンプルな HTTP POST リクエストです。認証は不要です。
Coinset ホスト型ノードとローカルノード
ほとんどのツールは、任意の Chia フルノード(Coinset がホストするノード、または独自のノード)で動作します。3 つのツールはCoinset 拡張機能であり、chia-blockchain のフルノード RPC API には存在しないため、ローカルノードまたはシミュレーターに対して実行すると HTTP 404 が返されます。
| ツール | Coinset | ローカルノード/シミュレーター |
|---|---|---|
get_puzzle_and_solution_with_conditions | ✅ | ❌ — get_puzzle_and_solution とローカルの CLVM 評価を使用してください |
get_memos_by_coin_name | ✅ | ❌ |
get_coin_records_by_hints | ✅ | ❌ — 存在するのは単数形の get_coin_records_by_hint のみです |
シミュレーターとの互換性: Coinset の拡張エンドポイントを使用するコードは、シミュレーターやローカルノードでは動作しません。シミュレーター(
chia dev sim)と標準のchia-blockchainノードは、同じ標準 RPC サーフェスに対応しています。最大限の互換性を確保するには、標準 RPC を使用してシミュレーター上で開発してください。本番環境でのクエリを便利にするには、Coinset 拡張機能を使用してください。
共通 RPC: get_network_info と get_aggsig_additional_data は、すべての Chia サービスで利用できる共通 RPC エンドポイントです(フルノード専用ではありません)。Coinset とローカルノードのどちらでも動作します。
意図的に省略した RPC: 上流のフルノード RPC のうち、ツールとして公開していないものが 3 つあります。get_constants(静的データは constants.json で提供する方が適切)、get_recent_signage_point_or_eos(エージェントにとって有用ではない内部コンセンサスの詳細)、create_block_generator(タイムロード/ファーマー向けの内部機能)です。それ以外のフルノード RPC はすべて公開されています。
プロンプト
このサーバーは、一般的な Chia タスクにおけるツールの実行順序と失敗時の動作を定めた 9 つのプロンプトを提供します。
| プロンプト | 説明 |
|---|---|
network_status | Chia ネットワークの現在の状態(ピークの高さ、同期状態、難易度、メンプール)を確認します。 |
address_balance | 正確な残高を確認するため、get_address_summary を使用して Chia アドレスの XCH 残高を確認します。 |
coin_lookup | コイン ID を指定して特定のコインを検索し、詳細を確認します。 |
trace_lineage | コインの親チェーンをたどり、資金の由来を確認します。 |
block_summary | トランザクション数、移動した価値、上位アドレスなど、ブロックの内容を要約します。 |
transaction_status | トランザクションが承認済み、メンプール内、または削除済みかを確認します。 |
offer_safety | Chia オファーを安全に受け入れられるかどうかを評価します(隠れた支出、資産の検証、有効期限)。 |
token_verification | 信頼できるレジストリで資産 ID を確認し、トークン(CAT)が正規のものかどうかを検証します。 |
fee_selection | 現在のネットワーク状況に基づき、Chia トランザクションに適切な手数料を決定します。 |
既知の制限事項
- Coinset のホストノードでは
get_routesを利用できません — HTTP 404 が返されます。これは Coinset の制限であり、このサーバーの不具合ではありません。ローカルの Chia ノードに接続した場合は、このツールを利用できます。 - 大きな整数の精度 — 既知のすべての uint64 フィールド(
amount、space、timestamp、weight、total_iters、sub_slot_iters、required_iters、fee、cost、mempool_cost、mempool_max_total_cost、mempool_min_fee_per_cost)は、JavaScript の精度損失を防ぐため、レスポンスでは文字列として引用符で囲まれます。また、桁数が 16 桁以上の引用符で囲まれていない整数も、同様に引用符で囲まれます。coin_idツールでは、Number.MAX_SAFE_INTEGERを超える値の金額も文字列で指定できます。 - レスポンスの切り詰め — 50 KB を超えるレスポンスは自動的に切り詰められます。切り詰めを避けるには、より絞り込んだクエリパラメーター(高さの範囲を狭める、まとめて検索する代わりに特定の coin ID を指定するなど)を使用してください。
- 429 では
push_txを再試行しません — RPC が HTTP 429(レート制限)を返した場合、push_txを除くすべてのメソッドは、遅延後に 1 回再試行されます。トランザクションの誤った再ブロードキャストを防ぐため、push_txは再試行の対象外です。 network_verifiedのライフサイクル — すべてのレスポンスエンベロープのnetwork_verifiedフィールドは、最初の RPC プローブが成功するまで"pending"です。その後、一致する場合はtrue、不一致の場合はfalseになります。設定されたノードに到達できない場合は、false(プローブ失敗)になります。- npm audit のアドバイザリ — MCP SDK の推移的依存関係について、npm audit のアドバイザリが報告される場合があります。stdio-transport の設定では HTTP サーバーが公開されないため、これらに到達することはできません。標準的な chia-mcp のデプロイにおけるセキュリティ態勢には影響しません。
ソースからインストールする
開発またはコントリビューションを行う場合:
git clone https://github.com/Chia-Network/chia-mcp.git
cd chia-mcp
npm install
npm run build
MCP クライアントの設定で npx -y chia-mcp の代わりに node /path/to/chia-mcp/dist/index.js を使用してください。たとえば、Claude Desktop では次のようにします。
{
"mcpServers": {
"chia": {
"command": "node",
"args": ["/path/to/chia-mcp/dist/index.js"]
}
}
}
開発
npm test # Run test suite
npm run dev # Watch mode (recompiles on changes)
node dist/index.js # Run the server directly
ライセンス
Apache-2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。