Skip to main content
Glama
1111laaaddaaa

StaticApkAuditor MCP

StaticApkAuditor MCP

Un servidor Model Context Protocol (MCP) que expone descompilación basada en Apktool y un conjunto de heurísticas personalizadas de análisis estático para la evaluación de seguridad de APK de Android, mediante comandos en lenguaje natural en Claude Code / Claude Desktop.

Para qué sirve

Le apuntas a un APK. Lo descompila y luego le da a un asistente de IA un conjunto de herramientas para analizar el resultado: superficie de ataque, permisos, secretos codificados, uso de criptografía, bibliotecas nativas, candidatos de lógica de negocio; y contrasta los hallazgos con otras herramientas como MobSF. Cada llamada se registra en disco como un informe markdown, de modo que terminas con un rastro de auditoría, no solo una transcripción del chat.

Esto es una ayuda de análisis estático, no un pentest completo. Varias herramientas producen candidatos para verificación manual/dinámica, no vulnerabilidades confirmadas; esto se indica explícitamente en las descripciones de las herramientas y en los prompts integrados. El comportamiento en tiempo de ejecución (condiciones de carrera, bypass de flujos de trabajo, exfiltración real de datos) necesita pruebas dinámicas (Frida, Burp/mitmproxy, un dispositivo real) para confirmarse.

Related MCP server: GDA-MCP-Server

Inicio rápido

Se asume que Java, Apktool y Python 3.10+ ya están instalados (consulta Requisitos previos más abajo si no es así).

# 1. Set up the project folder
mkdir static-apk-auditor && cd static-apk-auditor

# 2. Create a venv and install the one dependency
python3 -m venv venv
source venv/bin/activate          # Windows: venv\Scripts\activate
pip install -r requirements.txt

# 3. Sanity check — should hang waiting for stdio input, Ctrl+C to stop
python3 server.py

# 4. Register with Claude Code (adjust paths to your actual location)
claude mcp add static-apk-auditor \
  --env APKTOOL_WORK_DIR=$(pwd)/data \
  -- $(pwd)/venv/bin/python3 $(pwd)/server.py

# 5. Verify it connected
claude mcp list

Luego, dentro de una sesión de claude, en la misma carpeta desde la que ejecutaste claude mcp add (el registro se limita por defecto al ámbito de esa carpeta):

/mcp__static-apk-auditor__security_audit
/absolute/path/to/some.apk

o simplemente pregunta en lenguaje natural: el modelo llamará a decode_apk y al resto de herramientas por su cuenta:

Decompile /absolute/path/to/some.apk and give me a quick security triage.

Consulta Prompts y Herramientas más abajo para ver todo lo disponible, o ejecuta /mcp en una sesión de Claude Code para explorarlos interactivamente.

Estructura del proyecto

static-apk-auditor/                  # your folder can be named anything — this is just an example
├── server.py                    # the MCP server — single file, FastMCP-based
├── requirements.txt              # just "mcp"
├── README.md                     # this file
├── prompts/
│   ├── security_audit.md         # 16-point checklist, OWASP Mobile Top 10 mapping
│   └── mobsf_review.md           # MobSF finding validation workflow
├── venv/                         # created locally, not part of the repo
└── data/                         # created automatically on first decode_apk call
                                   # (this is APKTOOL_WORK_DIR — see Configuration below)

Distribución de datos en tiempo de ejecución (se crea automáticamente)

Cada APK que analices recibe su propia carpeta autocontenida dentro de APKTOOL_WORK_DIR:

$APKTOOL_WORK_DIR/<apk_filename_without_extension>/
├── source/
│   └── <original>.apk           # copy of the APK you pointed the tool at
├── decoded/
│   ├── AndroidManifest.xml
│   ├── smali/, smali_classes2/, ...
│   ├── res/, assets/, lib/
│   └── ...                      # apktool's decompiled output
├── reports/
│   ├── 20260706_175359_809_decode_apk.md
│   ├── 20260706_175412_112_analyze_manifest.md
│   ├── 20260706_175430_501_check_root_detection.md
│   └── ...                      # one markdown file per tool call, ever
└── final_reports/
    ├── 20260706_223500_123_security_audit.md
    └── 20260706_224100_456_mobsf_review.md
                                   # the finished, synthesized reports
                                   # (Summary + Detailed Findings + Risk Table),
                                   # saved explicitly via save_final_report

