Coin Scout について
Coin Scoutは、ウォレットやトークンの分析、不正調査、資金追跡に使う読み取り専用のSolanaフォレンジックMCPサーバーです。Heliusを利用したデータツールに、再利用可能なローカル案件ファイルと証拠付きレポートを組み合わせています。
主な機能
- 01ウォレット分析とトークンリスク評価
- 02複数ホップやブリッジをまたぐ資金追跡
- 03ウォッシュトレードとウォレットクラスターの検出
- 04ウォレット損益と取引相手の分析
- 05調査内容の保存とレポート出力
- 06読み取り専用のRPC・DASアクセス
活用シーン
- 01盗難の疑いがある資金を追跡
- 02トークンリスクと不審な取引を評価
- 03ウォレットを比較して共通管理の可能性を調査
- 04調査結果を案件レポートとして保存
MCP 対応
stdioまたはStreamable HTTP経由で、Solana分析、データアクセス、案件管理ツールをMCPクライアントに提供します。読み取り専用で、ブロックチェーンデータの取得にHeliusを使用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AI エージェントに Solana フォレンジックラボを提供しましょう。
盗まれた資金を複数のホップやブリッジをまたいで追跡し、同一の運用者が管理するウォレットクラスターを特定し、トークンのラグリスクをスクリーニングできます。Claude や任意のMCP クライアントとのチャットから直接利用できます。読み取り専用で、Helius を利用しています。
インストール · できること · 仕組み · ツール · プライバシー
2026年11月5日に BONK で実行した実際の analyze_token の結果です。
- 資金の流れを追跡します。
trace_fundsは送金を順方向または逆方向に最大5ホップまで追跡し、移動した時点の各送金をUSDで評価します。Wormhole、deBridge、Mayan、Circle CCTPを経由する際には追跡を止め、資金が到着したチェーンとアドレスを知らせます。followEvmを指定すると、EVM側でも追跡を続けます。 - 送金先を特定します。 OKXが署名したプルーフ・オブ・リザーブのメッセージでそれぞれが検証済みの16,050個のOKXウォレットが組み込まれています。追跡は取引所のウォレットで停止し、その手前のアドレスを入金アドレスの可能性が高いものとしてマークするため、どの取引所に問い合わせるべきかが分かります。
- 偽の取引量を検出します。
detect_wash_tradingはトークンのプールから直接取引を読み込み、自分自身と取引するウォレット、同一スロット内での往復取引、1つのウォレットから資金提供を受けるボット群にフラグを立てます。 - 運営者を特定します。
find_clusterは手数料の支払者、共同署名者、レンタル料の送金先、共通の資金提供元、同一スロット内のアクティビティを分析し、1人の行為者が管理するウォレットを、各関連付けの根拠となる署名とともに明らかにします。 - 購入前にリスクを確認します。
analyze_tokenはMint権限とFreeze権限、メタデータの変更可能性、保有者の集中度を確認し、プールやその他のプログラム管理下の保有者と、実際の大口保有者を見分けます。 - 誰が利益を得たかを確認します。
wallet_pnlはスワップをすべて発生時点の価格で評価し、ウォレットが購入していないトークンの売却にフラグを立てます。 - 調査資料を作成します。 追跡結果やクラスターをケースファイルに保存し、確信度と証拠を添えてアドレスにラベルを付け、資金フロー図を含むMarkdownレポートをエクスポートできます。
- 資金に触れることはありません。 キーも署名も不要です。生のRPCツールが転送するのは読み取りメソッドだけなので、
sendTransaction、requestAirdropなどがネットワークに送信されることはありません。書き込まれるのはローカルのケースファイルだけです。
次のように質問してみてください。
- 「ウォレット
<address>をプロファイリングして。資金提供元や資金の流れ、不審な点はある?」 - 「
<mint>はラグのリスクがある?実際に供給量を保有しているのは誰?」 - 「
<address>からの資金を3ホップまで追跡して、ケースexchange-hackに保存してからレポートをエクスポートして」 - 「この4つのウォレットは同一人物のもの?」
- 「
<wallet>は<mint>で利益を得た?無料でトークンを送ったのは誰?」 - 「
<mint>の取引量は本物?それともボット同士の取引?」
インストール
Helius APIキー(無料プランで利用できます)とNode.js 22.19以降が必要です。coin-scoutはstdioとStreamable HTTPで2026-07-28版のMCP仕様に対応しつつ、2025年版のクライアントにも引き続き対応しています。また、公式MCP Registryには io.github.dennisyilmaz/coin-scout として登録されています。
Claude Desktopおよびその他のMCPBクライアント
ダウンロードした coin-scout.mcpb をクライアントで開き、求められたらHelius APIキーを貼り付けてください。キーはバンドルではなく、クライアントに保存されます。
Claude Code
curl -LO https://github.com/dennisyilmaz/coin-scout/releases/latest/download/coin-scout.mjs
node coin-scout.mjs
この単一ファイルだけでサーバー全体が構成されています。対話形式で実行するとHeliusキーを尋ね、ファイルを ~/.coin-scout/ にコピーし、ユーザースコープで claude mcp add を使って登録します。Claude Codeを再起動すると、ツールを利用できるようになります。
ソースから任意のMCPクライアントにインストール
git clone https://github.com/dennisyilmaz/coin-scout.git && cd coin-scout
npm ci && npm run build
{
"mcpServers": {
"coin-scout": {
"command": "node",
"args": ["/absolute/path/to/coin-scout/build/index.js"],
"env": { "HELIUS_API_KEY": "your-key" }
}
}
}
stdioの代わりにStreamable HTTPを使うには、node build/http.js を実行します。127.0.0.1:8787 のみで待ち受け、外部からの Host ヘッダーを拒否します。また、トランスポートのメトリクスを含む GET /health を提供します。
ダウンロードを検証する
すべてのリリースは、署名付きビルド来歴を用いてGitHub Actionsでビルドされ、SHA256SUMS ファイルとCycloneDX SBOM(coin-scout.cdx.json)が同梱されています。
gh attestation verify coin-scout.mjs --repo dennisyilmaz/coin-scout
仕組み
Helius は HTTP リクエスト単位ではなく、RPC 呼び出し単位で課金とレート制限を行うため、単純に並列処理を増やしても 429 エラーが増えるだけです。トランスポート層は、これを踏まえて構築されています。
- JSON-RPC のマイクロバッチ処理。 4 ms のウィンドウ内に発行された呼び出しをまとめ、1 つの HTTP リクエストにします。
getTransactionを 50 回呼び出すファンアウトでの測定結果は、HTTP リクエストが 50 回から 8 回に減り、実時間で 2.2 倍高速でした。 - バッチサイズの適応的な調整。 429 エラーが返されたバッチは半分にし、未回答の呼び出しは失敗扱いにせず再キューイングします。成功が続くとサイズは元に戻ります。実測では API は 20 件のバッチを受け付けますが、50 件は拒否します。
- コストを考慮した適応型レート制限。 リクエスト間隔はリクエスト内の呼び出し数に応じて調整されるため、20 件のバッチは 20 件分の呼び出しに相当する間隔を設けます。429 エラーのたびに同時実行数を半減し、間隔を 2 倍にした後、徐々に元に戻します。
server_metricsで収束したレートを確認できます。 undiciプールを使用した HTTP/2 と Keep-Alive により、呼び出しごとの TLS ハンドシェイクをなくします。- 2 階層の TTL キャッシュと実行中リクエストの集約。 確定済みのトランザクションとブロックは数時間、残高は数秒間キャッシュします。同一の呼び出しが同時に発生した場合は、1 つの Promise を共有します。
- 必要最小限のペイロード。 ツールはノードの生レスポンスではなく、コンパクトな JSON ドキュメントを 1 つ返します。エージェントのレイテンシに最も大きく影響するのはミリ秒ではなくトークン数です。
ツール
分析(複合分析。まずはこちらから)
| ツール | わかること |
|---|---|
analyze_wallet | ポートフォリオの価値、保有資産、ウォレットの使用期間、入出金の流れ、主要な取引相手、最初の資金提供者、リスクフラグ |
analyze_token | ラグプルのスクリーニング:ミント/凍結権限の状態、メタデータの変更可能性、供給量、FDV、保有者の集中度(上位1/上位10/HHI)。プールや、プログラムによって管理されているその他の保有者にはフラグが付きます。リスクスコアは0~100です |
trace_funds | 最大5ホップの幅優先探索による資金フローグラフ(順方向または逆方向)。各ノードと、各送金時点の米ドル換算額を付けた重み付きエッジ、取引所や入金アドレスのラベル付き終端シンク、循環する資金フローを表示します。ブリッジで追跡を停止し、資金の移動先を報告します。followEvm はEVM上の移動先をさらに2ホップ追跡します |
follow_bridge | Wormhole、deBridge、Mayan、Circle CCTPを経由してSolanaから流出、またはSolanaに流入した資金を追跡します。別のチェーン、受取人、金額、移動先チェーンのトランザクションを表示します。署名を指定するか、スキャン対象のアドレスを指定します |
trace_evm | Ethereum、Base、Arbitrum、BNB Chain、およびその他9つのEVMチェーン上の資金フローを追跡します。ネイティブトークンとERC-20の送金を各送金時点の米ドル換算額で表示し、コントラクトとラベル付きアドレスで追跡を停止します |
identify_addresses | アドレスの背後にいる人物や組織を特定します。組み込みの取引所ウォレット、プランに含まれている場合はHeliusのID情報、ケースとプログラムのラベル、入金アドレスの確認結果を表示します。各ラベルには出典と確信度が付与されます |
detect_wash_trading | トークンの最も取引量の多いプールを基に、ウォッシュトレードのスコアを算出します。相殺取引を行うウォレット、同一スロット内の取引と短時間での往復取引、取引量の集中度、単一のウォレットから資金提供を受けたトレーダーを検出します。不審なトレーダーにはサンプル署名が付属します |
find_cluster | 1つのウォレットから、同じ管理下にある可能性の高いウォレットを特定します。手数料支払者、共同署名者、レンタル料の送金先、共通または単独の資金提供者、同一スロット内のアクティビティ、作成時刻を調べます。署名の証拠を添えてスコアを算出します |
wallet_pnl | スワップ時の価格に基づき、トークンごとの実現損益と未実現損益を算出します。一度も購入していないトークンの売却にフラグを付けます。また、1つのミントを指定した場合は、誰がそのトークンを無償で送付したかを表示します |
find_counterparties | ウォレットが取引したすべてのアドレスを、順位付けし、取引の方向とミントごとの取引量に分けて表示します |
compare_wallets | 2~10個のウォレットを対象に、シビル攻撃/共同所有を調べます。直接的なつながり、共通の資金提供者、取引相手のJaccard類似度、0~100のリンク強度を表示します |
investigate_transaction | 1つの署名を対象に、詳細解析、各アカウントの残高変動(取引時点の米ドル換算額付き)、関係するすべてのミントのラグプルスクリーニング、手数料支払者のプロファイルを表示します |
ケースファイル
| ツール | 機能 |
|---|---|
case_update | ケースを作成するか、要約、アドレスラベル(確信度と証拠となる署名付き)、日付付きのメモを追加します |
case_read | ケースの一覧表示、個別ケースの閲覧、または調査を始める前にすべてのケースからアドレスを検索します |
case_export | Mermaid図を含む report.md と、保存されたトレースまたはクラスターごとの単独で使用できるSVG資金フロー図を書き出します |
trace_funds、find_cluster、または follow_bridge に case: "<name>" を渡すと、結果をそのケースに保存できます。どのケースのラベルも、すべてのツールの label フィールドに表示されるため、後続の調査に以前の結果を活用できます。ケースは ~/.coin-scout/cases/<name>/ にプレーンなJSON形式で保存されます。
coin-scout独自のレンダラーで描画した case_export の図です。図中のデータは説明用です。
| ツール | 基盤 |
|---|---|
chain_status | getEpochInfo + getPriorityFeeEstimate |
get_balances | ネイティブ残高と USD 価格を含む DAS getAssetsByOwner |
get_account | プログラム名を付与した getMultipleAccounts(jsonParsed) |
get_transactions | Helius Enhanced Transactions:人が読みやすい形式のタイプ、送信元、送金、スワップイベント |
get_transaction_raw | ログ、内部命令、計算ユニットを含む getTransaction |
get_transfers | getTransfersByAddress:サーバー側での相手先/方向/ミント/時間によるフィルタリング、各送金時点の USD 価格も指定可能 |
get_transaction_history | getTransactionsForAddress:スロット、時間、ステータスによるフィルタリングとカーソルページング |
get_swaps | SWAP でフィルタリングした拡張履歴を、売却/購入した資産の組とミントごとの純額サマリーに正規化 |
get_token_holders | DAS getTokenAccounts |
get_assets / search_assets / get_asset_activity | DAS の全機能(NFT、cNFT、代替可能トークン、Token-2022) |
solana_rpc | 読み取り専用の RPC と DAS メソッド用の代替手段:get*、is*、search*、minimumLedgerSlot、simulateTransaction |
server_metrics | バッチ圧縮、キャッシュヒット率、適応型レート制限の状態 |
プロンプト
investigate_address、screen_token、trace_stolen_funds:それぞれ調査の手順を定義しています。
設定
API キー以外はすべて任意です。.env.example を参照してください。
| 変数 | デフォルト | 用途 |
|---|---|---|
HELIUS_API_KEY | — | 必須 |
ETHERSCAN_API_KEY | — | 任意。設定すると、trace_evm と followEvm で Etherscan のプランが対応するすべてのチェーンを読み取れます。設定しない場合は、Blockscout 経由で Ethereum のみを利用できます |
HELIUS_NETWORK | mainnet | mainnet または devnet |
HELIUS_RPC_HOST | <network>.helius-rpc.com | RPC ホストを上書きします |
HELIUS_MAX_CONCURRENCY | 24 | 同時実行中の HTTP リクエスト数の上限 |
HELIUS_CONNECTIONS | 64 | undici のプールサイズ |
HELIUS_MAX_BATCH_SIZE | 20 | JSON-RPC バッチ処理の上限 |
HELIUS_BATCH_WINDOW_MS | 4 | リクエストをまとめる時間枠 |
HELIUS_HTTP2 | true | 無効にすると HTTP/1.1 を強制します |
HELIUS_TIMEOUT_MS | 30000 | リクエストごとのタイムアウト |
HELIUS_MAX_RETRIES | 6 | 単一リクエスト(バッチ処理ではない)の再試行回数 |
HELIUS_CACHE_ENTRIES | 20000 | LRU 容量 |
COIN_SCOUT_MAX_TRACE_NODES | 400 | trace_funds のグラフサイズのハード上限 |
COIN_SCOUT_MAX_PAGES | 20 | ページネーションループのハード上限 |
COIN_SCOUT_CASES_DIR | ~/.coin-scout/cases | ケースファイルの保存先 |
COIN_SCOUT_ENV_FILE | ./.env、次にサーバーファイルの1つ上のディレクトリ | .env のパスを明示的に指定します |
PORT | 8787 | HTTP エントリーポイント専用 |
データとプライバシー
すべての処理はお使いのマシン上で実行されます。外部に送信される情報:
- Helius は、クエリ対象のアドレス、署名、ミント、および API キーを受け取ります。
- DefiLlama は、
usdAtTime価格の取得に使用するミントアドレスとタイムスタンプを受け取ります。 - WormholeScan、deBridge、Mayan、Circle は、ブリッジ間の移動が解決される際にトランザクション署名を受け取ります。
- DexScreener は、
detect_wash_tradingがトークンのプールを検索する際にミントアドレスを受け取ります。 - EVM チェーン上で資金を追跡する際、Blockscout、または
ETHERSCAN_API_KEYが設定されている場合は Etherscan が EVM アドレスを受け取ります。
API キーを受け取るのは Helius と Etherscan のみで、それぞれ自社の API キーだけです。ケースファイルはケースディレクトリ内に保存されます。
精度に関する注意事項
- 分析ツールは直近の履歴をサンプリングします。結果に
truncatedまたはsampleTruncatedが含まれる場合、件数は下限値です。より広範囲を調べるにはtransferSampleを増やしてください。 - 現在の USD 値は Helius の価格情報、
usdAtTimeの値は DefiLlama の過去の価格情報に基づいています。どちらも活発に取引されているトークンのみが対象です。価格がない場合は、不明であり、ゼロではありません。 wallet_pnlが把握できるのは、サンプル内のスワップで確認できる内容のみです。転送によって届いたトークンやサンプルより前に届いたトークンには取得原価がないため、売却分は実現損益ではなくunmatchedProceedsUsdとして報告されます。find_clusterは、起点から資金提供者を1つさかのぼって調べます。さらに調べるには、有力なメンバーを起点に再度実行してください。- ブリッジの解決は、Wormhole、deBridge、Mayan、Circle CCTP に対応しています。deBridge と CCTP は送出方向のみ追跡できます。サーバーが認識しないチェーンは、生のチェーン ID で表示されます。
- 組み込みの取引所ラベルは、2026年11月1日時点の OKX のプルーフ・オブ・リザーブのスナップショットに基づき、
scripts/okx-labels.tsで再生成されています。入金アドレスとホットウォレットのラベルはスイープのパターンから推定され、その旨がconfidenceとsourceに記載されています。 detect_wash_tradingはプールへのトークン転送とプールからのトークン転送を読み取るため、流動性の追加と解除も取引としてカウントされます。また、ほかのプログラムアカウントを経由したボリュームはroutedVolumeとして別途報告されます。同一スロットでの売買も、サンドイッチボットや裁定取引ボットによく見られる動きです。analyze_tokenは最大1000個のトークンアカウントをスキャンします。holderAccountsExactは、保有者数が実際の合計か下限値かを示します。所有者がプログラムまたはプログラム派生アドレスである保有者にはisProgramOwnedのフラグが付与されます。集中度の数値には引き続き含まれ、保有供給量はprogramControlledPctで示されます。- リスクフラグとスコアは、優先順位付けのためのヒューリスティックです。適切なトランザクションに調査の目を向けるためのものであり、最終判断ではありません。
コントリビューションとセキュリティ
開発環境のセットアップと CI で実行されるチェックについては、CONTRIBUTING.md を参照してください。脆弱性は SECURITY.md の説明に従って非公開で報告してください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。