Voltar às atualizações
New releaseAug 6, 2026

jadx-ai-mcp V6.4.1

Plugin para JADX para integrar o servidor MCP

Compartilhar

JADX-AI-MCP (Parte do Zin MCP Suite)

⚡ Servidor MCP totalmente automatizado + plugin JADX projetado para se comunicar com LLM via MCP para analisar APKs Android usando LLMs como Claude — descubra vulnerabilidades, analise APKs e faça engenharia reversa sem esforço.

GitHub contributors JADX-AI-MCP GitHub contributors JADX-MCP-SERVER GitHub all releases GitHub release (latest by SemVer) Latest release Java 11+ Python 3.10+ License

⭐ Contribuidores

Obrigado a estas pessoas maravilhosas pelas suas contribuições ⭐

banner

Read The Docs


🤖 O que é o JADX-AI-MCP?

JADX-AI-MCP é um plugin para o decompilador JADX que se integra diretamente ao Model Context Protocol (MCP) para fornecer suporte a engenharia reversa em tempo real com LLMs como Claude.

Pense: "Decompilar → Revisão de Código Sensível ao Contexto → Recomendações de IA" — tudo em tempo real.

Diagrama de Sequência de Alto Nível```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

### Assista às demonstrações!

- **Realize uma análise rápida**
  
https://github.com/user-attachments/assets/b65c3041-fde3-4803-8d99-45ca77dbe30a

- **Encontre vulnerabilidades rapidamente**

https://github.com/user-attachments/assets/c184afae-3713-4bc0-a1d0-546c1f4eb57f

- **Suporte a múltiplos agentes de IA**

https://github.com/user-attachments/assets/6342ea0f-fa8f-44e6-9b3a-4ceb8919a5b0

- **Execute com seu cliente LLM favorito**

https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809

- **Analise os recursos do APK**

https://github.com/user-attachments/assets/f42d8072-0e3e-4f03-93ea-121af4e66eb1

- **Seu assistente de IA durante a depuração de APK usando JADX**

https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec

É uma combinação de duas ferramentas:
1. JADX-AI-MCP
2. [JADX MCP SERVER](https://github.com/zinja-coder/jadx-mcp-server)

## 🤖 O que é o JADX-MCP-SERVER?

**JADX MCP Server** é um servidor Python autônomo que interage com um plugin `JADX-AI-MCP` (veja: [jadx-ai-mcp](https://github.com/zinja-coder/jadx-ai-mcp)) via MCP (Model Context Protocol). Ele permite que LLMs se comuniquem com o contexto do aplicativo Android descompilado em tempo real.

---

## Outros projetos no 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)**

## Ferramentas MCP Atuais

As seguintes ferramentas MCP estão disponíveis:

- `fetch_current_class()` — Obtém o nome da classe e o código-fonte completo da classe selecionada
- `get_selected_text()` — Obtém o texto selecionado atualmente
- `get_all_classes()` — Lista todas as classes no projeto
- `get_class_source()` — Obtém o código-fonte completo de uma determinada classe
- `get_method_by_name()` — Busca o código-fonte de um método
- `search_method_by_name()` — Pesquisa um método entre as classes
- `search_classes_by_keyword()` — Pesquisa classes cujo código-fonte contém uma palavra-chave específica (suporta paginação)
- `get_methods_of_class()` — Lista os métodos de uma classe
- `get_fields_of_class()` — Lista os campos de uma classe
- `get_smali_of_class()` — Busca o smali da classe
- `get_main_activity_class()` — Busca a activity principal do jadx mencionada no arquivo AndroidManifest.xml.
- `get_main_application_classes_code()` — Busca o código de todas as classes principais do aplicativo com base no nome do pacote definido no AndroidManifest.xml.
- `get_main_application_classes_names()` — Busca os nomes de todas as classes principais do aplicativo com base no nome do pacote definido no AndroidManifest.xml.
- `get_android_manifest()` — Recupera e retorna o conteúdo do AndroidManifest.xml.
- `get_manifest_component` - Recupera um componente específico do manifesto em vez do arquivo de manifesto inteiro
- `get_strings()` : Busca o arquivo strings.xml
- `get_all_resource_file_names()` : Recupera todos os nomes de arquivos de recursos que existem no aplicativo
- `get_resource_file()` : Recupera o conteúdo do arquivo de recurso
- `rename_class()` : Renomeia o nome da classe
- `rename_method()` : Renomeia o método
- `rename_field()` : Renomeia o campo
- `rename_package()` : Renomeia o pacote inteiro
- `rename_variable()` : Renomeia a variável dentro de um método
- `debug_get_stack_frames()` : Obtém os stack frames do depurador do jadx
- `debug_get_threads()` : Obtém informações sobre as threads do depurador do jadx
- `debug_get_variables()` : Obtém as variáveis do depurador do jadx
- `xrefs_to_class()` : Encontra todas as referências a uma classe (retorna referências de nível de método e de nível de classe, suporta paginação)
- `xrefs_to_method()` : Encontra todas as referências a um método (inclui métodos relacionados a override, suporta paginação)
- `xrefs_to_field()` : Encontra todas as referências a um campo (retorna métodos que acessam o campo, suporta paginação)

---

## 🗒️ Exemplos de Prompts

🔍 Compreensão Básica de Código

    "Explique o que esta classe faz em um parágrafo."

    "Resuma as responsabilidades deste método."

    "Há alguma ofuscação nesta classe?"

    "Liste todas as permissões Android que esta classe pode exigir."

🛡️ Detecção de Vulnerabilidades

    "Há algum uso inseguro de API neste método?"

    "Verifique nesta classe se há segredos ou credenciais hardcoded."

    "Este método sanitiza a entrada do usuário antes de usá-la?"

    "Quais vulnerabilidades de segurança este código pode introduzir?"

🛠️ Auxiliares de Engenharia Reversa

    "Desofusque e renomeie as classes e métodos para algo legível."

    "Você consegue inferir o propósito original deste método smali?"

    "De quais bibliotecas ou SDKs esta classe parece fazer parte?"

    "Diga-me quais classes contêm código relacionado a 'encryption'?"

📦 Análise Estática

    "Liste todas as chamadas de API relacionadas à rede nesta classe."

    "Identifique operações de E/S de arquivo e seus riscos potenciais."

    "Este método vaza informações do dispositivo ou PII?"

🤖 Modificação de Código com IA

    "Refatore este método para melhorar a legibilidade."

    "Adicione comentários a este código explicando cada etapa."

    "Reescreva este método Java em Python para análise."

📄 Documentação e Metadados

    "Gere comentários no estilo Javadoc para todos os métodos."

    "A qual pacote ou componente do aplicativo esta classe provavelmente pertence?"

    "Você consegue identificar o tipo de componente Android (Activity, Service, etc.)?"

🐞 Assistente de Depurador```
   "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?"

🛠️ Primeiros Passos

1. Baixar dos Releases: https://github.com/zinja-coder/jadx-ai-mcp/releases

[!NOTE]

Baixe os dois arquivos jadx-ai-mcp-<version>.jar e 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

img.png img_1.png img_2.png img_3.png```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. Use o Claude Desktop

Certifique-se de que o Claude Desktop está em execução com o MCP ativado.

Por exemplo, usei o seguinte para o Kali Linux: https://github.com/aaddrick/claude-desktop-debian

Configure e adicione o servidor MCP ao arquivo 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

E o seguinte conteúdo nele:```json { "mcpServers": { "jadx-mcp-server": { "command": "///uv", "args": [ "--directory", "</PATH/TO/>jadx-mcp-server/", "run", "jadx_mcp_server.py" ] } } }

Substitua:

- `path/to/uv` pelo caminho real até o seu executável `uv`
- `path/to/jadx-mcp-server` pelo caminho absoluto até onde você clonou este repositório

Em seguida, navegue pelo código e interaja por meio de prompts de revisão de código em tempo real usando a integração nativa.

**OU**

ou você pode instalar o jadx_mcp_server diretamente como executável usando o comando abaixo:```
uv tool install git+https://github.com/zinja-coder/jadx-mcp-server

e então você pode simplesmente fornecer jadx_mcp_server na seção command da configuração do mcp.

3. Usar o Cherry Studio

Se você quiser configurar a ferramenta MCP no Cherry Studio, consulte a seguinte configuração.

  • Type: stdio
  • command: uv
  • argument:```bash --directory path/to/jadx-mcp-server run jadx_mcp_server.py
- `path/to/jadx-mcp-server` com o caminho absoluto para onde você clonou este repositório

## 4. Usando LMStudio

Você também pode usar o JADX AI MCP Server com o LM Studio configurando o arquivo mcp.json. Aqui está o guia em vídeo.

https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809

## 5. Executando no Modo HTTP Stream

