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 listLuego, 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.apko 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_reportCada 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 -version2. Apktool
# Ubuntu/Debian
sudo apt install apktool
# macOS
brew install apktool
apktool --version3. Python 3.10+
python3 --version4. (Opcional) aapt — para obtener los metadatos completos de get_apk_info sin necesidad de descompilar primero
brew install aapt # or: brew install --cask android-commandlinetoolsSi 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.txtComprobació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.pyVerifica:
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 |
|
| Ruta al ejecutable de apktool, si no está en PATH |
|
| Ruta a aapt, si no está en PATH |
|
| 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 |
|
| Descompila un APK con apktool. La salida persiste en |
|
| 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. |
|
| Recompila un APK a partir de un directorio descompilado (posiblemente modificado). La salida no está firmada: fírmala por separado con |
|
| Instala un APK de framework del sistema para que apktool pueda descompilar aplicaciones de sistema/OEM que lo referencien. |
|
| Analiza |
|
| Enumera todos los permisos solicitados y marca los clasificados como "peligrosos" por el modelo de permisos de Android. |
|
| Extrae los recursos de cadena para una configuración regional determinada. |
|
| Búsqueda regex en todos los archivos |
Heurísticas de seguridad
Tool | Parameters | Description |
|
| Enumera las bibliotecas |
|
| Busca implementaciones personalizadas de |
|
| Encuentra llamadas a |
|
| Para aplicaciones React Native / Expo: busca en |
|
| 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 |
Reconocimiento de lógica de negocio
Tool | Parameters | Description |
|
| Localiza métodos/clases cuyos nombres sugieran operaciones sensibles (pagos, privilegios, roles, descuentos, cuotas) y muestra las llamadas |
|
| Heurística: marca coincidencias de palabras clave sensibles donde aparece una comparación local ( |
Validación de informes MobSF
Herramienta | Parámetros | Descripción |
|
| Carga y normaliza un informe JSON de análisis estático de MobSF ( |
|
| 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 |
|
| 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). |
|
| 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. |
|
| 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.jsonLimitaciones 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_apkno está firmada. Firma conapksignerantes 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_frameworksolo es necesario para decodificar APKs de sistema/OEM que hacen referencia aframework-res.apk; la mayoría de los análisis de aplicaciones de terceros no lo necesitarán.
Notas de diseño
APKTOOL_WORK_DIRsiempre se respeta — cada APK obtiene una carpeta persistente y autocontenida (source/,decoded/,reports/,final_reports/); nada escribe en un tempdir desechable.get_apk_inforecurre a analizar el manifiesto decodificado siaaptno 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 mediantesave_final_report(final_reports/).Construido sobre
FastMCPpara un registro sencillo de herramientas/prompts.
Uso legal / responsable
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.
This server cannot be installed
Maintenance
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
- AlicenseAqualityCmaintenanceAn 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.12144MIT
- AlicenseNot gradedqualityBmaintenanceEnables Android APK static analysis in Cursor/Claude via GDA CLI Server, supporting reconnaissance, attack surface scanning, and code decompilation through natural language.11GPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to perform autonomous Android security analysis, including static analysis, dynamic analysis, and Frida instrumentation, powered by MobSF.1MIT
- AlicenseNot gradedqualityBmaintenanceMCP 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.1GPL 3.0
Related MCP Connectors
Generate SBOMs, scan vulnerabilities, and analyze dependencies from local projects or Git repos.
MCP server for static security analysis of Android source code
Offline methodology engine for authorized penetration testing, CTF, and security research.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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