mcpField
R
Radare2 MCP Server

Radare2 MCP Server

ローカル
github.comセキュリティ3352 週間前に更新

Radare2 MCP Server について

Radare2 MCP Server は、radare2 のバイナリ解析を AI エージェントから利用できるようにする MCP サーバーです。C 言語で記述され、r2 のネイティブ API を直接呼び出します。コマンドライン、r2 コアプラグイン、MCP サーバーとして動作し、リバースエンジニアやセキュリティ研究者を想定しています。

主な機能

  1. 01r2 ネイティブ API を用いた C 言語実装
  2. 02コマンドライン、r2 プラグイン、MCP サーバーの各モード
  3. 03r2pipe によるローカルおよびリモートの r2/iaito セッション接続
  4. 04読み取り専用モード、サンドボックス固定、ツール制限
  5. 05X-Session-ID による多重化と Bearer 認証を備えた HTTP モード
  6. 06任意の r2 コマンドおよび r2js スクリプトの実行

活用シーン

  1. 01AI エージェントによるバイナリ構造と関数の解析支援
  2. 02読み込み済みの r2 セッションを MCP ツール経由で操作
  3. 03SQL で関数サイズなどの解析結果を照会

MCP 対応

本プロジェクトは MCP サーバーであり、open_file、analyze、sql などの radare2 解析ツールを stdio または HTTP 経由で MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"radare2-mcp-radareorg": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Radare2 MCP サーバー

ci radare2

r2mcp logo

OpenCode、Mai、VSCode、Claude、CLION などの AI エージェントで radare2 を使用するための MCP サーバーです。

特長

この実装には、次の特長があります。

  • 💻 ネイティブの r2 API を使用して C で完全に記述されています
  • 🧩 CLI、r2 プラグイン、MCP サーバーとして動作します
  • 🔍 radare2 によるシームレスなバイナリ解析
  • 🔗 r2pipe 経由で、ローカルまたはリモートの任意の r2/iaito セッションに接続できます
  • 🔒 読み取り専用モード、サンドボックスロック、ツールの制限に対応しています
  • 🔩 詳細なツール設定
  • 🔁 stdin/stdout による直接通信モデル
  • 🌐 オプションの X-Session-ID 多重化に対応した HTTP MCP サーバーモード
  • 🛠️ r2 コマンドまたは r2js スクリプトを実行するためのオプションの生アクセス

インストール

Screenshot_2025-03-22_at_5 34 47_PM Screenshot_2025-03-22_at_5 36 17_PM
r2pm を使用する

パッケージをインストールする最も簡単な方法は、r2pm を使用することです。

$ r2pm -Uci r2mcp

r2mcp 実行ファイルは、ホームディレクトリにある r2pm の bindir にコピーされます。ただし、このバイナリをシェルから直接実行することは想定されていません。選択した言語モデルの MCP サービスハンドラーから起動した場合にのみ動作します。

$ r2pm -r r2mcp

これは一般的な mcpServer JSON 設定ファイルです。

{
  "mcpServers": {
    "radare2": {
      "command": "r2pm",
      "args": ["-r", "r2mcp"]
    }
  }
}
Codex

codex プラグインをインストールするには、次のコマンドを実行してください。

make codex-plugin-install

ホームディレクトリに個人用マーケットプレイスが作成され、dist/codex-plugin 内のファイルがコピーされます。

Docker を使用する

別の方法として、Docker イメージをビルドできます。

docker build -t r2mcp .

MCP クライアントの設定ファイル(以下を参照)を更新し、次の Docker イメージを使用するように設定してください。

  • "command": "docker"
  • "args": ["run", "--rm", "-i", "-v", "/tmp/data:/data", "r2mcp"].

設定

HTTP サーバーモード

-H [address:]port を使用すると、stdin/stdout の代わりに r2mcp を HTTP MCP サーバーとして実行できます。ポートのみを指定した場合は 127.0.0.1 のみにバインドされます。サーバーにネットワーク経由でアクセスできるようにするには、明示的に 0.0.0.0:port を指定してください。

r2mcp -H 8765
# Public binding; protect this with -a <token> or -A.
r2mcp -H 0.0.0.0:8765 -A

-X max[:idle_seconds] を使用すると、セッションごとの HTTP 状態が有効になり、X-Session-ID リクエストヘッダーによってルーティングされます。

r2mcp -H 8765 -X 8:600

HTTP ベアラー認証は -a <token> で有効になります。クライアントはすべての GET および POST リクエストで Authorization: Bearer <token> を送信する必要があります。

r2mcp -H 8765 -a my-secret-token

-A または -a random を使用すると、起動時にランダムなトークンが生成されます。生成されたトークンは stderr に一度だけ出力されます。

r2mcp -H 8765 -A

同じトークン設定は R2MCP_AUTH_TOKEN でも指定できます。ランダムなトークンを生成するには、値を random に設定します。

-X を使用するには、radare2 ABI 91 以降が必要です。それ以前の radare2 ヘッダーでは HTTP リクエストヘッダー API が公開されていないためです。古い ABI でも -H は単一の共有 HTTP サーバーとして動作しますが、-X は無視されます。ベアラー認証にもこのヘッダー API が必要です。

r2 コアプラグインモード

