
Plugin para JADX para integrar el servidor MCP
<div align="center">
# JADX-AI-MCP (Parte de Zin MCP Suite)
⚡ Servidor MCP totalmente automatizado + plugin de JADX creado para comunicarse con LLM a través de MCP para analizar APKs de Android usando LLMs como Claude — descubrir vulnerabilidades, analizar APK e ingeniería inversa sin esfuerzo.







[](http://www.apache.org/licenses/LICENSE-2.0.html)
#### ⭐ Colaboradores
Gracias a estas maravillosas personas por sus contribuciones ⭐
<table>
<tr align="center">
<td>
<a href="https://github.com/ljt270864457">
<img src="https://assets.kitploit.com/production/public/readmes/6657/a21f05ae54dafc25c40b8b86dd848ae6cc62a165c11d1aaa484a2971191c04c0.jpg" width="30px;" alt=""/>
<br /><sub><b>ljt270864457</b></sub>
</a>
</td>
<td>
<a href="https://github.com/p0px">
<img src="https://assets.kitploit.com/production/public/readmes/6657/87812519c4f48c0cb45aa6e7605ed82ba5cb0f0a410c7bec0c031b407330d683.png" width="30px;" alt=""/>
<br /><sub><b>p0px</b></sub>
</a>
</td>
<td>
<a href="https://github.com/bx33661">
<img src="https://assets.kitploit.com/production/public/readmes/6657/cc055bf866f36cc8ba4680bb158f91d2a459559a0ea31ce3525f2024e81d9d1b.png" width="30px;" alt=""/>
<br /><sub><b>bx33661</b></sub>
</a>
</td>
<td>
<a href="https://github.com/Haicaji">
<img src="https://assets.kitploit.com/production/public/readmes/6657/70bd2a092000ef110c6ef9a177ae39889c5fa12af384165218ecdc65ab87cca2.png" width="30px;" alt=""/>
<br /><sub><b>Haicaji</b></sub>
</a>
</td>
<td>
<a href="https://github.com/mostafaNazari702">
<img src="https://assets.kitploit.com/production/public/readmes/6657/c15b7582722221365f89b5900f1e2d53a5de4bfe888f1f4cf3c24a09ca74553b.jpg" width="30px;" alt=""/>
<br /><sub><b>Mostafa Nazari</b></sub>
</a>
</td>
<td>
<a href="https://github.com/ChineseAStar">
<img src="https://assets.kitploit.com/production/public/readmes/6657/69e2a4cd0bbb7228e06fd1ccc32a37c30d1406fc6b06cfce0a6e2d22f5bbf6b0.png" width="30px;" alt=""/>
<br /><sub><b>ChineseAStar</b></sub>
</a>
</td>
<td>
<a href="https://github.com/cyal1r">
<img src="https://assets.kitploit.com/production/public/readmes/6657/f81a8c01f47c36dbf03f4117810d43075e3ca85f2d2d3c5d70cfb6ea20f45290.jpg" width="30px;" alt=""/>
<br /><sub><b>cyal1</b></sub>
</a>
</td>
<td>
<a href="https://github.com/badmonkey7">
<img src="https://assets.kitploit.com/production/public/readmes/6657/07d2eb4e3cd4cc09c5dca57d877c4d816247baab606e7848af7a0ab7d23c040d.jpg" width="30px;" alt=""/>
<br /><sub><b>badmonkey7</b></sub>
</a>
</td>
<td>
<a href="https://github.com/tiann">
<img src="https://assets.kitploit.com/production/public/readmes/6657/73dc97b271331bb2711fc80543636b25ec03cb523b985af1af05ea9ab6f40cfd.jpg" width="30px;" alt=""/>
<br /><sub><b>tiann</b></sub>
</a>
</td>
<td>
<a href="https://github.com/ZERO-A-ONE">
<img src="https://assets.kitploit.com/production/public/readmes/6657/73c55a088226d05d6fbf5ff1d14caee34ef98224c00e463acd07d6f4bb65e655.png" width="30px;" alt=""/>
<br /><sub><b>ZERO-A-ONE</b></sub>
</a>
</td>
<td>
<a href="https://github.com/neoz">
<img src="https://assets.kitploit.com/production/public/readmes/6657/77a4659904d1ba9253e77f8ff592547b305b3a1a9f46e289d1a900c5a7983d68.jpg" width="30px;" alt=""/>
<br /><sub><b>neoz</b></sub>
</a>
</td>
<td>
<a href="https://github.com/SamadiPour">
<img src="https://assets.kitploit.com/production/public/readmes/6657/4a39a74e2cd9e53f1ef326afc4a7d177d8689e7238dce567aa7dede879ce8f9f.jpg" width="30px;" alt=""/>
<br /><sub><b>SamadiPour</b></sub>
</a>
</td>
<td>
<a href="https://github.com/wuseluosi">
<img src="https://assets.kitploit.com/production/public/readmes/6657/3ada2b6e2ed063020ca3b0ce57bd5cd5c1cba2416454d2d038f630a667b88e8c.png" width="30px;" alt=""/>
<br /><sub><b>wuseluosi</b></sub>
</a>
</td>
<td>
<a href="https://github.com/CainYzb">
<img src="https://assets.kitploit.com/production/public/readmes/6657/b6bdcfb4162b1366cb4850ba880ab59e42f705ddd91fbf25dd8912ddfa7dd2bf.png" width="30px;" alt=""/>
<br /><sub><b>CainYzb</b></sub>
</a>
</td>
<td>
<a href="https://github.com/tbodt">
<img src="https://assets.kitploit.com/production/public/readmes/6657/bb6b73635bffe086662106c496032717f4cfeee9d0341799d0afaf5f9d009e92.jpg" width="30px;" alt=""/>
<br /><sub><b>tbodt</b></sub>
</a>
</td>
<td>
<a href="https://github.com/LilNick0101">
<img src="https://assets.kitploit.com/production/public/readmes/6657/628dc1638821f28b99dbfe9a971259713d16e0bcfc5718783f91eb09acebd64f.png" width="30px;" alt=""/>
<br /><sub><b>LilNick0101</b></sub>
</a>
</td>
<td>
<a href="https://github.com/lwsinclair">
<img src="https://assets.kitploit.com/production/public/readmes/6657/e3169690505f7a2b7fd0968057af5807f29830292553cbaa6eaf0ad418521b59.jpg" width="30px;" alt=""/>
<br /><sub><b>lwsinclair</b></sub>
</a>
</td>
</tr>
<tr align="center">
<td>
<a href="https://github.com/LYC-Android">
<img src="https://assets.kitploit.com/production/public/readmes/6657/6f0596bf4a8146f7b79a95baa7704b130d61c0852890ef3e0aa3fc8f898d0a35.jpg" width="30px;" alt=""/>
<br /><sub><b>LYC-Android</b></sub>
</a>
</td>
<td>
<a href="https://github.com/zbhello">
<img src="https://assets.kitploit.com/production/public/readmes/6657/03a9374ed3b190d5b659fd30d28202aeebc237753bced41b02be84efed36a24e.jpg" width="30px;" alt="
<br /><sub><b>zbhello</b></sub>
</a>
</td>
<td>
<a href="https://github.com/1yearning1">
<img src="https://assets.kitploit.com/production/public/readmes/6657/903595003df5d7eab06f7e32897f8e34a15fe9f677485f7c8e3939ddd895bffd.png" width="30px;" alt=""/>
<br /><sub><b>1yearning1</b></sub>
</a>
</td>
<td>
<a href="https://github.com/mhsjzsq">
<img src="https://assets.kitploit.com/production/public/readmes/6657/dadd027e0da3b8c59babf87a66dd50985c6815676c75677523148ea640b1926a.png" width="30px;" alt=""/>
<br /><sub><b>mhsjzsq</b></sub>
</a>
</td>
<td>
<a href="https://github.com/darkblack1234">
<img src="https://assets.kitploit.com/production/public/readmes/6657/02fd1704e19e0fd764f024e440eef0f47afe420baa415e24227a020b3f9f21c8.png" width="30px;" alt=""/>
<br /><sub><b>darkblack1234</b></sub>
</a>
</td>
<td>
<a href="https://github.com/Merrg1n">
<img src="https://assets.kitploit.com/production/public/readmes/6657/43cdc3b100677e85f4e063711c59fe487d994fb66a8e57ba68444f6d9fb0dfd3.png" width="30px;" alt=""/>
<br /><sub><b>Merrg1n</b></sub>
</a>
</td>
</tr>
</table>
</div>
<!-- Todavía está en una etapa temprana de desarrollo, por lo que se esperan errores, fallos y errores lógicos.-->
<!-- Plugin independiente para [JADX](https://github.com/skylot/jadx) (Comenzó como Fork) con integración del Model Context Protocol (MCP) para análisis estático de código impulsado por IA y revisión de código en tiempo real y tareas de ingeniería inversa usando Claude.-->
<div align="center">
<img alt="banner" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/54d557a38e17d9886d933b2e480910702f245c4cf62dc720a842cfe40994efe2.png">
</div>
<!--  Imagen generada usando herramientas de IA. -->
#### Leer la documentación
- Leer la documentación ya está disponible: https://jadx-ai-mcp.readthedocs.io/en/latest/
---
## 🤖 ¿Qué es JADX-AI-MCP?
**JADX-AI-MCP** es un plugin para el [descompilador JADX](https://github.com/skylot/jadx) que se integra directamente con el [Model Context Protocol (MCP)](https://github.com/anthropic/mcp) para proporcionar **soporte de ingeniería inversa en vivo con LLMs como Claude**.
Piensa: "Descompilar → Revisión de código con contexto → Recomendaciones de IA" — todo en tiempo real.
#### Diagrama de secuencia de alto nivel
```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
```
### ¡Mira las demos!
- **Realizar un análisis rápido**
https://github.com/user-attachments/assets/b65c3041-fde3-4803-8d99-45ca77dbe30a
- **Encontrar vulnerabilidades rápidamente**
https://github.com/user-attachments/assets/c184afae-3713-4bc0-a1d0-546c1f4eb57f
- **Soporte para múltiples agentes de IA**
https://github.com/user-attachments/assets/6342ea0f-fa8f-44e6-9b3a-4ceb8919a5b0
- **Ejecútalo con tu cliente LLM favorito**
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
- **Analizar los recursos del APK**
https://github.com/user-attachments/assets/f42d8072-0e3e-4f03-93ea-121af4e66eb1
- **Tu asistente de IA durante la depuración de APK usando JADX**
https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec
Es la combinación de dos herramientas:
1. JADX-AI-MCP
2. [JADX MCP SERVER](https://github.com/zinja-coder/jadx-mcp-server)
## 🤖 ¿Qué es JADX-MCP-SERVER?
**JADX MCP Server** es un servidor Python independiente que interactúa con un plugin `JADX-AI-MCP` (ver: [jadx-ai-mcp](https://github.com/zinja-coder/jadx-ai-mcp)) mediante MCP (Model Context Protocol). Permite a los LLM comunicarse en vivo con el contexto de la aplicación Android descompilada.
---
## Otros proyectos de 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)**
## Herramientas MCP actuales
Las siguientes herramientas MCP están disponibles:
- `fetch_current_class()` — Obtiene el nombre de la clase y el código fuente completo de la clase seleccionada
- `get_selected_text()` — Obtiene el texto actualmente seleccionado
- `get_all_classes()` — Lista todas las clases del proyecto
- `get_class_source()` — Obtiene el código fuente completo de una clase dada
- `get_method_by_name()` — Obtiene el código fuente de un método
- `search_method_by_name()` — Busca un método entre las clases
- `search_classes_by_keyword()` — Busca clases cuyo código fuente contiene una palabra clave específica (admite paginación)
- `get_methods_of_class()` — Lista los métodos de una clase
- `get_fields_of_class()` — Lista los campos de una clase
- `get_smali_of_class()` — Obtiene el smali de una clase
- `get_main_activity_class()` — Obtiene la actividad principal de jadx mencionada en el archivo AndroidManifest.xml.
- `get_main_application_classes_code()` — Obtiene el código de todas las clases principales de la aplicación según el nombre de paquete definido en el AndroidManifest.xml.
- `get_main_application_classes_names()` — Obtiene los nombres de todas las clases principales de la aplicación según el nombre de paquete definido en el AndroidManifest.xml.
- `get_android_manifest()` — Recupera y devuelve el contenido de AndroidManifest.xml.
- `get_manifest_component` - Recupera un componente específico del manifiesto en lugar del archivo de manifiesto completo
- `get_strings()` : Obtiene el archivo strings.xml
- `get_all_resource_file_names()` : Recupera los nombres de todos los archivos de recursos que existen en la aplicación
- `get_resource_file()` : Recupera el contenido de un archivo de recursos
- `rename_class()` : Renombra el nombre de la clase
- `rename_method()` : Renombra el método
- `rename_field()` : Renombra el campo
- `rename_package()` : Renombra el paquete completo
- `rename_variable()` : Renombra la variable dentro de un método
- `add_comment()` : Añade un comentario a una clase, método, campo o a una única línea de código (`line=`, el número de línea basado en 1 del código fuente descompilado), que se muestra en JADX-GUI y se guarda con el proyecto (volver a comentar el mismo objetivo lo actualiza, un comentario vacío lo elimina)
- `list_comments()` : Lista los comentarios almacenados en el proyecto, opcionalmente filtrados a una clase
- `debug_get_stack_frames()` : Obtiene los marcos de pila del depurador de jadx
- `debug_get_threads()` : Obtiene información de los hilos del depurador de jadx
- `debug_get_variables()` : Obtiene las variables del depurador de jadx
- `xrefs_to_class()` : Encuentra todas las referencias a una clase (devuelve referencias a nivel de método y de clase, admite paginación)
- `xrefs_to_method()` : Encuentra todas las referencias a un método (incluye métodos relacionados con sobrescrituras, admite paginación)
- `xrefs_to_field()` : Encuentra todas las referencias a un campo (devuelve los métodos que acceden al campo, admite paginación)
---
## 🗒️ Prompts de ejemplo
🔍 Comprensión básica del código
"Explica qué hace esta clase en un párrafo."
"Resume las responsabilidades de este método."
"¿Hay alguna ofuscación en esta clase?"
"Enumera todos los permisos de Android que esta clase podría requerir."
🛡️ Detección de vulnerabilidades
"¿Hay usos inseguros de API en este método?"
"Revisa esta clase en busca de secretos o credenciales codificados de forma rígida."
"¿Este método sanitiza la entrada del usuario antes de usarla?"
"¿Qué vulnerabilidades de seguridad podría introducir este código?"
🛠️ Asistentes de ingeniería inversa
"Desofusca y renombra las clases y métodos a algo legible."
"¿Puedes inferir el propósito original de este método smali?"
"¿De qué bibliotecas o SDKs parece formar parte esta clase?"
"Dime qué clases contienen código relacionado con 'encryption'."
📦 Análisis estático
"Enumera todas las llamadas a API relacionadas con la red en esta clase."
"Identifica las operaciones de E/S de archivos y sus riesgos potenciales."
"¿Este método filtra información del dispositivo o PII?"
🤖 Modificación de código con IA
"Refactoriza este método para mejorar la legibilidad."
"Añade comentarios a este código explicando cada paso."
"Reescribe este método Java en Python para su análisis."
📄 Documentación y metadatos
"Genera comentarios al estilo Javadoc para todos los métodos."
"¿A qué paquete o componente de la aplicación pertenece probablemente esta clase?"
"¿Puedes identificar el tipo de componente de Android (Activity, Service, etc.)?"
🐞 Asistente de depuración
```
"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?"
```
## 🛠️ Primeros pasos
### 1. Descargar desde Releases: https://github.com/zinja-coder/jadx-ai-mcp/releases
> [!NOTE]
>
> Descarga tanto el archivo `jadx-ai-mcp-<version>.jar` como el `jadx-mcp-server-<version>.zip`.
```bash
# 0. Download the jadx-ai-mcp-<version>.jar and jadx-mcp-server-<version>.zip
https://github.com/zinja-coder/jadx-ai-mcp/releases
# 1.
unzip jadx-mcp-server-<version>.zip
├jadx-mcp-server/
├── jadx_mcp_server.py
├── requirements.txt
├── README.md
├── LICENSE
├── src/
├── static/
├── examples/
└── test.sh
├jadx-ai-mcp-<version>.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. Usar Claude Desktop
Asegúrate de que Claude Desktop se esté ejecutando con MCP habilitado.
Por ejemplo, he utilizado lo siguiente para Kali Linux: https://github.com/aaddrick/claude-desktop-debian
Configura y añade el servidor MCP al archivo del LLM:
```bash
nano ~/.config/Claude/claude_desktop_config.json
```
Para:
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
Y el siguiente contenido en él:
```json
{
"mcpServers": {
"jadx-mcp-server": {
"command": "/<path>/<to>/uv",
"args": [
"--directory",
"</PATH/TO/>jadx-mcp-server/",
"run",
"jadx_mcp_server.py"
]
}
}
}
```
Reemplace:
- `path/to/uv` con la ruta real a su ejecutable `uv`
- `path/to/jadx-mcp-server` con la ruta absoluta al lugar donde clonó este
repositorio
Luego, navegue por el código e interactúe mediante prompts de revisión de código en tiempo real usando la integración integrada.
**O**
o puede instalar jadx_mcp_server directamente como ejecutable directamente usando el siguiente comando:
```
uv tool install git+https://github.com/zinja-coder/jadx-mcp-server
```
y luego puedes simplemente proporcionar `jadx_mcp_server` en la sección `command` de la configuración de mcp.
## 3. Usar Cherry Studio
Si deseas configurar la herramienta MCP en Cherry Studio, puedes consultar la siguiente configuración.
- Tipo: stdio
- comando: uv
- argumento:
```bash
--directory
path/to/jadx-mcp-server
run
jadx_mcp_server.py
```
- `path/to/jadx-mcp-server` con la ruta absoluta a donde clonaste este repositorio
## 4. Uso de LMStudio
También puedes usar JADX AI MCP Server con LM Studio configurando su archivo mcp.json. Aquí está la guía en video.
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
## 5. Ejecución en modo HTTP Stream
También puedes usar Jadx en modo HTTP Stream usando la opción `--http` con `jadx_mcp_server.py` como se muestra a continuación:
```bash
uv run jadx_mcp_server.py --http
OR
uv run jadx_mcp_server.py --http --port 9999
```
### Opciones avanzadas de CLI — Entendiendo los flags
Hay **dos conexiones separadas** y cada una tiene su propio host/puerto:
```
┌─────────────┐ --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 | Predeterminado | Controla |
|------|---------|----------|
| `--http` | desactivado | Usar transporte HTTP en lugar de stdio |
| `--host` | `127.0.0.1` | **Dónde escucha el servidor MCP** (dirección de enlace para los clientes LLM) |
| `--port` | `8651` | **En qué puerto escucha el servidor MCP** |
| `--jadx-host` | `127.0.0.1` | **Dónde encontrar el plugin de JADX** (la máquina objetivo con JADX-GUI) |
| `--jadx-port` | `8650` | **En qué puerto está el plugin de JADX** |
### Ejemplos de uso
**Escenario 1 — Todo en la misma máquina (el más común):**
```bash
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
```
**Escenario 2 — Contenedor Docker o WSL (servidor MCP accesible desde la red del host):**
```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
```
**Escenario 3 — JADX-GUI ejecutándose en una máquina diferente (por ejemplo, una VM remota):**
```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
```
**Escenario 4 — Configuración remota completa (todo en máquinas diferentes):**
```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]
> ### ⚠️ Advertencia de seguridad — Enlace remoto
>
> Al usar `--host 0.0.0.0` (o cualquier dirección que no sea localhost), el servidor MCP se enlaza a **todas las interfaces de red** mediante **HTTP sin cifrar y sin autenticación**. Esto significa:
>
> - **Cualquier persona en la red** puede conectarse e invocar todas las herramientas MCP
> - **No hay cifrado TLS** — el tráfico puede ser interceptado
> - Un atacante puede usar el servidor para **leer código descompilado**, **renombrar clases/métodos** y **acceder a información de depuración**
>
> **Mitigaciones:**
> - Enlazar a `0.0.0.0` solo en **redes de confianza y aisladas** (p. ej., puente de Docker, VM local)
> - Usar un **firewall** para restringir el acceso al puerto MCP
> - Considerar un **túnel SSH** en su lugar: `ssh -L 8651:127.0.0.1:8651 remote-host`
### Compatibilidad con el modo Stdio
> [!NOTE]
> Al ejecutarse en modo **stdio** (el predeterminado, sin `--http`), toda la salida legible por humanos (banner, comprobación de estado) se escribe en **stderr** para mantener **stdout** reservado para el flujo JSON-RPC de MCP. Esto garantiza la compatibilidad con Codex, Claude Desktop y otros clientes MCP basados en stdio.
## 6. Configuración personalizada de puerto y host para el plugin JADX AI MCP
<img width="800" height="335" alt="image" src="https://assets.kitploit.com/production/public/readmes/6657/34e13964afba1fa722733838892491b2ec9ea2d11f2dfd4e8612aa62817dfa41.png" />
1. Configurar puerto: configura el puerto en el que escuchará el plugin JADX AI MCP.
2. Puerto predeterminado: revierte los cambios y escucha en el puerto predeterminado.
3. Reiniciar servidor: fuerza el reinicio del servidor del plugin JADX AI MCP.
4. Estado del servidor: comprueba el estado del servidor del plugin JADX AI MCP.
Para conectarse con el plugin JADX AI MCP que se ejecuta en un puerto personalizado, se usará la opción `--jadx-port` como se muestra a continuación:
```
uv run jadx_mcp_server.py --jadx-port 8652
```
Si el JADX AI MCP Plugin se ejecuta en una **máquina diferente** (por ejemplo, JADX en una VM remota, el servidor MCP en tu host local), utiliza la opción `--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
```
### Referencia de la CLI — Entendiendo los flags
Hay **dos conexiones separadas** y cada una tiene su propio host/puerto:
```
┌─────────────┐ --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 | Predeterminado | Controla |
|------|---------|----------|
| `--http` | desactivado | Usar transporte HTTP en lugar de stdio |
| `--host` | `127.0.0.1` | **Dónde escucha el servidor MCP** (dirección de enlace para los clientes LLM) |
| `--port` | `8651` | **En qué puerto escucha el servidor MCP** |
| `--jadx-host` | `127.0.0.1` | **Dónde encontrar el plugin de JADX** (la máquina objetivo con JADX-GUI) |
| `--jadx-port` | `8650` | **En qué puerto está el plugin de JADX** |
### Ejemplos de uso
**Escenario 1 — Todo en la misma máquina (el más común):**
```bash
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
```
**Escenario 2 — Contenedor Docker o WSL (servidor MCP accesible desde la red del host):**
```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
```
**Escenario 3 — JADX-GUI ejecutándose en una máquina diferente (por ejemplo, una VM remota):**
```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
```
**Escenario 4 — Configuración remota completa (todo en máquinas diferentes):**
```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
```
La configuración de MCP para un puerto jadx personalizado será la siguiente para claude:
```
{
"mcpServers": {
"jadx-mcp-server": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/jadx-mcp-server/",
"run",
"jadx_mcp_server.py",
"--jadx-port",
"8652"
]
}
}
}
```
## Pruébalo
1. Ejecuta jadx-gui y carga cualquier archivo .apk

2. Inicia claude - Debes ver el símbolo del martillo

3. Haz clic en el símbolo del `martillo` y deberías ver algo como lo siguiente:

4. Ejecuta el siguiente prompt:
```text
fetch currently selected class and perform quick sast on it
```

5. Permite el acceso cuando se te solicite:

6. ¡HACK!

Este plugin permite un control total sobre la GUI y el modelo interno del proyecto para admitir una integración más profunda con LLM, lo que incluye:
- Exportar la clase seleccionada a MCP
- Ejecutar análisis automatizado con Claude
- Recibir sugerencias en línea
---
## Solución de problemas
[Consulta aquí](https://github.com/zinja-coder/jadx-ai-mcp/edit/jadx-ai/TROUBLESHOOTING.md)
## NOTA para colaboradores
- Los archivos relacionados con JADX-AI-MCP se encuentran en este repositorio.
- Los archivos relacionados con **jadx-mcp-server** se encuentran [aquí](https://github.com/zinja-coder/jadx-mcp-server).
## Para reportar errores, problemas, sugerencias de funciones, problemas de rendimiento, preguntas generales o problemas de documentación.
- Abre amablemente un issue con la plantilla correspondiente.
- Probado en el cliente de Claude Desktop, ¡pronto se probará la compatibilidad con otras IA!
## 🙏 Créditos
Este proyecto es un plugin para JADX, un increíble descompilador de Android de código abierto creado y mantenido por [@skylot](https://github.com/skylot). Toda la lógica central de descompilación les pertenece. Yo solo lo he ampliado para admitir mi servidor MCP con capacidades de IA.
[📎 README original (JADX)](https://github.com/skylot/jadx)
El README.md original de jadx se incluye aquí en este repositorio como referencia y reconocimiento.
Este servidor MCP es posible gracias a la extensibilidad de JADX-GUI y a la increíble comunidad de ingeniería inversa de Android.
También un enorme agradecimiento a [@aaddrick](https://github.com/aaddrick) por desarrollar Claude desktop para Linux basado en Debian.
Y por último, gracias a [@anthropics](https://github.com/anthropics) por desarrollar el Model Context Protocol y al equipo de [@FastMCP](https://github.com/modelcontextprotocol/python-sdk)
Además de esto, un enorme agradecimiento a todos los proyectos de código abierto que sirven como dependencias para este proyecto y que lo hicieron posible.
### Dependencias
Este proyecto utiliza las siguientes increíbles bibliotecas.
- Plugin - Java
- Javalin - https://javalin.io/ - Licencia Apache 2.0
---
[Read more](https://github.com/zinja-coder/jadx-ai-mcp)