
jadx-ai-mcp V6.4.1
Плагин для JADX для интеграции MCP-сервера
JADX-AI-MCP (Часть Zin MCP Suite)
⚡ Полностью автоматизированный MCP-сервер + плагин JADX, созданный для общения с LLM через MCP для анализа Android APK с помощью LLM, таких как Claude, — выявляйте уязвимости, анализируйте APK и выполняйте реверс-инжиниринг без усилий.
⭐ Авторы
Спасибо этим замечательным людям за их вклад ⭐
Читайте документацию
- Read The Docs теперь доступна: https://jadx-ai-mcp.readthedocs.io/en/latest/
🤖 Что такое JADX-AI-MCP?
JADX-AI-MCP — это плагин для декомпилятора JADX, который напрямую интегрируется с Model Context Protocol (MCP) и обеспечивает поддержку реверс-инжиниринга в реальном времени с помощью LLM, таких как Claude.
Представьте: «Декомпиляция → Контекстно-зависимое ревью кода → Рекомендации ИИ» — всё в реальном времени.
Общая диаграмма последовательности```mermaid
sequenceDiagram LLM CLIENT->>JADX MCP SERVER: INVOKE MCP TOOL JADX MCP SERVER->>JADX AI MCP PLUGIN: INVOKE HTTP REQUEST JADX AI MCP PLUGIN->>REQUEST HANDLERS: INVOKE HTTP REQUEST HANDLER REQUEST HANDLERS->>JADX GUI: PERFORM ACTION/GATHER DATA JADX GUI->>REQUEST HANDLERS: ACTION PERFORMED/DATA GATHERED REQUEST HANDLERS->>JADX AI MCP PLUGIN: CRAFT HTTP RESPONSE JADX AI MCP PLUGIN->>JADX MCP SERVER:HTTP RESPONSE JADX MCP SERVER->>LLM CLIENT: MCP TOOL RESULT
### Смотрите демо!
- **Выполните быстрый анализ**
https://github.com/user-attachments/assets/b65c3041-fde3-4803-8d99-45ca77dbe30a
- **Быстро находите уязвимости**
https://github.com/user-attachments/assets/c184afae-3713-4bc0-a1d0-546c1f4eb57f
- **Поддержка нескольких ИИ-агентов**
https://github.com/user-attachments/assets/6342ea0f-fa8f-44e6-9b3a-4ceb8919a5b0
- **Запускайте со своим любимым LLM-клиентом**
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
- **Анализируйте ресурсы APK**
https://github.com/user-attachments/assets/f42d8072-0e3e-4f03-93ea-121af4e66eb1
- **Ваш ИИ-ассистент при отладке APK с помощью JADX**
https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec
Это комбинация двух инструментов:
1. JADX-AI-MCP
2. [JADX MCP SERVER](https://github.com/zinja-coder/jadx-mcp-server)
## 🤖 Что такое JADX-MCP-SERVER?
**JADX MCP Server** — это автономный Python-сервер, который взаимодействует с плагином `JADX-AI-MCP` (см.: [jadx-ai-mcp](https://github.com/zinja-coder/jadx-ai-mcp)) через MCP (Model Context Protocol). Он позволяет LLM взаимодействовать с декомпилированным контекстом Android-приложения в реальном времени.
---
## Другие проекты в составе Zin MCP Suite
- **[APKTool-MCP-Server](https://github.com/zinja-coder/apktool-mcp-server)**
- **[JADX-MCP-Server](https://github.com/zinja-coder/jadx-mcp-server)**
- **[ZIN-MCP-Client](https://github.com/zinja-coder/zin-mcp-client)**
## Текущие MCP-инструменты
Доступны следующие MCP-инструменты:
- `fetch_current_class()` — получить имя класса и полный исходный код выбранного класса
- `get_selected_text()` — получить текущий выделенный текст
- `get_all_classes()` — перечислить все классы в проекте
- `get_class_source()` — получить полный исходный код указанного класса
- `get_method_by_name()` — получить исходный код метода по имени
- `search_method_by_name()` — искать метод по классам
- `search_classes_by_keyword()` — искать классы, исходный код которых содержит определённое ключевое слово (поддерживается постраничная навигация)
- `get_methods_of_class()` — перечислить методы класса
- `get_fields_of_class()` — перечислить поля класса
- `get_smali_of_class()` — получить smali-код класса
- `get_main_activity_class()` — получить главную activity из jadx, указанную в файле AndroidManifest.xml.
- `get_main_application_classes_code()` — получить код всех основных классов приложения на основе имени пакета, определённого в AndroidManifest.xml.
- `get_main_application_classes_names()` — получить имена всех основных классов приложения на основе имени пакета, определённого в AndroidManifest.xml.
- `get_android_manifest()` — извлечь и вернуть содержимое AndroidManifest.xml.
- `get_manifest_component` - извлечь конкретный компонент манифеста вместо всего файла манифеста
- `get_strings()` : получает файл strings.xml
- `get_all_resource_file_names()` : получить имена всех файлов ресурсов, существующих в приложении
- `get_resource_file()` : получить содержимое файла ресурсов
- `rename_class()` : переименовывает класс
- `rename_method()` : переименовывает метод
- `rename_field()` : переименовывает поле
- `rename_package()` : переименовывает весь пакет
- `rename_variable()` : переименовывает переменную внутри метода
- `debug_get_stack_frames()` : получить стек-фреймы из отладчика jadx
- `debug_get_threads()` : получить информацию о потоках из отладчика jadx
- `debug_get_variables()` : получить переменные из отладчика jadx
- `xrefs_to_class()` : найти все ссылки на класс (возвращает ссылки на уровне методов и классов, поддерживается постраничная навигация)
- `xrefs_to_method()` : найти все ссылки на метод (включая методы, связанные с переопределением, поддерживается постраничная навигация)
- `xrefs_to_field()` : найти все ссылки на поле (возвращает методы, обращающиеся к полю, поддерживается постраничная навигация)
---
## 🗒️ Примеры запросов
🔍 Базовое понимание кода
"Объясни, что делает этот класс, в одном абзаце."
"Обобщи обязанности этого метода."
"Есть ли в этом классе какая-либо обфускация?"
"Перечисли все разрешения Android, которые могут потребоваться этому классу."
🛡️ Обнаружение уязвимостей
"Есть ли в этом методе небезопасные использования API?"
"Проверь этот класс на наличие захардкоженных секретов или учётных данных."
"Проводит ли этот метод санитизацию пользовательского ввода перед его использованием?"
"Какие уязвимости безопасности может внести этот код?"
🛠️ Помощники по обратной разработке
"Деобфусцируй и переименуй классы и методы в читаемые названия."
"Можешь предположить изначальное назначение этого smali-метода?"
"Частью каких библиотек или SDK выглядит этот класс?"
"Скажи, какие классы содержат код, связанный с 'encryption'?"
📦 Статический анализ
"Перечисли все сетевые вызовы API в этом классе."
"Определи операции файлового ввода/вывода и их потенциальные риски."
"Утекает ли этот метод информация об устройстве или PII?"
🤖 Модификация кода с помощью ИИ
"Рефактори этот метод, чтобы улучшить читаемость."
"Добавь комментарии к этому коду, объясняющие каждый шаг."
"Перепиши этот Java-метод на Python для анализа."
📄 Документация и метаданные
"Сгенерируй Javadoc-комментарии для всех методов."
"К какому пакету или компоненту приложения, вероятнее всего, относится этот класс?"
"Можешь определить тип компонента Android (Activity, Service и т. д.)?"
🐞 Ассистент отладчика```
"Fetch stack frames, varirables and threads from debugger and provide summary"
"Based the stack frames from debugger, explain the execution flow of the application"
"Based on the state of variables, is there security threat?"
🛠️ Начало работы
1. Скачайте из раздела Releases: https://github.com/zinja-coder/jadx-ai-mcp/releases
[!NOTE]
Скачайте оба файла:
jadx-ai-mcp-<version>.jarиjadx-mcp-server-<version>.zip.```bash
0. Download the jadx-ai-mcp-.jar and jadx-mcp-server-.zip
https://github.com/zinja-coder/jadx-ai-mcp/releases
1.
unzip jadx-ai-mcp-.zip
├jadx-mcp-server/ ├── jadx_mcp.py ├── requirements.txt ├── README.md ├── LICENSE
├jadx-ai-mcp-.jar
2. Install the plugin
For this you can follow two approaches:
1. One liner - execute below command in your shell
jadx plugins --install "github:zinja-coder:jadx-ai-mcp"
The above one line code will install the latest version of the plugin directly into the jadx, no need to download the jadx-ai-mcp's .jar file.
2. Or you can use JADX-GUI to install it by following images as shown below:
<div align="center">
<img alt="banner" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/1c2660639daf7352d2bdeafeb7b5e0846e3c0bed45846ee52256b7bf3d316386.png">
</div>
<div align="center">
<img alt="banner" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/ccc2cc3566566517abad1097711afad3c668a999dc105d82686c4ffb791eba3b.png">
</div>
<div align="center">
<img alt="banner" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/0f9770bc38f4234826a661e6d37bc205a801ad38380363fd4394a903bd35ff94.png">
</div>```bash
## 3. GUI method, download the .jar file and follow below steps shown in images
```bash
3. Navigate to jadx-mcp-server directory
cd jadx-mcp-server
4. This project uses uv - https://github.com/astral-sh/uv instead of pip for dependency management.
## a. Install uv (if you dont have it yet)
curl -LsSf https://astral.sh/uv/install.sh | sh ## b. OPTIONAL, if for any reasons, you get dependecy errors in jadx-mcp-server, Set up the environment uv venv source .venv/bin/activate # or .venv\Scripts\activate on Windows ## c. OPTIONAL Install dependencies uv pip install httpx fastmcp
The setup for jadx-ai-mcp and jadx_mcp_server is done.
## 🤖 2. Использование Claude Desktop
Убедитесь, что Claude Desktop запущен с включённым MCP.
Например, я использовал следующее для Kali Linux: https://github.com/aaddrick/claude-desktop-debian
Настройте и добавьте MCP-сервер в файл LLM:```bash
nano ~/.config/Claude/claude_desktop_config.json
Для:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
И следующее содержимое в нём:```json { "mcpServers": { "jadx-mcp-server": { "command": "///uv", "args": [ "--directory", "</PATH/TO/>jadx-mcp-server/", "run", "jadx_mcp_server.py" ] } } }
Замените:
- `path/to/uv` на фактический путь к вашему исполняемому файлу `uv`
- `path/to/jadx-mcp-server` на абсолютный путь к месту, куда вы клонировали этот
репозиторий
Затем перемещайтесь по коду и взаимодействуйте через запросы на ревью кода в реальном времени с помощью встроенной интеграции.
**ИЛИ**
или вы можете установить jadx_mcp_server напрямую как исполняемый файл, используя приведённую ниже команду:```
uv tool install git+https://github.com/zinja-coder/jadx-mcp-server
и затем вы можете просто указать jadx_mcp_server в разделе command конфигурации MCP.
3. Использование Cherry Studio
Если вы хотите настроить инструмент MCP в Cherry Studio, вы можете обратиться к следующей конфигурации.
- Type: stdio
- command: uv
- argument:```bash --directory path/to/jadx-mcp-server run jadx_mcp_server.py
- `path/to/jadx-mcp-server` с абсолютным путём к месту, куда вы склонировали этот
репозиторий
## 4. Использование LMStudio
Вы также можете использовать JADX AI MCP Server с LM Studio, настроив его файл mcp.json. Вот видеоинструкция.
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
## 5. Запуск в режиме HTTP Stream
Вы также можете использовать Jadx в режиме HTTP Stream с помощью опции `--http` с `jadx_mcp_server.py`, как показано ниже:```bash
uv run jadx_mcp_server.py --http
OR
uv run jadx_mcp_server.py --http --port 9999
Расширенные параметры CLI — Понимание флагов
Существуют два отдельных соединения, и у каждого есть свои хост/порт:``` ┌─────────────┐ --host / --port ┌──────────────────┐ --jadx-host / --jadx-port ┌──────────────────┐ │ LLM Client │ ◄──────────────────► │ jadx-mcp-server │ ──────────────────────────► │ JADX-GUI Plugin │ │ (Claude, │ Where the MCP server │ │ Where the MCP server looks │ (jadx-ai-mcp) │ │ Codex..) │ LISTENS for clients │ │ for the JADX plugin │ │ └─────────────┘ └──────────────────┘ └──────────────────┘
| Flag | По умолчанию | Управляет |
|------|---------|----------|
| `--http` | off | Использовать HTTP-транспорт вместо stdio |
| `--host` | `127.0.0.1` | **Где прослушивает MCP-сервер** (адрес привязки для LLM-клиентов) |
| `--port` | `8651` | **На каком порту прослушивает MCP-сервер** |
| `--jadx-host` | `127.0.0.1` | **Где найти плагин JADX** (целевая машина JADX-GUI) |
| `--jadx-port` | `8650` | **На каком порту работает плагин JADX** |
### Примеры использования
**Сценарий 1 — Всё на одной машине (самый распространённый):**```bash
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
Сценарий 2 — контейнер Docker или WSL (MCP-сервер доступен из сети хоста):```bash
MCP server listens on ALL interfaces so the host can reach it
JADX plugin is still on the same machine
uv run jadx_mcp_server.py --http --host 0.0.0.0
**Сценарий 3 — JADX-GUI, запущенный на другой машине (например, на удалённой виртуальной машине):**```bash
# MCP server runs locally, but connects to JADX plugin on a remote machine
uv run jadx_mcp_server.py --http --jadx-host 192.168.1.100
Сценарий 4 — Полностью удалённая настройка (всё на разных машинах):```bash
MCP server listens on all interfaces on port 9999
JADX plugin is on a different machine at 192.168.1.100:8652
uv run jadx_mcp_server.py --http --host 0.0.0.0 --port 9999 --jadx-host 192.168.1.100 --jadx-port 8652
> [!CAUTION]
> ### ⚠️ Предупреждение безопасности — удалённая привязка
>
> При использовании `--host 0.0.0.0` (или любого адреса, кроме localhost) сервер MCP привязывается ко **всем сетевым интерфейсам** через **обычный HTTP без аутентификации**. Это означает:
>
> - **Любой в сети** может подключиться и вызывать все инструменты MCP
> - **Нет TLS-шифрования** — трафик может быть перехвачен
> - Злоумышленник может использовать сервер для **чтения декомпилированного кода**, **переименования классов/методов** и **доступа к отладочной информации**
>
> **Меры предосторожности:**
> - Привязывайте `0.0.0.0` только в **доверенных изолированных сетях** (например, мост Docker, локальная ВМ)
> - Используйте **брандмауэр** для ограничения доступа к порту MCP
> - Вместо этого рассмотрите **SSH-туннель**: `ssh -L 8651:127.0.0.1:8651 remote-host`
### Совместимость со stdio-режимом
> [!NOTE]
> При работе в режиме **stdio** (по умолчанию, без `--http`) весь человекочитаемый вывод (баннер, проверка состояния) записывается в **stderr**, чтобы **stdout** оставался зарезервированным для потока MCP JSON-RPC. Это обеспечивает совместимость с Codex, Claude Desktop и другими stdio-клиентами MCP.
## 6. Настройка пользовательского порта и хоста для JADX AI MCP Plugin
<img width="800" height="335" alt="image" src="https://assets.kitploit.com/production/public/readmes/6657/34e13964afba1fa722733838892491b2ec9ea2d11f2dfd4e8612aa62817dfa41.png" />
1. Настройка порта: Укажите порт, который будет прослушивать JADX AI MCP Plugin.
2. Порт по умолчанию: Отмените изменения и прослушивайте порт по умолчанию.
3. Перезапуск сервера: Принудительно перезапустите сервер JADX AI MCP Plugin.
4. Статус сервера: Проверьте статус сервера JADX AI MCP Plugin.
Для подключения к JADX AI MCP Plugin, работающему на пользовательском порту, используется опция `--jadx-port`, как показано ниже:```
uv run jadx_mcp_server.py --jadx-port 8652
Если JADX AI MCP Plugin запущен на другой машине (например, JADX на удалённой ВМ, а MCP-сервер на вашем локальном хосте), используйте опцию --jadx-host:```bash
Connect to JADX plugin on a remote host
uv run jadx_mcp_server.py --jadx-host 192.168.1.100 --jadx-port 8650
### Справочник по CLI — Понимание флагов
Существует **два отдельных соединения**, и у каждого есть свой хост/порт:```
┌─────────────┐ --host / --port ┌──────────────────┐ --jadx-host / --jadx-port ┌──────────────────┐
│ LLM Client │ ◄──────────────────► │ jadx-mcp-server │ ──────────────────────────► │ JADX-GUI Plugin │
│ (Claude, │ Where the MCP server │ │ Where the MCP server looks │ (jadx-ai-mcp) │
│ Codex..) │ LISTENS for clients │ │ for the JADX plugin │ │
└─────────────┘ └──────────────────┘ └──────────────────┘
| Flag | По умолчанию | Что контролирует |
|---|---|---|
--http | off | Использовать HTTP-транспорт вместо stdio |
--host | 127.0.0.1 | Где прослушивает MCP-сервер (адрес привязки для LLM-клиентов) |
--port | 8651 | На каком порту прослушивает MCP-сервер |
--jadx-host | 127.0.0.1 | Где искать плагин JADX (целевая машина с JADX-GUI) |
--jadx-port | 8650 | На каком порту работает плагин JADX |
Примеры использования
Сценарий 1 — всё на одной машине (самый распространённый):```bash
Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
**Сценарий 2 — контейнер Docker или WSL (MCP-сервер доступен из сети хоста):**```bash
# MCP server listens on ALL interfaces so the host can reach it
# JADX plugin is still on the same machine
uv run jadx_mcp_server.py --http --host 0.0.0.0
Сценарий 3 — JADX-GUI, запущенный на другой машине (например, удалённая ВМ):```bash
MCP server runs locally, but connects to JADX plugin on a remote machine
uv run jadx_mcp_server.py --http --jadx-host 192.168.1.100
**Сценарий 4 — Полностью удалённая настройка (всё на разных машинах):**```bash
# MCP server listens on all interfaces on port 9999
# JADX plugin is on a different machine at 192.168.1.100:8652
uv run jadx_mcp_server.py --http --host 0.0.0.0 --port 9999 --jadx-host 192.168.1.100 --jadx-port 8652
Конфигурация MCP для пользовательского порта jadx будет следующей для claude:``` { "mcpServers": { "jadx-mcp-server": { "command": "/path/to/uv", "args": [ "--directory", "/path/to/jadx-mcp-server/", "run", "jadx_mcp_server.py", "--jadx-port", "8652" ] } } }
## Попробуйте
1. Запустите jadx-gui и загрузите любой .apk файл

2. Запустите claude — вы должны увидеть значок молотка

3. Нажмите на значок `молотка`, и вы должны увидеть что-то вроде следующего:

4. Выполните следующий промпт:```text
fetch currently selected class and perform quick sast on it

