Foundry MCP Server について
Foundry MCP Server は、Foundry ツールチェーン(Forge、Cast、Anvil)を用いて Solidity 開発の機能を提供する軽量な MCP サーバーです。LLM アシスタントをローカルの Anvil ノードやリモート RPC エンドポイントに接続します。実験的なプロジェクトです。
主な機能
- 01ローカル Anvil インスタンスの起動と管理
- 02読み取り専用のコントラクト関数呼び出し
- 03秘密鍵設定時のトランザクション送信
- 04Forge ワークスペースの管理とスクリプト実行
- 05Heimdall によるバイトコードの逆コンパイルと解析
活用シーン
- 01AI アシスタントによる Solidity コントラクトの作成、デプロイ、デバッグ
- 02オンチェーンのトランザクションデータと実行トレースの分析
- 03ローカル Anvil 上での ERC20 などのコントラクトのテスト
MCP 対応
本プロジェクトは MCP サーバーであり、Claude Desktop や Cursor などの MCP クライアントに対して Foundry を用いた Solidity 開発とオンチェーン操作の機能を公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Foundry MCP サーバー
Foundry ツールチェーン(Forge、Cast、Anvil)を使用して Solidity 開発機能を提供する、シンプルで軽量かつ高速な MCP(Model Context Protocol)サーバーです。