Você também pode usar o Jadx no Modo HTTP Stream usando a opção `--http` com `jadx_mcp_server.py` como mostrado a seguir:```bash
uv run jadx_mcp_server.py --http

OR

uv run jadx_mcp_server.py --http --port 9999

Opções Avançadas da CLI — Entendendo as Flags

Existem duas conexões separadas e cada uma tem seu próprio 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 | Padrão | Controles |
|------|---------|----------|
| `--http` | off | Use transporte HTTP em vez de stdio |
| `--host` | `127.0.0.1` | **Onde o servidor MCP escuta** (endereço de vinculação para clientes LLM) |
| `--port` | `8651` | **Em qual porta o servidor MCP escuta** |
| `--jadx-host` | `127.0.0.1` | **Onde encontrar o plugin JADX** (a máquina JADX-GUI de destino) |
| `--jadx-port` | `8650` | **Em qual porta o plugin JADX está** |

### Exemplos de Uso

**Cenário 1 — Tudo na mesma máquina (mais comum):**```bash
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http

Cenário 2 — Contêiner Docker ou WSL (servidor MCP acessível a partir da rede do 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

**Cenário 3 — JADX-GUI executando em uma máquina diferente (por exemplo, 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

Cenário 4 — Configuração totalmente remota (tudo em 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]
> ### ⚠️ Aviso de Segurança — Vinculação Remota
>
> Ao usar `--host 0.0.0.0` (ou qualquer endereço que não seja localhost), o servidor MCP vincula-se a **todas as interfaces de rede** sobre **HTTP simples sem autenticação**. Isso significa:
>
> - **Qualquer pessoa na rede** pode conectar e invocar todas as ferramentas MCP
> - **Não há criptografia TLS** — o tráfego pode ser interceptado
> - Um atacante pode usar o servidor para **ler código decompilado**, **renomear classes/métodos** e **acessar informações de depuração**
>
> **Mitigações:**
> - Vincule-se a `0.0.0.0` apenas em **redes confiáveis e isoladas** (ex.: bridge Docker, VM local)
> - Use um **firewall** para restringir o acesso à porta MCP
> - Considere um **túnel SSH** em vez disso: `ssh -L 8651:127.0.0.1:8651 remote-host`

### Compatibilidade com o Modo Stdio

> [!NOTE]
> Ao executar em modo **stdio** (o padrão, sem `--http`), toda saída legível por humanos (banner, verificação de saúde) é gravada em **stderr** para manter **stdout** reservado para o fluxo MCP JSON-RPC. Isso garante compatibilidade com Codex, Claude Desktop e outros clientes MCP baseados em stdio.

## 6. Configuração de porta e host personalizados para o Plugin JADX AI MCP

<img width="800" height="335" alt="image" src="https://assets.kitploit.com/production/public/readmes/6657/34e13964afba1fa722733838892491b2ec9ea2d11f2dfd4e8612aa62817dfa41.png" />

1. Configurar Porta: Configure a porta na qual o Plugin JADX AI MCP irá escutar.
2. Porta Padrão: Reverta as alterações e escute na porta padrão.
3. Reiniciar Servidor: Force a reinicialização do servidor do Plugin JADX AI MCP.
4. Status do Servidor: Verifique o status do servidor do Plugin JADX AI MCP.

Para conectar com o Plugin JADX AI MCP em execução em uma porta personalizada, a opção `--jadx-port` será usada conforme mostrado a seguir:```
uv run jadx_mcp_server.py --jadx-port 8652

Se o plugin JADX AI MCP estiver em execução em uma máquina diferente (por exemplo, JADX em uma VM remota, servidor MCP no seu host local), use a opção --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

### Referência da CLI — Entendendo as Flags

Existem **duas conexões separadas** e cada uma tem seu próprio 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         │                  │
└─────────────┘                        └──────────────────┘                               └──────────────────┘
FlagPadrãoControles
--httpoffUse transporte HTTP em vez de stdio
--host127.0.0.1Onde o servidor MCP escuta (endereço de bind para clientes LLM)
--port8651Em qual porta o servidor MCP escuta
--jadx-host127.0.0.1Onde encontrar o plugin JADX (a máquina JADX-GUI de destino)
--jadx-port8650Em qual porta o plugin JADX está

Exemplos de uso

Cenário 1 — Tudo na mesma máquina (mais comum):```bash

Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650

uv run jadx_mcp_server.py --http

**Cenário 2 — contêiner Docker ou WSL (servidor MCP acessível a partir da rede do 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

Cenário 3 — JADX-GUI executando em uma máquina diferente (ex.: 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

**Cenário 4 — Configuração totalmente remota (tudo em 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

A configuração MCP para a porta jadx personalizada será a seguinte 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" ] } } }

## Experimente

1. Execute o jadx-gui e carregue qualquer arquivo .apk

![img_1.png](https://assets.kitploit.com/production/public/readmes/6657/57512ca023da5fdca0cc3fac791a68e1c76c9ff4e97d9391ca6fdcf8b6e34bff.png)

2. Inicie o claude - Você deve ver o símbolo de martelo

![img2.png](https://assets.kitploit.com/production/public/readmes/6657/18d5936ea3d66f3667e827f2b757926f56230f5b0a150eb0077414cca550009e.png)

3. Clique no símbolo `hammer` e você deve ver algo como o seguinte:

![img3.png](https://assets.kitploit.com/production/public/readmes/6657/ce4c8a048d32bb1f5a16fed73153b83ec78c3253a0109fb7aa064f064b34fc34.png)

4. Execute o seguinte prompt:```text
fetch currently selected class and perform quick sast on it

img4.png

  1. Permita o acesso quando solicitado:

img_1.png

  1. HACK!

img_2.png

Este plugin permite controle total sobre a GUI e o modelo interno do projeto para suportar uma integração mais profunda com LLM, incluindo:

  • Exportar a classe selecionada para o MCP
  • Executar análise automatizada do Claude
  • Receber sugestões de volta inline

Solução de Problemas

Verifique aqui

Nota para Contribuidores

  • Os arquivos relacionados ao JADX-AI-MCP podem ser encontrados neste repositório.

  • Os arquivos relacionados ao jadx-mcp-server podem ser encontrados aqui.

Para relatar bugs, issues, sugestão de funcionalidade, problema de desempenho, dúvida geral, problema de documentação.

  • Por favor, abra uma issue com o respectivo template.

  • Testado no Claude Desktop Client, suporte para outras IAs será testado em breve!

🙏 Créditos

Este projeto é um plugin para o JADX, um incrível decompilador Android de código aberto criado e mantido por @skylot. Toda a lógica central de descompilação pertence a eles. Eu apenas o estendi para suportar meu servidor MCP com capacidades de IA.

📎 README Original (JADX)

O README.md original do jadx está incluído aqui neste repositório para referência e crédito.

Este servidor MCP é possível graças à extensibilidade do JADX-GUI e à incrível comunidade de engenharia reversa de Android.

Também um enorme agradecimento a @aaddrick por desenvolver o Claude desktop para Linux baseado em Debian.

E, por último, agradecimentos a @anthropics por desenvolver o Model Context Protocol e à equipe @FastMCP

Além disso, um enorme agradecimento a todos os projetos de código aberto que servem como dependências para este projeto e que tornaram isso possível.

Dependências

Este projeto usa as seguintes bibliotecas incríveis.

📄 Licença

O JADX-AI-MCP e todos os projetos relacionados herdam a Licença Apache 2.0 do repositório original do JADX.

Aviso de isenção de responsabilidade

As ferramentas jadx-ai-mcp e jadx_mcp_server são destinadas estritamente a fins educacionais, de pesquisa e de avaliação ética de segurança. Elas são fornecidas "como estão", sem garantias, expressas ou implícitas. Os usuários são os únicos responsáveis por garantir que o uso dessas ferramentas esteja em conformidade com todas as leis, regulamentos e diretrizes éticas aplicáveis.

Ao usar jadx-ai-mcp ou jadx_mcp_server, você concorda em usá-los apenas em ambientes que está autorizado a testar, como aplicativos que você possui ou para os quais tem permissão explícita de análise. Qualquer uso indevido dessas ferramentas para engenharia reversa não autorizada, violação de direitos de propriedade intelectual ou atividade maliciosa é estritamente proibido.

Os desenvolvedores de jadx-ai-mcp e jadx_mcp_server não serão responsabilizados por quaisquer danos, perda de dados, consequências legais ou outras consequências resultantes do uso ou uso indevido dessas ferramentas. Os usuários assumem total responsabilidade por suas ações e por qualquer impacto causado pelo seu uso.

Use com responsabilidade. Respeite a propriedade intelectual. Siga práticas éticas de hacking.


🙌 Contribua ou Apoie

  • Achou útil? Dê uma ⭐️
  • Tem ideias? Abra uma issue ou envie um PR
  • Construiu algo por cima? Mande um DM ou me mencione — eu o adicionarei ao README!
  • Gosta do meu trabalho e quer mantê-lo em andamento? Patrocine este projeto.

Construído com ❤️ para as comunidades de engenharia reversa e IA.

Categorias