- Разрешите доступ при запросе:

- ВЗЛОМ!

Этот плагин предоставляет полный контроль над GUI и внутренней моделью проекта для поддержки более глубокой интеграции LLM, включая:
- Экспорт выбранного класса в MCP
- Запуск автоматического анализа Claude
- Получение встроенных предложений
Устранение неполадок
ПРИМЕЧАНИЕ ДЛЯ КОНТРИБЬЮТОРОВ
-
Файлы, относящиеся к JADX-AI-MCP, можно найти в этом репозитории.
-
Файлы, относящиеся к jadx-mcp-server, можно найти здесь.
Чтобы сообщить об ошибках, проблемах, предложениях функций, проблемах с производительностью, общих вопросах, проблемах с документацией.
-
Пожалуйста, откройте issue с соответствующим шаблоном.
-
Протестировано на Claude Desktop Client, поддержка других ИИ будет протестирована в ближайшее время!
🙏 Благодарности
Этот проект является плагином для JADX — удивительного декомпилятора Android с открытым исходным кодом, созданного и поддерживаемого @skylot. Вся основная логика декомпиляции принадлежит ему. Я лишь расширил его для поддержки моего MCP-сервера с возможностями ИИ.
Оригинальный README.md из jadx включён в этот репозиторий для справки и указания авторства.
Этот MCP-сервер стал возможен благодаря расширяемости JADX-GUI и удивительному сообществу специалистов по реверс-инжинирингу Android.
Также огромное спасибо @aaddrick за разработку Claude desktop для Linux на базе Debian.
И в заключение спасибо @anthropics за разработку Model Context Protocol и команде @FastMCP.
Кроме того, огромное спасибо всем проектам с открытым исходным кодом, которые служат зависимостями этого проекта и сделали его возможным.
Зависимости
Этот проект использует следующие замечательные библиотеки.
-
Плагин - Java
- Javalin - https://javalin.io/ - лицензия Apache 2.0
- SLF4J - https://slf4j.org/ - лицензия MIT
- org.w3c.dom - https://mvnrepository.com/artifact/org.w3c.dom - лицензия W3C Software and Document
-
MCP-сервер - Python
- FastMCP - https://github.com/jlowin/fastmcp - лицензия Apache 2.0
- httpx - https://www.python-httpx.org - BSD-3-Clause («лицензия BSD»)
📄 Лицензия
JADX-AI-MCP и все связанные проекты наследуют лицензию Apache 2.0 от исходного репозитория JADX.
⚖️ Правовое предупреждение
Отказ от ответственности
Инструменты jadx-ai-mcp и jadx_mcp_server предназначены строго для образовательных, исследовательских и этических целей оценки безопасности. Они предоставляются «как есть» без каких-либо гарантий, явных или подразумеваемых. Пользователи несут исключительную ответственность за то, чтобы их использование этих инструментов соответствовало всем применимым законам, нормативным актам и этическим нормам.
Используя jadx-ai-mcp или jadx_mcp_server, вы соглашаетесь использовать их только в средах, которые вам разрешено тестировать, например, в приложениях, которыми вы владеете или на анализ которых у вас есть явное разрешение. Любое неправомерное использование этих инструментов для несанкционированного реверс-инжиниринга, нарушения прав на интеллектуальную собственность или вредоносной деятельности строго запрещено.
Разработчики jadx-ai-mcp и jadx_mcp_server не несут ответственности за любой ущерб, потерю данных, юридические последствия или иные последствия, возникшие в результате использования или неправильного использования этих инструментов. Пользователи берут на себя полную ответственность за свои действия и любое воздействие, вызванное их использованием.
Используйте ответственно. Уважайте интеллектуальную собственность. Соблюдайте этические нормы хакинга.
🙌 Внесите вклад или поддержите
- Нашли полезным? Поставьте ⭐️
- Есть идеи? Откройте issue или отправьте PR
- Создали что-то на его основе? Напишите мне или упомяните меня — я добавлю это в README!
- Нравится моя работа и хотите, чтобы она продолжалась? Спонсируйте этот проект.
Сделано с ❤️ для сообществ реверс-инжиниринга и ИИ.