zinja-coder/jadx-mcp-server
MCP server for JADX-AI Plugin
JADX‑MCP‑SERVER とは何か?
JADX‑MCP‑SERVER は、ローカル LLM(例:Claude Desktop)と JADX デコンパイラ GUI の間で動作する小さな Python サービスです。これは Model Context Protocol (MCP) を実装しています。MCP は、LLM がデコンパイラに Android APK に関する情報を要求したり、デコンパイラに変更を指示したり(変数名の変更、コメントの追加など)できるようにする、シンプルなリクエスト/レスポンスプロトコルです。
このサーバーは、JADX‑AI‑MCP と呼ばれるコンパニオンプラグイン(JADX GUI 内にインストール)と通信します。プラグインはサーバーからの HTTP 呼び出しを受け取り、JADX 内で要求された操作を実行し、結果を返します。LLM の視点から見ると、チェーン全体は、OpenAI スタイルの関数呼び出しを介して呼び出せる ツール のセットのように見えます。
コア機能(README に記載されている通り)
| 機能 | 説明 |
|---|---|
| ライブ逆コンパイルアクセス | 現在選択されているクラス、任意のクラスのソース、メソッド、smali、AndroidManifest、リソースなどを取得します。 |
| 検索ユーティリティ | キーワードでクラス、メソッド、フィールドを検索し、すべてのクラスを一覧表示し、クラスのメソッドを一覧表示し、結果をページングします。 |
| コード編集ヘルパー | 変数名を変更し、JADX GUI に表示され、プロジェクトに保存されるコメントを追加または削除します。 |
| デバッグ統合 | JADX デバッガーからスタックフレーム、スレッド、変数値を取得します。 |
| 相互参照クエリ | クラス、メソッド、フィールドの X‑refs(誰が何を呼び出すか)を取得します。 |
| LLM フレンドリーな出力 | slim=True などのオプションで Kotlin メタデータを削除し、ペイロードを小さく保ちます。行番号フラグは、モデルが正確な行を参照するのに役立ちます。 |
| OpenAI 互換クライアント | サンプルの examples/openai_compatible_client.py が MCP ツールリストを OpenAI 関数呼び出しスキーマに変換するため、OpenAI チャット API を話す任意のモデルがこのサーバーを使用できます。 |
| 設定可能なネットワーキング | MCP サーバーのホスト/ポート(--host、--port)と JADX プラグインのホスト/ポート(--jadx-host、--jadx-port)を指定できます。簡単なローカルテスト用にプレーン HTTP(--http)をサポートしています。 |
| セキュリティ警告 | README は、サーバーを 0.0.0.0 に公開すると、すべてのツールへの認証なしのネットワークアクセスが可能になることを明示的に警告しています。 |
仕組み – 高レベルのフロー
- LLM クライアント(Claude、Ollama、OpenAI など)が Model Context Protocol を使用して MCP サーバーにリクエストを送信します。
- サーバーはリクエストを JADX GUI 内で実行されている JADX‑AI‑MCP プラグインに HTTP 呼び出しとして転送します。
- プラグインは要求された操作(例:
fetch_current_class、rename_variable)を実行します。 - 結果はサーバーに返され、サーバーはそれらをツール応答としてフォーマットし、LLM に返します。
- LLM は別のツールを呼び出すか、コードを変更するか、最終的な回答を生成するかを決定できます。
はじめに(クイックステップ)
# 1. uv(または pip)で Python 依存関係をインストールします
uv sync # または: pip install -r requirements.txt
# 2. サーバーを実行します(デフォルトポート 8651 → LLM、8650 → JADX プラグイン)
uv run jadx_mcp_server.py --http
JADX‑AI‑MCP プラグインを備えた JADX GUI が同じマシンにある場合、追加のフラグは必要ありません。
サーバーを他のマシン(例:Docker、WSL)に公開するには、次を使用します:
uv run jadx_mcp_server.py --http --host 0.0.0.0
⚠️ README は、これによりサーバーがネットワーク上の誰にでも公開されることを強調しています。ファイアウォールまたは SSH トンネルを使用してください。
OpenAI 互換モデルでの使用例
pip install -r examples/requirements.txt # openai SDK をインストール
# 単発のクエリ
OPENAI_API_KEY=sk-... python examples/openai_compatible_client.py \
--prompt "What permissions does com.example.app need?"
クライアントはプロンプトを一連の MCP ツール呼び出しに変換し、サーバーを介して AndroidManifest を取得し、簡潔な回答を返します。
誰がこれを役立つと感じるか?
- セキュリティ研究者: LLM を使用して APK の脆弱性ハンティングを自動化したい人。
- リバースエンジニアリング愛好家: 「デコンパイラとチャット」体験を求めている人。
- ツールビルダー: LLM と既存の Android 分析ツールの間のプログラムによるブリッジを必要とする人。
ロードマップ(記載されている通り)
- apktool のサポートを追加(済み)。
- Hermes(React‑Native)コード処理を追加。
- Docker パッケージング。
- より多くの MCP ツールとプロンプトテンプレート。
- 完全なローカル LLM クライアント。
- 究極の目標: あらゆる Android RE ツールを駆動できる単一の MCP サーバー。
評価
このリポジトリは、大規模言語モデルと Android リバースエンジニアリングツールの間の橋渡しを構築する本格的なソフトウェアプロジェクトです。これは間違いなく AI 支援ツールの領域にあり、off_topic = false です。
上記のすべての情報は README から直接取得したものであり、外部の仮定は追加されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト