
Plugin pour JADX afin d'intégrer le serveur MCP
<div align="center">
# JADX-AI-MCP (Fait partie de la suite Zin MCP)
⚡ Serveur MCP entièrement automatisé + plugin JADX conçu pour communiquer avec un LLM via MCP afin d'analyser des APK Android à l'aide de LLM comme Claude — découvrez des vulnérabilités, analysez des APK et faites de l'ingénierie inverse sans effort.







[](http://www.apache.org/licenses/LICENSE-2.0.html)
#### ⭐ Contributeurs
Merci à ces personnes formidables pour leurs contributions ⭐
<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>
<!-- It is a still in early stage of development, so expects bugs, crashes and logical erros.-->
<!-- Standalone Plugin for [JADX](https://github.com/skylot/jadx) (Started as Fork) with Model Context Protocol (MCP) integration for AI-powered static code analysis and real-time code review and reverse engineering tasks using Claude.-->
<div align="center">
<img alt="banner" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/54d557a38e17d9886d933b2e480910702f245c4cf62dc720a842cfe40994efe2.png">
</div>
<!--  Image generated using AI tools. -->
#### Lire la documentation
- La documentation est désormais en ligne : https://jadx-ai-mcp.readthedocs.io/en/latest/
---
## 🤖 Qu'est-ce que JADX-AI-MCP ?
**JADX-AI-MCP** est un plugin pour le [décompilateur JADX](https://github.com/skylot/jadx) qui s'intègre directement au [Model Context Protocol (MCP)](https://github.com/anthropic/mcp) afin de fournir **une assistance au reverse engineering en direct avec des LLM comme Claude**.
En résumé : « Décompiler → Revue de code contextuelle → Recommandations de l'IA » — le tout en temps réel.
#### Diagramme de séquence de haut niveau
```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
```
### Regardez les démos !
- **Effectuer une analyse rapide**
https://github.com/user-attachments/assets/b65c3041-fde3-4803-8d99-45ca77dbe30a
- **Trouver rapidement des vulnérabilités**
https://github.com/user-attachments/assets/c184afae-3713-4bc0-a1d0-546c1f4eb57f
- **Prise en charge de plusieurs agents IA**
https://github.com/user-attachments/assets/6342ea0f-fa8f-44e6-9b3a-4ceb8919a5b0
- **Exécutez avec votre client LLM préféré**
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
- **Analyser les ressources de l'APK**
https://github.com/user-attachments/assets/f42d8072-0e3e-4f03-93ea-121af4e66eb1
- **Votre assistant IA pendant le débogage d'un APK avec JADX**
https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec
C'est une combinaison de deux outils :
1. JADX-AI-MCP
2. [JADX MCP SERVER](https://github.com/zinja-coder/jadx-mcp-server)
## 🤖 Qu'est-ce que JADX-MCP-SERVER ?
**JADX MCP Server** est un serveur Python autonome qui interagit avec un plugin `JADX-AI-MCP` (voir : [jadx-ai-mcp](https://github.com/zinja-coder/jadx-ai-mcp)) via MCP (Model Context Protocol). Il permet aux LLM de communiquer en direct avec le contexte de l'application Android décompilée.
---
## Autres projets de la suite Zin MCP
- **[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)**
## Outils MCP actuels
Les outils MCP suivants sont disponibles :
- `fetch_current_class()` — Récupère le nom de la classe et le code source complet de la classe sélectionnée
- `get_selected_text()` — Récupère le texte actuellement sélectionné
- `get_all_classes()` — Liste toutes les classes du projet
- `get_class_source()` — Récupère le code source complet d'une classe donnée
- `get_method_by_name()` — Récupère le code source d'une méthode
- `search_method_by_name()` — Recherche une méthode dans toutes les classes
- `search_classes_by_keyword()` — Recherche les classes dont le code source contient un mot-clé spécifique (prend en charge la pagination)
- `get_methods_of_class()` — Liste les méthodes d'une classe
- `get_fields_of_class()` — Liste les champs d'une classe
- `get_smali_of_class()` — Récupère le smali d'une classe
- `get_main_activity_class()` — Récupère l'activité principale depuis jadx, mentionnée dans le fichier AndroidManifest.xml.
- `get_main_application_classes_code()` — Récupère le code de toutes les classes principales de l'application en fonction du nom de package défini dans le AndroidManifest.xml.
- `get_main_application_classes_names()` — Récupère les noms de toutes les classes principales de l'application en fonction du nom de package défini dans le AndroidManifest.xml.
- `get_android_manifest()` — Récupère et renvoie le contenu du AndroidManifest.xml.
- `get_manifest_component` - Récupère un composant spécifique du manifeste au lieu du fichier manifeste complet
- `get_strings()` : Récupère le fichier strings.xml
- `get_all_resource_file_names()` : Récupère tous les noms de fichiers de ressources existant dans l'application
- `get_resource_file()` : Récupère le contenu d'un fichier de ressources
- `rename_class()` : Renomme la classe
- `rename_method()` : Renomme la méthode
- `rename_field()` : Renomme le champ
- `rename_package()` : Renomme le package entier
- `rename_variable()` : Renomme la variable au sein d'une méthode
- `add_comment()` : Ajoute un commentaire à une classe, une méthode, un champ ou une seule ligne de code (`line=`, le numéro de ligne basé sur 1 du code source décompilé), affiché dans JADX-GUI et enregistré avec le projet (commenter à nouveau la même cible le met à jour, un commentaire vide le supprime)
- `list_comments()` : Liste les commentaires stockés dans le projet, éventuellement filtrés sur une seule classe
- `debug_get_stack_frames()` : Récupère les frames de pile depuis le débogueur jadx
- `debug_get_threads()` : Récupère les informations sur les threads depuis le débogueur jadx
- `debug_get_variables()` : Récupère les variables depuis le débogueur jadx
- `xrefs_to_class()` : Trouve toutes les références à une classe (renvoie les références au niveau des méthodes et des classes, prend en charge la pagination)
- `xrefs_to_method()` : Trouve toutes les références à une méthode (inclut les méthodes liées aux overrides, prend en charge la pagination)
- `xrefs_to_field()` : Trouve toutes les références à un champ (renvoie les méthodes qui accèdent au champ, prend en charge la pagination)
---
## 🗒️ Exemples de prompts
🔍 Compréhension basique du code
"Expliquez ce que fait cette classe en un paragraphe."
"Résumez les responsabilités de cette méthode."
"Y a-t-il une quelconque obfuscation dans cette classe ?"
"Listez toutes les permissions Android que cette classe pourrait nécessiter."
🛡️ Détection de vulnérabilités
"Y a-t-il des utilisations d'API non sécurisées dans cette méthode ?"
"Vérifiez cette classe pour détecter des secrets ou identifiants codés en dur."
"Cette méthode assainit-elle les entrées utilisateur avant de les utiliser ?"
"Quelles vulnérabilités de sécurité ce code pourrait-il introduire ?"
🛠️ Aides au reverse engineering
"Désobfusquez et renommez les classes et méthodes avec des noms lisibles."
"Pouvez-vous déduire l'objectif d'origine de cette méthode smali ?"
"De quelles bibliothèques ou SDK cette classe semble-t-elle faire partie ?"
"Dites-moi quelles classes contiennent du code lié au 'chiffrement' ?"
📦 Analyse statique
"Listez tous les appels d'API liés au réseau dans cette classe."
"Identifiez les opérations d'E/S de fichiers et leurs risques potentiels."
"Cette méthode divulgue-t-elle des informations sur l'appareil ou des données personnelles ?"
🤖 Modification de code par IA
"Refactorisez cette méthode pour améliorer sa lisibilité."
"Ajoutez des commentaires à ce code expliquant chaque étape."
"Réécrivez cette méthode Java en Python à des fins d'analyse."
📄 Documentation et métadonnées
"Générez des commentaires de style Javadoc pour toutes les méthodes."
"À quel package ou composant d'application cette classe appartient-elle probablement ?"
"Pouvez-vous identifier le type de composant Android (Activity, Service, etc.) ?"
🐞 Assistant de débogage
```
"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?"
```
## 🛠️ Pour commencer
### 1. Télécharger depuis les Releases : https://github.com/zinja-coder/jadx-ai-mcp/releases
> [!NOTE]
>
> Téléchargez les deux fichiers `jadx-ai-mcp-<version>.jar` et `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="bannière" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/1c2660639daf7352d2bdeafeb7b5e0846e3c0bed45846ee52256b7bf3d316386.png">
</div>
<div align="center">
<img alt="bannière" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/ccc2cc3566566517abad1097711afad3c668a999dc105d82686c4ffb791eba3b.png">
</div>
<div align="center">
<img alt="bannière" 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. Utiliser Claude Desktop
Assurez-vous que Claude Desktop est en cours d'exécution avec MCP activé.
Par exemple, j'ai utilisé ce qui suit pour Kali Linux : https://github.com/aaddrick/claude-desktop-debian
Configurez et ajoutez le serveur MCP au fichier LLM :
```bash
nano ~/.config/Claude/claude_desktop_config.json
```
Pour :
- Windows : `%APPDATA%\Claude\claude_desktop_config.json`
- macOS : `~/Library/Application Support/Claude/claude_desktop_config.json`
Et le contenu suivant à l'intérieur :
```json
{
"mcpServers": {
"jadx-mcp-server": {
"command": "/<path>/<to>/uv",
"args": [
"--directory",
"</PATH/TO/>jadx-mcp-server/",
"run",
"jadx_mcp_server.py"
]
}
}
}
```
Remplacez :
- `path/to/uv` par le chemin réel vers votre exécutable `uv`
- `path/to/jadx-mcp-server` par le chemin absolu vers l'emplacement où vous avez cloné ce
dépôt
Ensuite, naviguez dans le code et interagissez via des invites de revue de code en temps réel en utilisant l'intégration intégrée.
**OU**
ou vous pouvez installer jadx_mcp_server directement en tant qu'exécutable directement à l'aide de la commande ci-dessous :
```
uv tool install git+https://github.com/zinja-coder/jadx-mcp-server
```
et ensuite vous pouvez simplement fournir `jadx_mcp_server` dans la section `command` de la configuration mcp.
## 3. Utiliser Cherry Studio
Si vous souhaitez configurer l'outil MCP dans Cherry Studio, vous pouvez vous référer à la configuration suivante.
- Type : stdio
- command : uv
- argument :
```bash
--directory
path/to/jadx-mcp-server
run
jadx_mcp_server.py
```
- `path/to/jadx-mcp-server` avec le chemin absolu vers l'endroit où vous avez cloné ce dépôt
## 4. Utilisation de LMStudio
Vous pouvez également utiliser JADX AI MCP Server avec LM Studio en configurant son fichier mcp.json. Voici le guide vidéo.
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
## 5. Exécution en mode HTTP Stream
Vous pouvez également utiliser Jadx en mode HTTP Stream en utilisant l'option `--http` avec `jadx_mcp_server.py` comme indiqué ci-dessous :
```bash
uv run jadx_mcp_server.py --http
OR
uv run jadx_mcp_server.py --http --port 9999
```
### Options CLI avancées — Comprendre les drapeaux
Il existe **deux connexions distinctes** et chacune possède son propre hôte/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 | Par défaut | Contrôle |
|------|---------|----------|
| `--http` | désactivé | Utiliser le transport HTTP au lieu de stdio |
| `--host` | `127.0.0.1` | **Adresse d'écoute du serveur MCP** (adresse de liaison pour les clients LLM) |
| `--port` | `8651` | **Port d'écoute du serveur MCP** |
| `--jadx-host` | `127.0.0.1` | **Où trouver le plugin JADX** (la machine JADX-GUI cible) |
| `--jadx-port` | `8650` | **Port sur lequel se trouve le plugin JADX** |
### Exemples d'utilisation
**Scénario 1 — Tout sur la même machine (le plus courant) :**
```bash
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
```
**Scénario 2 — Conteneur Docker ou WSL (serveur MCP accessible depuis le réseau hôte) :**
```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
```
**Scénario 3 — JADX-GUI exécuté sur une autre machine (par exemple, une VM distante) :**
```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
```
**Scénario 4 — Configuration entièrement distante (tout sur des machines différentes) :**
```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]
> ### ⚠️ Avertissement de sécurité — Liaison distante
>
> Lors de l'utilisation de `--host 0.0.0.0` (ou de toute adresse non locale), le serveur MCP se lie à **toutes les interfaces réseau** via **HTTP en clair sans authentification**. Cela signifie :
>
> - **N'importe qui sur le réseau** peut se connecter et invoquer tous les outils MCP
> - Il n'y a **aucun chiffrement TLS** — le trafic peut être intercepté
> - Un attaquant peut utiliser le serveur pour **lire du code décompilé**, **renommer des classes/méthodes** et **accéder aux informations de débogage**
>
> **Mesures d'atténuation :**
> - Ne se lier à `0.0.0.0` que sur des **réseaux de confiance et isolés** (par ex., bridge Docker, VM locale)
> - Utiliser un **pare-feu** pour restreindre l'accès au port MCP
> - Envisager plutôt un **tunnel SSH** : `ssh -L 8651:127.0.0.1:8651 remote-host`
### Compatibilité du mode Stdio
> [!NOTE]
> Lors de l'exécution en mode **stdio** (le mode par défaut, sans `--http`), toute la sortie lisible par l'humain (bannière, vérification de l'état) est écrite sur **stderr** afin de réserver **stdout** au flux JSON-RPC MCP. Cela garantit la compatibilité avec Codex, Claude Desktop et autres clients MCP basés sur stdio.
## 6. Configuration personnalisée du port et de l'hôte pour le plugin JADX AI MCP
<img width="800" height="335" alt="image" src="https://assets.kitploit.com/production/public/readmes/6657/34e13964afba1fa722733838892491b2ec9ea2d11f2dfd4e8612aa62817dfa41.png" />
1. Configurer le port : Configurez le port sur lequel le plugin JADX AI MCP écoutera.
2. Port par défaut : Rétablissez les modifications et écoutez sur le port par défaut.
3. Redémarrer le serveur : Forcez le redémarrage du serveur du plugin JADX AI MCP.
4. État du serveur : Vérifiez l'état du serveur du plugin JADX AI MCP.
Pour se connecter au plugin JADX AI MCP fonctionnant sur un port personnalisé, l'option `--jadx-port` sera utilisée comme indiqué ci-dessous :
```
uv run jadx_mcp_server.py --jadx-port 8652
```
Si le plugin JADX AI MCP s'exécute sur une **machine différente** (par exemple, JADX sur une VM distante, le serveur MCP sur votre hôte local), utilisez l'option `--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
```
### Référence CLI — Comprendre les options
Il existe **deux connexions distinctes** et chacune possède son propre hôte/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 | Par défaut | Contrôle |
|------|---------|----------|
| `--http` | désactivé | Utiliser le transport HTTP au lieu de stdio |
| `--host` | `127.0.0.1` | **Adresse d'écoute du serveur MCP** (adresse de liaison pour les clients LLM) |
| `--port` | `8651` | **Port d'écoute du serveur MCP** |
| `--jadx-host` | `127.0.0.1` | **Où trouver le plugin JADX** (la machine JADX-GUI cible) |
| `--jadx-port` | `8650` | **Port sur lequel se trouve le plugin JADX** |
### Exemples d'utilisation
**Scénario 1 — Tout sur la même machine (le plus courant) :**
```bash
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
```
**Scénario 2 — Conteneur Docker ou WSL (serveur MCP accessible depuis le réseau hôte) :**
```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
```
**Scénario 3 — JADX-GUI exécuté sur une autre machine (par exemple, une VM distante) :**
```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
```
**Scénario 4 — Configuration entièrement distante (tout sur des machines différentes) :**
```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 configuration MCP pour un port jadx personnalisé sera la suivante pour claude :
```
{
"mcpServers": {
"jadx-mcp-server": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/jadx-mcp-server/",
"run",
"jadx_mcp_server.py",
"--jadx-port",
"8652"
]
}
}
}
```
## Essayez-le
1. Lancez jadx-gui et chargez n'importe quel fichier .apk

2. Démarrez claude - Vous devez voir le symbole du marteau

3. Cliquez sur le symbole `hammer` et vous devriez voir quelque chose comme ce qui suit :

4. Exécutez l'invite suivante :
```text
fetch currently selected class and perform quick sast on it
```

5. Autorisez l'accès lorsque vous y êtes invité :

6. HACK !

Ce plugin permet un contrôle total sur l'interface graphique et le modèle de projet interne afin de prendre en charge une intégration plus poussée des LLM, notamment :
- L'exportation de la classe sélectionnée vers MCP
- L'exécution d'une analyse automatisée par Claude
- La réception de suggestions en ligne
---
## Dépannage
[Consultez ici](https://github.com/zinja-coder/jadx-ai-mcp/edit/jadx-ai/TROUBLESHOOTING.md)
## NOTE pour les contributeurs
- Les fichiers liés à JADX-AI-MCP se trouvent dans ce dépôt.
- Les fichiers liés à **jadx-mcp-server** se trouvent [ici](https://github.com/zinja-coder/jadx-mcp-server).
## Pour signaler des bugs, des problèmes, proposer des fonctionnalités, signaler un problème de performance, poser une question générale ou signaler un problème de documentation.
- Veuillez ouvrir un ticket avec le modèle approprié.
- Testé sur le client Claude Desktop, la prise en charge d'autres IA sera testée prochainement !
## 🙏 Crédits
Ce projet est un plugin pour JADX, un formidable décompilateur Android open-source créé et maintenu par [@skylot](https://github.com/skylot). Toute la logique de décompilation principale leur appartient. Je l'ai seulement étendu pour prendre en charge mon serveur MCP avec des capacités d'IA.
[📎 README original (JADX)](https://github.com/skylot/jadx)
Le README.md original de jadx est inclus ici dans ce dépôt à titre de référence et de crédit.
Ce serveur MCP est rendu possible grâce à l'extensibilité de JADX-GUI et à l'incroyable communauté du reverse engineering Android.
---
[Read more](https://github.com/zinja-coder/jadx-ai-mcp)