Cada llamada a herramienta — sin importar qué herramienta ni si tiene éxito o falla — escribe un archivo markdown con marca de tiempo en la carpeta reports/ de ese APK. Esto no es un registro opcional por llamada; es un decorador (@logged_tool) aplicado a todas las herramientas registradas, de modo que nada de lo que llame a este servidor queda sin registrar. Cada informe contiene el nombre de la herramienta, los parámetros con los que se llamó y su salida completa.

reports/ y final_reports/ tienen propósitos distintos: reports/ es el registro bruto de llamadas (cada invocación individual de herramienta, útil para auditar exactamente qué se comprobó y cuándo), mientras que final_reports/ solo contiene los informes pulidos y legibles por humanos: el entregable real que le darías a un desarrollador o cliente. Los prompts security_audit y mobsf_review terminan ambos con una llamada obligatoria a save_final_report, que es lo que llena final_reports/; sin esa llamada, el informe sintetizado solo existe en la respuesta del chat y no se persiste en ningún sitio del disco.

Requisitos previos

1. Java JDK 8+ (requerido por Apktool)

# Ubuntu/Debian
sudo apt update && sudo apt install default-jdk

# macOS
brew install openjdk
java -version

2. Apktool

# Ubuntu/Debian
sudo apt install apktool

# macOS
brew install apktool
apktool --version

3. Python 3.10+

python3 --version

4. (Opcional) aapt — para obtener los metadatos completos de get_apk_info sin necesidad de descompilar primero

brew install aapt   # or: brew install --cask android-commandlinetools

Si aapt no está instalado, get_apk_info recurre a analizar el AndroidManifest.xml ya descompilado en lugar de fallar silenciosamente.

Instalación

git clone <your-repo-or-just-copy-the-files> static-apk-auditor
cd static-apk-auditor
python3 -m venv venv
source venv/bin/activate      # Windows: venv\Scripts\activate
pip install -r requirements.txt

Comprobación básica:

python3 server.py
# Should hang waiting for stdio input (that's normal) — Ctrl+C to stop.

Conexión con Claude Code

claude mcp add apktool-pro \
  --env APKTOOL_WORK_DIR=/absolute/path/to/static-apk-auditor/data \
  -- /absolute/path/to/static-apk-auditor/venv/bin/python3 /absolute/path/to/static-apk-auditor/server.py

Verifica:

claude mcp list
claude mcp get apktool-pro   # should show "✔ Connected"

Nota: claude mcp add registra el servidor con ámbito en el directorio actual por defecto (ámbito local). Si quieres que esté disponible desde cualquier proyecto, añade --scope user.

Conexión con Claude Desktop (alternativa)

Edita tu archivo de configuración (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "apktool-pro": {
      "command": "/absolute/path/to/static-apk-auditor/venv/bin/python3",
      "args": ["/absolute/path/to/static-apk-auditor/server.py"],
      "env": {
        "APKTOOL_WORK_DIR": "/absolute/path/to/static-apk-auditor/data"
      }
    }
  }
}

Reinicia Claude Desktop después de guardar.

Configuración (variables de entorno)

Variable

Default

Purpose

APKTOOL_PATH

apktool

Ruta al ejecutable de apktool, si no está en PATH

AAPT_PATH

aapt

Ruta a aapt, si no está en PATH

APKTOOL_WORK_DIR

~/.static-apk-auditor

Carpeta raíz para todos los datos de código fuente/descompilados/informes por APK

Herramientas

Núcleo (descompilación y manifiesto)

Tool

Parameters

Description

decode_apk

apk_path, force=False

Descompila un APK con apktool. La salida persiste en APKTOOL_WORK_DIR/<slug>/decoded/ (no es un directorio temporal), y se conserva una copia del APK fuente en .../source/.

get_apk_info

apk_path

Metadatos básicos: paquete, versión, niveles de SDK, tamaño del archivo. Usa aapt si está disponible; de lo contrario, recurre a analizar el manifiesto descompilado.

build_apk

decoded_dir, output_apk=None

Recompila un APK a partir de un directorio descompilado (posiblemente modificado). La salida no está firmada: fírmala por separado con apksigner.

install_framework

framework_apk

Instala un APK de framework del sistema para que apktool pueda descompilar aplicaciones de sistema/OEM que lo referencien.

analyze_manifest

decoded_dir

Analiza AndroidManifest.xml directamente mediante xml.etree: paquete/versión/SDK, componentes exportados (Activity/Service/Receiver/Provider), filtros de intent/enlaces profundos, debuggable/allowBackup/taskAffinity.

list_permissions

decoded_dir

Enumera todos los permisos solicitados y marca los clasificados como "peligrosos" por el modelo de permisos de Android.

extract_strings

decoded_dir, locale="en"

Extrae los recursos de cadena para una configuración regional determinada.

find_smali_references

decoded_dir, pattern, max_matches=200

Búsqueda regex en todos los archivos .smali descompilados, con archivo + línea para cada coincidencia.

Heurísticas de seguridad

Tool

Parameters

Description

list_native_libraries

decoded_dir

Enumera las bibliotecas .so y las arquitecturas de CPU incluidas en el APK: marca el código que la búsqueda smali no puede inspeccionar.

check_ssl_pinning

decoded_dir

Busca implementaciones personalizadas de TrustManager/HostnameVerifier que podrían anular la validación de certificados, además del uso de CertificatePinner y el contenido de network_security_config.xml.

check_pending_intents

decoded_dir

Encuentra llamadas a PendingIntent.getActivity/getBroadcast/getService y marca las que no tienen FLAG_IMMUTABLE cerca.

extract_js_bundle_strings

decoded_dir, pattern=<url regex>

Para aplicaciones React Native / Expo: busca en assets/*.bundle y assets/*.js un patrón (por defecto extrae URLs, que es donde suelen filtrarse los endpoints reales del backend).

check_root_detection

decoded_dir

Busca firmas de detección de root/emulador y de anti-manipulación: rutas del binario su, RootBeer/RootTools, SafetyNet, Play Integrity, etiqueta de compilación test-keys, nombres de método genéricos del tipo isRooted. Su presencia indica lo que necesitarás evadir para las pruebas dinámicas; su ausencia es en sí misma un hallazgo para aplicaciones sensibles.

Reconocimiento de lógica de negocio

Tool

Parameters

Description

map_sensitive_flows

decoded_dir, extra_keywords=None

Localiza métodos/clases cuyos nombres sugieran operaciones sensibles (pagos, privilegios, roles, descuentos, cuotas) y muestra las llamadas invoke-* cercanas como contexto ligero de llamada. Un mapa de candidatos para revisión manual/dinámica: no una lista de vulnerabilidades confirmadas.

find_client_side_only_checks

decoded_dir

Heurística: marca coincidencias de palabras clave sensibles donde aparece una comparación local (if-*/cmp-*) sin una llamada de red adyacente — sugiere que la decisión podría tomarse en el lado del cliente y ser potencialmente evadible mediante parcheo + recompilación.

Validación de informes MobSF

Herramienta

Parámetros

Descripción

load_mobsf_report

report_path

Carga y normaliza un informe JSON de análisis estático de MobSF (code_analysis, manifest_analysis, permissions, urls/emails/firebase_urls, network_security, certificate_analysis). No juzga la validez por sí mismo.

cross_validate_mobsf_finding

decoded_dir, finding_pattern, mobsf_file_hint=None

Contrasta un hallazgo de MobSF contra tu propio resultado descompilado (smali + recursos de cadenas) para detectar falsos positivos. Devuelve evidencia para que el modelo clasifique — Confirmado / Falso Positivo / Requiere Revisión Manual — no clasifica por sí mismo.

Prompts (flujos de trabajo guiados)

Los prompts se invocan explícitamente como comandos de barra en Claude Code (/apktool-pro:<name>), a diferencia de las herramientas, que el modelo llama por sí mismo según sea necesario.

Prompt

Argumentos

Qué hace

security_audit

apk_path

Ejecuta la lista de verificación completa de 16 puntos (superficie de ataque, permisos, secretos, criptografía, WebView, almacenamiento, fijación SSL, secuestro de tareas, detección de root, receptores/proveedores exportados, paquete JS, librerías nativas, registro, versiones de dependencias, mutabilidad de PendingIntent, lógica de negocio) y genera: Resumen → Hallazgos Detallados (con calificación de Confianza + pasos de PoC con adb) → Tabla de Riesgo mapeada a OWASP Mobile Top 10 (M1–M10).