r2 コアプラグインは、既存の radare2 セッション内で r2mcp コマンドを公開します。r2 から HTTP モードを起動すると、現在の RCore を再利用するため、MCP ツールはそのセッションですでに読み込まれているファイルと解析状態を操作できます。

r2 -e r2mcp.port=8765 -c 'r2mcp start' /bin/ls

便利なサブコマンド:

  • r2mcp start または r2mcp http は、HTTP MCP サーバーをバックグラウンドで起動します。
  • r2mcp stop、r2mcp restart、r2mcp status は、バックグラウンドサーバーを管理します。
  • r2mcp logs on|off と r2mcp logs file <path> は、プラグインのデバッグログを制御します。
  • r2mcp approve on|off と r2mcp approve url <url> は、スーパーバイザーの承認を制御します。
  • r2mcp yolo on|off は承認を無効にし、危険な実行ツールを公開します。
  • r2mcp config は、r2mcp.* eval キーを一覧表示します。

このプラグインは、CLI で公開されている同じサーバーオプションの eval キーを登録します: r2mcp.port、r2mcp.log、r2mcp.logfile、r2mcp.auth、r2mcp.approve、r2mcp.svc、 r2mcp.yolo、r2mcp.mini、r2mcp.permissive、r2mcp.run、 r2mcp.readonly、r2mcp.ignore_analysis、r2mcp.prompts、 r2mcp.prompts.dir、r2mcp.sandbox、r2mcp.sandbox.grain、 r2mcp.content、r2mcp.enabled、r2mcp.disabled、 r2mcp.session_tools、r2mcp.sessions、r2mcp.sessions.max、 r2mcp.sessions.timeout、r2mcp.decompiler、r2mcp.baseurl。

プラグインを -i で手動読み込みする場合は、プラグインの読み込み後にこれらのキーを設定してください。たとえば -c 'e r2mcp.port=8765' を使用します。radare2 はアドホックなプラグイン初期化より前に、初期の -e オプションを処理するためです。

r2xsql を使った SQL

r2mcp が使用するものと同じ radare2 ビルド用の r2xsql コアプラグインをインストールしてください。ローカルモードでは、-r を指定しなくても sql ツールを利用できます。open_file、analyze、sql を、次のような引数で呼び出します:

{"query":"SELECT name, size FROM funcs WHERE size > 100 ORDER BY size DESC LIMIT 10"}

sql ツールは、1つのステートメントを読み込まれた SQL コアプラグインに直接渡し、SQL 演算子と引用符で囲まれたテキストをそのまま保持します。結果はプラグインのテキスト出力です。SQL による書き込みをサポートしているため、読み取り専用モード(-R)では除外されます。ローカルの r2mcp サーバーまたは r2mcp のコアプラグインで使用してください。リモートの r2 HTTP クライアントモード(-u)では、このツールは公開されません。

インストール済みのプラグインは自動的に読み込まれます。ビルドを明示的に読み込むには、r2mcp コマンドに -c 'L /absolute/path/core_r2xsql.so' を追加します。起動コマンドは MCP リクエストまたは -T テストの前に順番に実行され、その出力は MCP 用の stdout を有効に保つために破棄されます。macOS/Windows では、実際のプラグインファイル名を使用してください。

Claude Desktop との統合

Claude Desktop アプリで CMD + , を押して、開発者設定を開きます。以下の説明に従って設定ファイルを編集し、JSON ファイルの編集後にクライアントを再起動してください:

  1. Claude Desktop の設定ファイルを探します:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 設定ファイルに以下を追加します:

{
  "mcpServers": {
    "radare2": {
      "command": "r2pm",
      "args": ["-r", "r2mcp"]
    }
  }
}

VS Code との統合

ユーザー設定に追加することで、Visual Studio Code の GitHub Copilot Chat で r2mcp を使用できます(その他の方法はこちらを参照してください):

  1. macOS では CMD + Shift + P、Windows/Linux では Ctrl + Shift + P を押して、コマンドパレットを開きます。
  2. Copilot: Open User Configuration を検索して選択します(macOS では通常 ~/Library/Application Support/Code/User/mcp.json にあります)。
  3. 設定ファイルに以下を追加します:
{
  "servers": {
    "radare2": {
      "type": "stdio",
      "command": "r2pm",
      "args": ["-r", "r2mcp"]
    }
  },
  "inputs": []
}

Zed との統合

設定に追加することで、Zed でも r2mcp を使用できます:

  1. コマンドパレットを開きます:macOS では CMD + Shift + P、Windows/Linux では Ctrl + Shift + P を押します。
  2. agent: open configuration を検索するか、settings を検索します。
  3. 次のようにサーバーを追加します:
  "context_servers": {
    "r2-mcp-server": {
      "source": "custom",
      "command": "r2pm",
      "args": ["-r", "r2mcp"],
      "env": {}
    }
  }

注:使用するには、Claude、Gemini などの別の LLM エージェントが必要です。

開発者向け

ソースからビルド
Linux/macOS

サーバーをローカルでテストするには、make でビルドしてインストールできます。

make install

これにより、サーバーがコンパイルされ、macOS では r2mcp バイナリが /usr/local/bin に配置されます。

Windows

Windows では、CI と同じように meson と ninja を使用してください。

meson b
ninja -C b

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。