
jadx-ai-mcp V6.4.1
Plugin per integrare il server MCP in JADX
JADX-AI-MCP (Parte di Zin MCP Suite)
⚡ Server MCP completamente automatizzato + plugin JADX progettato per comunicare con LLM tramite MCP per analizzare APK Android usando LLM come Claude — scopri vulnerabilità, analizza APK e fai reverse engineering senza sforzo.
⭐ Contributori
Grazie a queste persone fantastiche per i loro contributi ⭐
Leggi la documentazione
- Read The Docs è ora online: https://jadx-ai-mcp.readthedocs.io/en/latest/
🤖 Cos'è JADX-AI-MCP?
JADX-AI-MCP è un plugin per il decompilatore JADX che si integra direttamente con Model Context Protocol (MCP) per fornire supporto al reverse engineering in tempo reale con LLM come Claude.
Pensa: "Decompila → Code Review sensibile al contesto → Raccomandazioni AI" — tutto in tempo reale.
Diagramma di sequenza ad alto livello```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
### Guarda le demo!
- **Esegui un'analisi rapida**
https://github.com/user-attachments/assets/b65c3041-fde3-4803-8d99-45ca77dbe30a
- **Trova rapidamente le vulnerabilità**
https://github.com/user-attachments/assets/c184afae-3713-4bc0-a1d0-546c1f4eb57f
- **Supporto per più agenti AI**
https://github.com/user-attachments/assets/6342ea0f-fa8f-44e6-9b3a-4ceb8919a5b0
- **Esegui con il tuo client LLM preferito**
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
- **Analizza le risorse APK**
https://github.com/user-attachments/assets/f42d8072-0e3e-4f03-93ea-121af4e66eb1
- **Il tuo assistente AI durante il debug di APK con JADX**
https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec
È una combinazione di due strumenti:
1. JADX-AI-MCP
2. [JADX MCP SERVER](https://github.com/zinja-coder/jadx-mcp-server)
## 🤖 Cos'è JADX-MCP-SERVER?
**JADX MCP Server** è un server Python autonomo che interagisce con un plugin `JADX-AI-MCP` (vedi: [jadx-ai-mcp](https://github.com/zinja-coder/jadx-ai-mcp)) tramite MCP (Model Context Protocol). Consente ai LLM di comunicare in tempo reale con il contesto dell'app Android decompilata.
---
## Altri progetti in 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)**
## Strumenti MCP attuali
Sono disponibili i seguenti strumenti MCP:
- `fetch_current_class()` — Ottieni il nome della classe e il codice sorgente completo della classe selezionata
- `get_selected_text()` — Ottieni il testo attualmente selezionato
- `get_all_classes()` — Elenca tutte le classi nel progetto
- `get_class_source()` — Ottieni il codice sorgente completo di una data classe
- `get_method_by_name()` — Recupera il sorgente di un metodo
- `search_method_by_name()` — Cerca un metodo tra le classi
- `search_classes_by_keyword()` — Cerca classi il cui codice sorgente contiene una parola chiave specifica (supporta la paginazione)
- `get_methods_of_class()` — Elenca i metodi di una classe
- `get_fields_of_class()` — Elenca i campi di una classe
- `get_smali_of_class()` — Recupera lo smali della classe
- `get_main_activity_class()` — Recupera l'attività principale da jadx menzionata nel file AndroidManifest.xml.
- `get_main_application_classes_code()` — Recupera il codice di tutte le classi principali dell'applicazione in base al nome del pacchetto definito in AndroidManifest.xml.
- `get_main_application_classes_names()` — Recupera i nomi di tutte le classi principali dell'applicazione in base al nome del pacchetto definito in AndroidManifest.xml.
- `get_android_manifest()` — Recupera e restituisce il contenuto di AndroidManifest.xml.
- `get_manifest_component` - Recupera un componente specifico del manifest invece dell'intero file manifest
- `get_strings()` : Recupera il file strings.xml
- `get_all_resource_file_names()` : Recupera tutti i nomi dei file di risorse presenti nell'applicazione
- `get_resource_file()` : Recupera il contenuto del file di risorse
- `rename_class()` : Rinomina il nome della classe
- `rename_method()` : Rinomina il metodo
- `rename_field()` : Rinomina il campo
- `rename_package()` : Rinomina l'intero pacchetto
- `rename_variable()` : Rinomina la variabile all'interno di un metodo
- `debug_get_stack_frames()` : Ottieni gli stack frame dal debugger di jadx
- `debug_get_threads()` : Ottieni informazioni sui thread dal debugger di jadx
- `debug_get_variables()` : Ottieni le variabili dal debugger di jadx
- `xrefs_to_class()` : Trova tutti i riferimenti a una classe (restituisce riferimenti a livello di metodo e di classe, supporta la paginazione)
- `xrefs_to_method()` : Trova tutti i riferimenti a un metodo (include i metodi correlati alle override, supporta la paginazione)
- `xrefs_to_field()` : Trova tutti i riferimenti a un campo (restituisce i metodi che accedono al campo, supporta la paginazione)
---
## 🗒️ Prompt di esempio
🔍 Comprensione di base del codice
"Spiega in un paragrafo cosa fa questa classe."
"Riassumi le responsabilità di questo metodo."
"C'è qualche offuscamento in questa classe?"
"Elenca tutti i permessi Android che questa classe potrebbe richiedere."
🛡️ Rilevamento delle vulnerabilità
"Ci sono usi non sicuri delle API in questo metodo?"
"Controlla questa classe per segreti o credenziali hardcoded."
"Questo metodo sanifica l'input dell'utente prima di usarlo?"
"Quali vulnerabilità di sicurezza potrebbero essere introdotte da questo codice?"
🛠️ Ausili per il reverse engineering
"Deoffusca e rinomina le classi e i metodi con nomi leggibili."
"Puoi dedurre lo scopo originale di questo metodo smali?"
"Di quali librerie o SDK questa classe sembra far parte?"
"Dimmi quali classi contengono codice relativo a 'encryption'?"
📦 Analisi statica
"Elenca tutte le chiamate API relative alla rete in questa classe."
"Identifica le operazioni di I/O su file e i loro potenziali rischi."
"Questo metodo fa trapelare informazioni sul dispositivo o PII?"
🤖 Modifica del codice AI
"Rifattorizza questo metodo per migliorare la leggibilità."
"Aggiungi commenti a questo codice spiegando ogni passaggio."
"Riscrivi questo metodo Java in Python per l'analisi."
📄 Documentazione e metadati
"Genera commenti in stile Javadoc per tutti i metodi."
"A quale pacchetto o componente dell'app appartiene probabilmente questa classe?"
"Puoi identificare il tipo di componente Android (Activity, Service, ecc.)?"
🐞 Assistente del debugger```
"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?"
🛠️ Per Iniziare
1. Scarica dalle Release: https://github.com/zinja-coder/jadx-ai-mcp/releases
[!NOTE]
Scarica sia il file
jadx-ai-mcp-<version>.jarche il filejadx-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. Usa Claude Desktop
Assicurati che Claude Desktop sia in esecuzione con MCP abilitato.
Ad esempio, ho utilizzato quanto segue per Kali Linux: https://github.com/aaddrick/claude-desktop-debian
Configura e aggiungi il server MCP al file LLM:```bash
nano ~/.config/Claude/claude_desktop_config.json
Per:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
E il seguente contenuto al suo interno:```json { "mcpServers": { "jadx-mcp-server": { "command": "///uv", "args": [ "--directory", "</PATH/TO/>jadx-mcp-server/", "run", "jadx_mcp_server.py" ] } } }
Sostituisci:
- `path/to/uv` con il percorso effettivo del tuo eseguibile `uv`
- `path/to/jadx-mcp-server` con il percorso assoluto in cui hai clonato questo
repository
Quindi, naviga nel codice e interagisci tramite prompt di revisione del codice in tempo reale usando l'integrazione integrata.
**OPPURE**
oppure puoi installare direttamente jadx_mcp_server come eseguibile usando il comando seguente:```
uv tool install git+https://github.com/zinja-coder/jadx-mcp-server
e poi puoi semplicemente indicare jadx_mcp_server nella sezione command della configurazione MCP.
3. Usare Cherry Studio
Se vuoi configurare lo strumento MCP in Cherry Studio, puoi fare riferimento alla seguente configurazione.
- Tipo: stdio
- comando: uv
- argomento:```bash --directory path/to/jadx-mcp-server run jadx_mcp_server.py
- `path/to/jadx-mcp-server` con il percorso assoluto in cui hai clonato questo repository
## 4. Usare LMStudio
Puoi anche usare JADX AI MCP Server con LM Studio configurando il suo file mcp.json. Ecco la guida video.
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
## 5. Esecuzione in modalità HTTP Stream
Puoi anche usare Jadx in modalità HTTP Stream usando l'opzione `--http` con `jadx_mcp_server.py` come mostrato di seguito:```bash
uv run jadx_mcp_server.py --http
OR
uv run jadx_mcp_server.py --http --port 9999
Opzioni avanzate della CLI — Capire i flag
Ci sono due connessioni separate e ognuna ha il proprio host/port:``` ┌─────────────┐ --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 | Default | Controls |
|------|---------|----------|
| `--http` | off | Usa il trasporto HTTP invece di stdio |
| `--host` | `127.0.0.1` | **Dove il server MCP è in ascolto** (indirizzo di bind per i client LLM) |
| `--port` | `8651` | **Su quale porta il server MCP è in ascolto** |
| `--jadx-host` | `127.0.0.1` | **Dove trovare il plugin JADX** (la macchina JADX-GUI di destinazione) |
| `--jadx-port` | `8650` | **Su quale porta si trova il plugin JADX** |
### Esempi di Utilizzo
**Scenario 1 — Tutto sulla stessa macchina (il più comune):**```bash
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
Scenario 2 — Container Docker o WSL (server MCP accessibile dalla rete 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
**Scenario 3 — JADX-GUI in esecuzione su una macchina diversa (ad es., 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
Scenario 4 — Configurazione completamente remota (tutto su macchine diverse):```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]
> ### ⚠️ Avviso di sicurezza — Binding remoto
>
> Quando si utilizza `--host 0.0.0.0` (o qualsiasi indirizzo non localhost), il server MCP si collega a **tutte le interfacce di rete** tramite **HTTP semplice senza autenticazione**. Questo significa che:
>
> - **Chiunque sulla rete** può connettersi e invocare tutti gli strumenti MCP
> - **Non c'è crittografia TLS** — il traffico può essere intercettato
> - Un attaccante può utilizzare il server per **leggere codice decompilato**, **rinominare classi/metodi** e **accedere alle informazioni di debug**
>
> **Mitigazioni:**
> - Collega `0.0.0.0` solo su **reti affidabili e isolate** (es. bridge Docker, VM locale)
> - Usa un **firewall** per limitare l'accesso alla porta MCP
> - Valuta invece un **tunnel SSH**: `ssh -L 8651:127.0.0.1:8651 remote-host`
### Compatibilità con la modalità Stdio
> [!NOTE]
> Quando si esegue la modalità **stdio** (quella predefinita, senza `--http`), tutto l'output leggibile da umani (banner, health check) viene scritto su **stderr** per mantenere **stdout** riservato al flusso JSON-RPC MCP. Ciò garantisce la compatibilità con Codex, Claude Desktop e altri client MCP basati su stdio.
## 6. Configurazione personalizzata di porta e host per JADX AI MCP Plugin
<img width="800" height="335" alt="image" src="https://assets.kitploit.com/production/public/readmes/6657/34e13964afba1fa722733838892491b2ec9ea2d11f2dfd4e8612aa62817dfa41.png" />
1. Configura Porta: Configura la porta su cui il Plugin JADX AI MCP resterà in ascolto.
2. Porta Predefinita: Ripristina le modifiche e torna in ascolto sulla porta predefinita.
3. Riavvia Server: Forza il riavvio del server del Plugin JADX AI MCP.
4. Stato Server: Controlla lo stato del server del Plugin JADX AI MCP.
Per connettersi al Plugin JADX AI MCP in esecuzione su una porta personalizzata, verrà utilizzata l'opzione `--jadx-port` come mostrato di seguito:```
uv run jadx_mcp_server.py --jadx-port 8652
Se il plugin JADX AI MCP è in esecuzione su una macchina diversa (ad es., JADX su una VM remota, server MCP sul tuo host locale), usa l'opzione --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
### Riferimento CLI — Comprendere i flag
Ci sono **due connessioni separate** e ciascuna ha il proprio host/porta:```
┌─────────────┐ --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 | Default | Controls |
|---|---|---|
--http | off | Usa il trasporto HTTP invece di stdio |
--host | 127.0.0.1 | Dove ascolta il server MCP (indirizzo di bind per i client LLM) |
--port | 8651 | Su quale porta ascolta il server MCP |
--jadx-host | 127.0.0.1 | Dove trovare il plugin JADX (la macchina JADX-GUI di destinazione) |
--jadx-port | 8650 | Su quale porta si trova il plugin JADX |
Esempi di utilizzo
Scenario 1 — Tutto sulla stessa macchina (il più comune):```bash
Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
**Scenario 2 — contenitore Docker o WSL (server MCP accessibile dalla rete 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
Scenario 3 — JADX-GUI in esecuzione su una macchina diversa (ad es., 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
**Scenario 4 — Configurazione completamente remota (tutto su macchine diverse):**```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 configurazione MCP per la porta jadx personalizzata sarà la seguente per claude:``` { "mcpServers": { "jadx-mcp-server": { "command": "/path/to/uv", "args": [ "--directory", "/path/to/jadx-mcp-server/", "run", "jadx_mcp_server.py", "--jadx-port", "8652" ] } } }
## Provaci
1. Esegui jadx-gui e carica un qualsiasi file .apk

2. Avvia claude - Devi vedere il simbolo del martello

3. Clicca sul simbolo del `martello` e dovresti vedere qualcosa di simile:

4. Esegui il seguente prompt:```text
fetch currently selected class and perform quick sast on it

- Consenti l'accesso quando richiesto:

- HACK!

Questo plugin consente il controllo totale della GUI e del modello di progetto interno per supportare un'integrazione più profonda con LLM, tra cui:
- Esportazione della classe selezionata verso MCP
- Esecuzione di analisi automatiche con Claude
- Ricezione di suggerimenti inline
Risoluzione dei problemi
NOTA per i contributori
-
I file relativi a JADX-AI-MCP si trovano in questo repository.
-
I file relativi a jadx-mcp-server si trovano qui.
Per segnalare bug, problemi, suggerimenti di funzionalità, problemi di prestazioni, domande generali o problemi di documentazione
-
Apri una issue con il relativo template.
-
Testato su Claude Desktop Client, il supporto per altre IA sarà testato presto!
🙏 Crediti
Questo progetto è un plugin per JADX, un fantastico decompilatore Android open-source creato e mantenuto da @skylot. Tutta la logica di decompilazione principale appartiene a lui. Io l'ho solo esteso per supportare il mio server MCP con funzionalità di IA.
Il README.md originale di jadx è incluso in questo repository come riferimento e per dare credito.
Questo server MCP è reso possibile dall'estensibilità di JADX-GUI e dalla straordinaria community di ingegneria inversa Android.
Un enorme ringraziamento anche a @aaddrick per lo sviluppo di Claude desktop per Linux basato su Debian.
E infine grazie a @anthropics per lo sviluppo del Model Context Protocol e al team di @FastMCP.
Inoltre, un enorme ringraziamento a tutti i progetti open-source che fungono da dipendenze per questo progetto e che hanno reso tutto ciò possibile.
Dipendenze
Questo progetto utilizza le seguenti fantastiche librerie.
-
Plugin - Java
- Javalin - https://javalin.io/ - Licenza Apache 2.0
- SLF4J - https://slf4j.org/ - Licenza MIT
- org.w3c.dom - https://mvnrepository.com/artifact/org.w3c.dom - Licenza software e documenti W3C
-
Server MCP - Python
- FastMCP - https://github.com/jlowin/fastmcp - Licenza Apache 2.0
- httpx - https://www.python-httpx.org - BSD-3-Clause (“licenza BSD”)
📄 Licenza
JADX-AI-MCP e tutti i progetti correlati ereditano la licenza Apache 2.0 dal repository originale JADX.
⚖️ Avviso legale
Disclaimer
Gli strumenti jadx-ai-mcp e jadx_mcp_server sono destinati esclusivamente a scopi educativi, di ricerca e di valutazione etica della sicurezza. Sono forniti "così come sono", senza alcuna garanzia, esplicita o implicita. Gli utenti sono gli unici responsabili di garantire che l'uso di questi strumenti sia conforme a tutte le leggi, i regolamenti e le linee guida etiche applicabili.
Utilizzando jadx-ai-mcp o jadx_mcp_server, accetti di usarli solo in ambienti in cui sei autorizzato a testare, come applicazioni di tua proprietà o per le quali hai ricevuto esplicito permesso di analisi. Qualsiasi uso improprio di questi strumenti per reverse engineering non autorizzato, violazione dei diritti di proprietà intellettuale o attività dannose è strettamente vietato.
Gli sviluppatori di jadx-ai-mcp e jadx_mcp_server non saranno ritenuti responsabili per danni, perdita di dati, conseguenze legali o altre conseguenze derivanti dall'uso o dall'abuso di questi strumenti. Gli utenti si assumono la piena responsabilità delle proprie azioni e di qualsiasi impatto causato dal loro utilizzo.
Usa in modo responsabile. Rispetta la proprietà intellettuale. Segui le pratiche di hacking etico.
🙌 Contribuisci o supporta
- Lo trovi utile? Lascia una ⭐️
- Hai idee? Apri una issue o invia una PR
- Hai creato qualcosa sopra? Scrivimi in DM o menzionami — lo aggiungo al README!
- Ti piace il mio lavoro e vuoi sostenerlo? Sponsorizza questo progetto.
Creato con ❤️ per le community di reverse engineering e IA.