mobsf_review

apk_path, mobsf_report_path

Carga un informe JSON de MobSF, valida de forma cruzada cada hallazgo contra el código descompilado real, clasifica cada uno como Confirmado/Falso Positivo/Requiere Revisión Manual, re-evalúa la severidad de forma independiente de la calificación propia de MobSF y produce una Lista de Acciones Priorizadas solo con los hallazgos Confirmados.

quick_triage

apk_path

Pase rápido: componentes exportados + permisos peligrosos + secretos hardcodeados obvios. Para cuando no necesitas la auditoría completa.

Ejemplos de uso

Use decode_apk to decompile /path/to/app.apk
/apktool-pro:security_audit apk_path="/path/to/app.apk"
Use check_root_detection on the decompiled output
/apktool-pro:mobsf_review apk_path="/path/to/app.apk" mobsf_report_path="/path/to/mobsf_report.json"

Para ver todas las herramientas disponibles y sus parámetros exactos en cualquier momento, ejecuta /mcp en una sesión de Claude Code y selecciona apktool-pro.

Cómo obtener un informe de MobSF

Si estás ejecutando MobSF localmente:

# upload the APK, get back a hash
curl -F 'file=@/path/to/app.apk' http://localhost:8000/api/v1/upload \
  -H "Authorization: <MOBSF_API_KEY>"

# fetch the JSON report using that hash
curl -X POST http://localhost:8000/api/v1/report_json \
  -H "Authorization: <MOBSF_API_KEY>" \
  --data "hash=<hash_from_upload>" -o mobsf_report.json

Limitaciones conocidas

  • Solo análisis estático. Nada aquí ejecuta la aplicación ni intercepta tráfico real. Los hallazgos de lógica de negocio y algunos hallazgos estáticos "confirmados" aún necesitan verificación dinámica antes de tratarlos como probados.

  • La salida de build_apk no está firmada. Firma con apksigner antes de instalar en un dispositivo.

  • Las heurísticas basadas en regex (check_ssl_pinning, check_root_detection, map_sensitive_flows, etc.) pueden pasar por alto código ofuscado/renombrado y pueden dar falsos positivos en coincidencias no relacionadas — trata su salida como una lista corta para revisar, no como un veredicto.

  • install_framework solo es necesario para decodificar APKs de sistema/OEM que hacen referencia a framework-res.apk; la mayoría de los análisis de aplicaciones de terceros no lo necesitarán.

Notas de diseño

  • APKTOOL_WORK_DIR siempre se respeta — cada APK obtiene una carpeta persistente y autocontenida (source/, decoded/, reports/, final_reports/); nada escribe en un tempdir desechable.

  • get_apk_info recurre a analizar el manifiesto decodificado si aapt no está instalado, en lugar de no devolver nada útil.

  • Cada llamada de herramienta se registra automáticamente (reports/); los informes finales sintetizados se guardan por separado mediante save_final_report (final_reports/).

  • Construido sobre FastMCP para un registro sencillo de herramientas/prompts.

Solo analiza APKs que poseas o para las que tengas permiso explícito por escrito para probar. Los APKs descompilados pueden contener datos de usuario sensibles — maneja el resultado en consecuencia y limpia APKTOOL_WORK_DIR después de un engagement si contiene datos de clientes. Esta herramienta no realiza exfiltración de red ni explotación activa por sí misma; los comandos de PoC en la salida de security_audit (p. ej. adb shell am start ...) están pensados para ejecutarse manualmente contra un dispositivo/emulador que controles.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that enables AI assistants to analyze Android APK and iOS IPA files for security issues through natural language conversation, including permission auditing, secret detection, and SDK enumeration.
    12
    14
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Android APK static analysis in Cursor/Claude via GDA CLI Server, supporting reconnaissance, attack surface scanning, and code decompilation through natural language.
    11
    GPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for analyzing Android APK, DEX, or JAR files via a headless jadx engine, enabling LLM agents to query decompiled code, symbols, call graphs, and more.
    1
    GPL 3.0

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/1111laaaddaaa/static-apk-auditor'

If you have feedback or need assistance with the MCP directory API, please join our Discord server