ETH Security MCP について
ETH Security MCPは、Ethereumのセキュリティ分析担当者、監査担当者、インシデント対応担当者向けのMCPサーバー群です。取引・トークン活動の検索、コントラクト情報や関数シグネチャの取得、取引シミュレーションを提供します。
主な機能
- 01取引とトークン活動の検索
- 02コントラクトソースコードの取得
- 03関数シグネチャの特定
- 04Foundry castによる取引シミュレーション
活用シーン
- 01Ethereumアドレスに関連する活動の調査
- 02コントラクトの確認と関数シグネチャの特定
- 03取引をシミュレーションして実行内容とガス使用量を確認
MCP 対応
Dune、Sources、Castの3つの専用MCPサーバーをMCPクライアントに提供します。各ツールでオンチェーン活動、コントラクトデータ、取引シミュレーション結果を取得できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ETH Security MCP
セキュリティアナリスト、監査担当者、インシデント対応担当者向けの MCP サーバー集です。
セットアップ
依存関係
eth-security-mcpを使用するには、次の依存関係をインストールする必要があります。
環境変数の設定
eth-security-mcp内の MCP サーバーでは、API キーなどの情報を渡すために環境変数を使用する場合があります。.env.exampleには、すべての MCP サーバーを実行するために必要な値が記載されています。.envファイルを設定するには、cp .env.example .envを実行し、該当する情報を入力してください。
ワークスペース
このリポジトリでは、npm ワークスペースを使用して各アクションを分離しています。特定のワークスペースを操作するには、npm <action> -w src/<directory-name>を使用してください。
ビルドとデバッグ
このリポジトリでは、MCP Inspectorを使用したビルドとデバッグを自動化するために、justfileを使用しています。たとえば、dune MCP サーバーをビルドしてデバッグするには、次のコマンドを実行します。
$ just -l
Available recipes:
build workspace
debug workspace
$ just debug dune
Claude Desktop への MCP サーバーのインストール
このリポジトリの MCP サーバーを Claude Desktop にインストールするには、次の手順を実行します。
-
just setup-<machine> <mcp-server>を実行します。machineにはlinuxまたはmacos、mcp-serverにはインストールする MCP サーバーが含まれるディレクトリ名を指定します。 -
just コマンドを実行すると、MCP サーバーのディレクトリ内に
claude.config.tmp.jsonファイルが作成されます。この内容を、次のファイルのmcpServersの下にコピーして貼り付けます。- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
設定情報を追加したら、変更を反映するために Claude Desktop を再起動します。
MCP サーバー
このコレクションには、Ethereum のセキュリティ分析に特化した 3 つの MCP サーバーが含まれています。
| サーバー | 用途 | ツール |
|---|---|---|
| Dune | トランザクション分析とブロックチェーンデータ | get_transactions_by_address, get_activity_by_address |
| Sources | 関数シグネチャとコントラクトのソースコード | retrieve_function_signature, retrieve_source_code |
| Cast | トランザクションのシミュレーションとデバッグ | run_transaction |
🔍 Dune
用途: 構造化されたトランザクション分析とブロックチェーンデータの取得のために、Dune API エンドポイントにアクセスします。
ツール
get_transactions_by_address
説明: Dune の Sim API を使用して、特定のアドレスのトランザクションを取得します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
address | string | ✅ | トランザクションを取得するアドレス |
block_number | number | ❌ | このブロック番号以降のトランザクションに絞り込みます |
chain_ids | string | ❌ | カンマ区切りのチェーン ID リスト |
is_sender | boolean | ❌ | このアドレスが送信者であるトランザクションを返します |
is_receiver | boolean | ❌ | このアドレスが受信者であるトランザクションを返します |
戻り値
次の構造を持つトランザクションオブジェクトの配列を返します。
{
address: string; // Contract or account address
block_number: number; // Block containing the transaction
data: string; // Raw transaction data
from: string; // Transaction sender address
to: string | null; // Transaction recipient (null for contract creation)
value: string; // ETH amount transferred in wei
logs: Array<{ // Event logs emitted during execution
address: string; // Contract emitting the event
data: string; // Raw event data
topics: string[]; // Event topics
}>;
}[]
get_activity_by_address
説明: Dune の Sim API を使用して、特定のアドレスのトークンアクティビティを取得します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
address | string | ✅ | トークンアクティビティを取得するアドレス |
block_number | number | ✅ | このブロック番号までのアクティビティを返します |
chain_ids | string | ❌ | カンマ区切りのチェーン ID リスト |
戻り値
次の構造を持つアクティビティオブジェクトの配列を返します。
{
chain_id: number; // Chain ID where activity occurred
block_number: number; // Block containing the activity
block_time: string; // Timestamp of the block
tx_hash: string; // Transaction hash
type: string; // Type of activity (transfer, swap, etc.)
asset_type: string; // Type of asset (erc20, native, etc.)
token_address: string; // Address of the token contract
from: string; // Sender address
to: string; // Receiver address
spender: string; // Spender address (for approvals)
value: string; // Amount transferred
value_usd: number; // USD value of the transfer
token_metadata: { // Token information
symbol: string; // Token symbol
decimals: number; // Token decimals
name: string; // Token name
price_usd: number; // Token price in USD
standard: string; // Token standard (erc20, etc.)
};
function: { // Function call details
signature: string; // Function signature
name: string; // Function name
inputs: { // Function inputs
name: string; // Parameter name
type: string; // Parameter type
value: string; // Parameter value
};
};
contract_metadata: { // Contract information
name: string; // Contract name
};
from_token_address: string; // Source token address (for swaps)
from_token_value: string; // Source token amount (for swaps)
to_token_address: string; // Destination token address (for swaps)
to_token_value: string; // Destination token amount (for swaps)
}[]
📚 Sources
用途: セキュリティ分析のために、関数シグネチャデータとコントラクトのソースコードにアクセスします。
ツール
retrieve_function_signature
説明: 4byte API から、指定された関数セレクターの関数シグネチャを取得します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
selector | string | ✅ | 16 進数の関数セレクター(例:「0x70a08231」) |
戻り値
{
best_match: string; // Most likely function signature (lowest ID)
all_matches: string[]; // All potential matching signatures
}
retrieve_source_code
説明: Sourcify からコントラクトアドレスのソースコードを取得します。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
address | string | ✅ | ソースを取得するコントラクトアドレス |
chain_id | number | ✅ | コントラクトがデプロイされているチェーンの ID |
戻り値
{
sources: Record<string, { // Source files
[filePath: string]: string; // File path → file content
}>;
}
⚡ Cast
目的: Foundry の cast コマンドラインツールを使用して、トランザクションのシミュレーションとスマートコントラクトとのやり取りを行います。
ツール
run_transaction
説明: Foundry の cast run コマンドを使用してトランザクションをシミュレートし、デバッグや分析を行います。
パラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
transactionHash | string | ✅ | シミュレートするトランザクションのハッシュ |
rpcUrl | string | ✅ | Ethereum ノードの RPC URL |
quick | boolean | ❌ | シミュレーションを高速化するクイックモードを使用します(デフォルト:false) |
戻り値
以下を含む文字列を返します:
- トランザクションの実行詳細
- 状態の変更
- ガス使用量の情報
- リバート理由(トランザクションが失敗した場合)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。