
Slither を使用して Solidity スマートコントラクトに静的解析機能を提供する Model Context Protocol (MCP) サーバーです。
この MCP サーバーは Slither の静的解析機能をラップし、Model Context Protocol を通じてアクセス可能にします。Solidity プロジェクト(Foundry、Hardhat など)を解析し、コントラクト、関数、継承階層などに関する包括的なメタデータを生成できます。
また、Slither MCP を、他のユースケース向けの使いやすい Slither API として使用することもできます。
{$PROJECT_PATH}/artifacts/project_facts.json にキャッシュされ、以降の読み込みが高速化されます。これは v1.0 リリースですが、さらなるフィードバックを受けて API が変更される可能性があります。
このプロジェクトはパッケージ管理に UV を使用しています:
# Install dependencies
uv sync
# Or install in development mode
uv pip install -e .
Slither MCP サーバーを起動します:
uv run slither-mcp
すべてのツールは、解析対象の Solidity プロジェクトを指定する path パラメータを受け取ります。プロジェクトは <path>/artifacts/project_facts.json に自動的にキャッシュされ、以降のクエリを高速化します。
claude mcp add --transport stdio --scope user slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp
sudo ln -s ~/.local/bin/uvx /usr/local/bin/uvx を使用して、uvx が Cursor の PATH に含まれるようにしてください。
~/.cursor/mcp.json に以下を記述します:
{
"mcpServers": {
"slither-mcp": {
"command": "uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp",
}
}
}
Slither MCP には、LLM が各ツールをどの程度の頻度で使用し、どの程度の成功率で呼び出しているかを把握することで信頼性の向上に役立てる、オプトアウト方式のメトリクスが含まれています。メトリクスはデフォルトで有効ですが、完全に無効にすることもできます。
収集しないもの: ツール呼び出しパラメータ、コントラクトの詳細、関数名、プロジェクト固有の情報は一切収集しません。
完全にオプトアウトするには:
uv run slither-mcp --disable-metrics
詳細については、METRICS.md を参照してください。
このサーバーは、コントラクトと関数の情報を照会するためのツールを公開しています。すべてのツールは、解析対象の Solidity プロジェクトディレクトリを指定する path パラメータを受け取ります。
list_contracts - フィルタ付きでコントラクトを一覧表示必須: path(プロジェクトディレクトリ)
タイプ(concrete、abstract、interface、library)またはパスパターンでコントラクトをフィルタリングします。
get_contract - 詳細なコントラクト情報を取得関数、継承、フラグを含む完全なコントラクトメタデータを取得します。
get_contract_source - コントラクトのソースコードを取得指定したコントラクトを含む Solidity ファイルの完全なソースコードを返します。
get_function_source - 関数のソースコードを取得特定の関数のソースコードを行番号付きで返します。集中した解析に役立ちます。
list_functions - フィルタ付きで関数を一覧表示コントラクト、可視性、または修飾子で関数をフィルタリングします。
function_callees - 関数の呼び出し関係を取得関数の内部、外部、ライブラリ呼び出し先を、低レベル呼び出しの検出を含めて返します。
function_callers - ターゲット関数を呼び出す関数を取得指定したターゲット関数を呼び出すすべての関数を、呼び出しタイプ(内部、外部、ライブラリ)ごとにグループ化して返します。これは function_callees の逆です。
get_inherited_contracts - コントラクトの継承を取得コントラクトが継承するすべてのコントラクト(親と祖先)の再帰ツリーを返します。
get_derived_contracts - このコントラクトを継承するコントラクトを取得コントラクトを継承するすべてのコントラクト(子と子孫)の再帰ツリーを返します。
list_function_implementations - 関数の実装を検索複数のコントラクトにわたって、関数シグネチャのすべての実装を検索します。
list_detectors - 利用可能な Slither ディテクタを一覧表示Slither ディテクタに関するメタデータ(名前、説明、影響レベル、信頼度評価)を返します。名前または説明によるフィルタリングをサポートします。
run_detectors - フィルタリング付きでディテクタ結果を取得キャッシュされたディテクタ結果を返します。ディテクタ名、影響レベル(High、Medium、Low、Informational)、または信頼度レベル(High、Medium、Low)でフィルタリングできます。
すべてのツールは、success ブール値と、データフィールドまたは error_message のいずれかを含むレスポンスを返します。詳細なスキーマと使用方法については、slither_mcp/tools/ 内の各ツールの実装を参照してください。
slither-mcp パッケージには、Slither MCP サーバーとプログラム的にやり取りするための型付き Python クライアント(SlitherMCPClient)が含まれています。これは、Solidity プロジェクトを照会する必要があるツール、スクリプト、またはエージェントを構築する際に役立ちます。
このクライアントが提供するもの:
詳細な使用例とドキュメントについては、CLIENT_USAGE.md を参照してください。
コミット前にリンティングを実行するための pre-commit フックをインストールします:
pre-commit install
uv run pytest