概要
このサーバーは LLM アシスタントを Foundry エコシステムに接続し、次のことを可能にします。
- ノード(ローカルの Anvil インスタンスまたはリモート RPC エンドポイント)とのやり取り
- スマートコントラクトとブロックチェーンデータの分析
- Cast を使用した一般的な EVM 操作の実行
- Solidity コードとスクリプトの管理、デプロイ、実行
- 永続的な Forge ワークスペースの利用
機能
ネットワークとのやり取り
- ローカルの Anvil インスタンスの起動と管理
- 任意のリモートネットワークへの接続(RPC を指定するだけです)
- ネットワーク/チェーン情報の取得
コントラクトとのやり取り
- コントラクト関数の呼び出し(読み取り専用)
- コントラクトへのトランザクション送信(
PRIVATE_KEYが設定されている場合) - トランザクションレシートの取得
- コントラクトストレージの読み取り
- トランザクショントレースの分析
- ブロックエクスプローラーからのコントラクト ABI とソースの取得
Solidity 開発
- 専用の Forge ワークスペースの維持
- Solidity ファイルの作成と編集
- 依存関係のインストール
- Forge スクリプトの実行
- コントラクトのデプロイ
ユーティリティ関数
- コントラクトアドレスの計算
- コントラクトのバイトコードサイズの確認
- ガスコストの見積もり
- 単位間の変換(16 進数から 10 進数など)
- ウォレットの生成
- イベントログの取得
- 関数とイベントのシグネチャの検索
スマートコントラクト分析(Heimdall)
- EVM バイトコードを人間が読めるオペコードに逆アセンブル
- ABI なしで生の calldata をデコード
- EVM バイトコードを Solidity ソースコードと ABI に逆コンパイル
- EVM バイトコードの制御フローグラフを視覚的に生成
- calldata のデコードとトレース分析による詳細なトランザクション検査
使用方法
このサーバーは、MCP クライアント向けの MCP ツールプロバイダーとして使用することを想定しています。クライアントに接続すると、クライアント(claude desktop、cursor、client など)から Solidity およびオンチェーン操作を直接実行できます。
要件
- Node.js v18+
- Foundry ツールチェーン(Forge、Cast、Anvil)
- Heimdall-rs(スマートコントラクト分析用)
手動セットアップ
-
Foundry ツール(Forge、Cast、Anvil)がシステムにインストールされていることを確認します。
curl -L https://foundry.paradigm.xyz | bash foundryup -
サーバーをクローンしてビルドします。
bun i && bun build ./src/index.ts --outdir ./dist --target node -
クライアント設定を更新します(例:Claude desktop)。
"mcpServers": {
"foundry": {
"command": "node",
"args": [
"path/to/foundry-mcp-server/dist/index.js"
],
"env" :{
"PRIVATE_KEY": "0x1234",
}
}
}
メモ
PRIVATE_KEYは任意です。
NPM パッケージを使用したセットアップ
npm を使用して、サーバーを直接インストールして実行できるようになりました。
グローバルインストール
npm install -g @pranesh.asp/foundry-mcp-server
npx で直接使用
npx @pranesh.asp/foundry-mcp-server
MCP クライアントの設定
Claude Code
claude mcp add-json foundry-mcp-server '{"type":"stdio","command":"npx","args":["@pranesh.asp/foundry-mcp-server"],"env":{"RPC_URL":"","PRIVATE_KEY":""}}'
その他の MCP クライアント(Cursor、Claude、Windsurf)
MCP 設定に追加します。
{
"mcpServers": {
"foundry": {
"command": "npx",
"args": ["@pranesh.asp/foundry-mcp-server"],
"env": {
"RPC_URL": "http://localhost:8545",
"PRIVATE_KEY": "0x..."
}
}
}
}
設定
このサーバーでは、次の環境変数がサポートされています。
RPC_URL:指定されていない場合に使用するデフォルトの RPC URL(任意)PRIVATE_KEY:トランザクションに使用する秘密鍵(任意)
注意
メインネット資金のある鍵は追加しないでください。コードは安全に使用するよう設計されていますが、LLM は誤った情報を生成し、悪意のあるトランザクションを送信する可能性があります。 テスト/開発目的にのみ使用してください。LLM を信頼しないでください!!
ヒント
Invalid configurationエラーが発生しますか?JSON 構文を確認してください。よくある問題には、二重引用符(""KEY"→"KEY")、末尾のカンマ、引用符で囲まれていないキーなどがあります。echo '...' | jq .で検証してください。
ワークスペース
このサーバーは、すべての Solidity ファイル、スクリプト、依存関係用に ~/.mcp-foundry-workspace で永続的な Forge ワークスペースを維持します。
ツール
Anvil
anvil_start:新しい Anvil インスタンスを起動anvil_stop:実行中の Anvil インスタンスを停止anvil_status:Anvil が実行中かどうかを確認し、ステータスを取得
Cast
cast_call:コントラクト関数を呼び出します(読み取り専用)cast_send:コントラクト関数にトランザクションを送信しますcast_balance:アドレスの ETH 残高を確認しますcast_receipt:トランザクションのレシートを取得しますcast_storage:特定のスロットにあるコントラクトストレージを読み取りますcast_run:公開済みのトランザクションをローカル環境で実行しますcast_logs:シグネチャまたはトピックでログを取得しますcast_sig:関数またはイベントのシグネチャに対応するセレクターを取得しますcast_4byte:4byte ディレクトリから関数またはイベントのシグネチャを検索しますcast_chain:現在のチェーンに関する情報を取得します
Forge
forge_script:ワークスペースから Forge スクリプトを実行しますinstall_dependency:Forge ワークスペースに依存関係をインストールします
ファイル管理
create_solidity_file:ワークスペース内の Solidity ファイルを作成または更新しますread_file:ワークスペース内のファイルの内容を読み取りますlist_files:ワークスペース内のファイルを一覧表示します
ユーティリティ
convert_eth_units:EVM の単位(wei、gwei、hex)を相互に変換しますcompute_address:デプロイされるコントラクトのアドレスを計算しますcontract_size:デプロイ済みコントラクトのバイトコードサイズを取得しますestimate_gas:トランザクションのガスコストを見積もります
Heimdall 分析
heimdall_disassemble:EVM バイトコードを人間が読めるオペコードに逆アセンブルしますheimdall_decode:ABI を必要とせずに生の calldata をデコードしますheimdall_decompile:EVM バイトコードを Solidity ソースコードと ABI に逆コンパイルしますheimdall_cfg:EVM バイトコードの視覚的な制御フローグラフを生成しますheimdall_inspect:Ethereum トランザクションを詳細に検査します
Claude デスクトップアプリでの使用 🎯
インストールが完了し、Claude デスクトップアプリの設定が済んだら、tavily-mcp サーバーを表示するために Claude デスクトップアプリを完全に終了してから再起動する必要があります。アプリの左下にハンマーアイコンが表示され、利用可能な MCP ツールを確認できます。ハンマーアイコンをクリックすると、利用可能なツールの詳細を確認できます。

これで Claude は foundry-mcp サーバーに完全にアクセスできるようになります。以下の例を Claude デスクトップアプリに入力すると、foundry-mcp サーバーのツールが動作する様子を確認できます。
例
- トランザクションの分析:
Can you analyze the transaction and explain what it does?
https://etherscan.io/tx/0xcb73ad3116f19358e2e649d4dc801b7ae0590a47b8bb2e57a8e98b6daa5fb14b
- 残高の照会:
Query the mainnet ETH and USDT balances for the wallet 0x195F46025a6926968a1b3275822096eB12D97E70.
- トランザクションの送信:
Transfer 0.5 USDC to 0x195F46025a6926968a1b3275822096eB12D97E70 on Mainnet.
- コントラクトのデプロイ/スクリプトの実行:
Deploy a mock ERC20 contract to a local anvil instance and name it "Fire Coin".
謝辞 ✨
- MCP 仕様を提供している Model Context Protocol
- Claude Desktop を提供している Anthropic
免責事項
本ソフトウェアは現状有姿で提供されます。本ソフトウェアの安全性または正確性について、明示的にも黙示的にも、保証、表明、または保証を行うものではありません。本ソフトウェアは監査を受けていないため、意図どおりに動作する保証はありません。また、ユーザーは遅延、障害、エラー、欠落、送信情報の損失、または資金の損失を経験する可能性があります。開発者は、上記のいずれについても責任を負いません。ユーザーは慎重に行動し、自己責任で使用してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。