IOTA Agent MCP
AIコーディングエージェントをIOTAブロックチェーンに接続するMCPサーバー。ウォレット操作、Moveスマートコントラクト開発、オンチェーンデータクエリのための18個のツールを提供し、すべてstdioトランスポートで動作し、MCPプロセス内にシークレットを保持しません。
ワークフロー
- MCPサーバーを設定 — エージェントの設定(Claude Code、Cursor、VS Code Copilot)で構成
- オンチェーンデータをクエリ — オブジェクト、トランザクション、コイン、エポック情報の取得、モジュールの逆コンパイル
- Moveコントラクトを開発 — ビルド、カバレッジ付きテスト、未署名の公開トランザクションの生成
- 署名して公開 — 未署名トランザクションを生成し、
iota_wallet_sign_executeで送信、iota_wallet_pendingで承認状況を確認、iota_transactionでオンチェーン検証
署名フロー(人間参加型)
状態を変更するウォレット操作には人間の承認が必要です:
iota_wallet_sign_executeをBase64エンコードされたトランザクションバイトで呼び出す — 保留中のリクエストを作成iota_wallet_pendingを呼び出して、リクエストがキューに入ったことを確認- 人間が
iota_wallet_approveで承認、またはiota_wallet_rejectで拒否(agent-walletサーバー経由) - 承認された場合、トランザクションがオンチェーンに記録されたことを確認:返されたダイジェストで
iota_transactionを呼び出す - 拒否された場合、ユーザーに通知し、明示的な指示なしに再試行しない
ツール
ウォレット(8ツール)
iota_wallet_address— アクティブなウォレットアドレスを取得iota_wallet_balance— アクティブウォレットのIOTA残高を確認iota_wallet_accounts— 派生したすべてのウォレットアカウントを一覧表示iota_wallet_sign_execute— トランザクションに署名して実行(agent-walletサーバー経由で人間の承認が必要)iota_wallet_pending— 承認待ちの署名リクエストを一覧表示iota_wallet_approve— 指定されたIDの保留中の署名リクエストを承認iota_wallet_reject— 指定されたIDの保留中の署名リクエストを拒否iota_wallet_switch_network— メインネット、テストネット、デブネットを切り替え
Move CLI(4ツール)
iota_cli— 任意のIOTA CLIコマンドを実行(例:client gas、move new my_project)iota_move_build— Moveパッケージをコンパイルし、ビルド結果を報告iota_move_test_coverage— カバレッジ分析とサマリー付きでMoveテストを実行iota_move_publish_unsigned— agent-wallet署名用の未署名公開トランザクションを生成
オンチェーンクエリ(6ツール)
iota_object— オブジェクトデータをIDで取得(所有者、タイプ、バージョン、コンテンツ)iota_objects_by_owner— アドレスが所有するオブジェクトを一覧表示iota_transaction— トランザクション詳細をダイジェストで取得(入力、影響、イベント)iota_coins— ガス推定およびトークンクエリ用のコインオブジェクトを取得iota_epoch_info— GraphQLを介して現在のエポック、チェックポイント、ネットワーク統計を取得iota_decompile— デプロイ済みMoveモジュールのABIを取得して逆コンパイル
例
Moveパッケージをビルドしてテスト:
iota_move_build(path: "./my_move_project")
→ "BUILDING my_move_project ... Build Successful"
iota_move_test_coverage(path: "./my_move_project")
→ "## Test Results\nRunning Move unit tests ... 5 tests passed\n\n## Coverage Summary\n85.7% coverage"
オンチェーンオブジェクトをクエリ:
iota_object(object_id: "0xabc123...")
→ { "owner": "0xdef456...", "type": "0x2::coin::Coin<0x2::iota::IOTA>", "version": 42, "content": {...} }
ウォレット署名でMoveパッケージを公開:
iota_move_publish_unsigned(path: "./my_move_project", gas_budget: "500000000")
→ "AAACAQBk..." (base64 tx bytes)
iota_wallet_sign_execute(tx_bytes: "AAACAQBk...")
→ "Request queued (id: req-1). Awaiting human approval."
設定
環境変数を設定してデフォルトを上書きします:
IOTA_WALLET_SERVER— AgentウォレットサーバーのURL(デフォルト:http://localhost:3847)IOTA_RPC_URL— IOTA JSON-RPCエンドポイント(デフォルト: メインネット)IOTA_GRAPHQL_URL— IOTA GraphQLインデクサー(デフォルト: メインネット)
セットアップ
npm install -g iota-agent-mcp
// Claude Code: ~/.claude/settings.json
{
"mcpServers": {
"iota": { "command": "iota-agent-mcp" }
}
}
// Cursor / VS Code: .cursor/mcp.json or .vscode/mcp.json
{
"servers": {
"iota": { "command": "npx", "args": ["iota-agent-mcp"] }
}
}