Skip to main content
Glama
ako2345

Android Security Analyzer

by ako2345

Android Security Analyzer

Servidor MCP para análisis de seguridad estático del código fuente de aplicaciones Android. Se ejecuta en Cloudflare Workers como un servidor MCP remoto sobre HTTP Streamable.

Qué hace

Analiza los archivos fuente del proyecto Android — sin compilar el proyecto — y devuelve un informe de seguridad estructurado. El análisis cubre:

  • Análisis de manifiesto — componentes exportados, permisos peligrosos, tráfico en texto claro, banderas de depuración, configuración de copia de seguridad, versiones de SDK

  • Configuración de Gradle/compilación — configuraciones incorrectas de compilación de release, SDKs desactualizados, dependencias sospechosas, secretos codificados

  • Código fuente (Java/Kotlin) — WebView inseguro, bypass de SSL/TLS, criptografía débil, patrones de inyección SQL, ejecución de procesos, almacenamiento de archivos inseguro, problemas de PendingIntent

  • Configuración XML — debilidades en la configuración de seguridad de red, rutas de proveedor de archivos demasiado amplias

  • Escaneo de secretos — claves de API, tokens, contraseñas, claves privadas, credenciales de nube, cadenas de alta entropía

Todo el análisis se basa en expresiones regulares/patrones y se ejecuta de forma nativa en el runtime de Workers sin necesidad de herramientas externas, Java o el SDK de Android.

Related MCP server: APK Security Guard MCP Suite

Arquitectura

POST /mcp ──► McpServer (JSON-RPC 2.0) ──► Tool Router
                                              │
              ┌───────────────────────────────┘
              ▼
         Orchestrator
              │
    ┌─────────┼─────────┬─────────────┬──────────────┐
    ▼         ▼         ▼             ▼              ▼
 Manifest  Gradle   Source Code   XML Config    Secret
 Analyzer  Analyzer  Analyzer     Analyzer     Scanner
    │         │         │             │              │
    └─────────┴─────────┴─────────────┴──────────────┘
              │
              ▼
     Scoring + Deduplication ──► AnalysisReport

Decisiones clave de diseño:

  • Sin estado — sin sesiones, sin Durable Objects

  • Implementación mínima de MCP JSON-RPC 2.0 (sin dependencias pesadas de SDK)

  • Motor de reglas basado en datos con registro de reglas extensible

  • Analizadores independientes con tipo de hallazgo unificado

  • Análisis XML ligero mediante fast-xml-parser

  • Validación de entrada mediante zod

  • Tamaño del paquete: ~66KB comprimido

Herramientas MCP

Tool

Descripción

analyze_android_project

Análisis de seguridad completo de los archivos del proyecto

list_android_security_checks

Lista todas las reglas de seguridad implementadas

explain_finding

Explicación detallada de una regla específica

health

Estado del servidor y estadísticas del motor de reglas

Instalación

Servidor alojado (recomendado para clientes Cline / MCP): no se necesita instalación local. El servidor se ejecuta en:

https://android-security-analyzer.ako-labs.workers.dev/mcp

Añade esta URL a la configuración de tu cliente MCP (consulta Conexión desde un cliente MCP a continuación).

Desarrollo local:

npm install

Desarrollo

npm run dev

Esto inicia un servidor de desarrollo local de Wrangler. El endpoint MCP está disponible en http://localhost:8787/mcp.

Despliegue

npm run deploy

Despliega en Cloudflare Workers. Requiere autenticación de wrangler (npx wrangler login).

Pruebas

npm test              # Run all tests
npm run test:watch    # Watch mode
npm run typecheck     # TypeScript type checking

Pruebas locales de MCP

Inicializar la conexión

Unix:

curl -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

Windows (PowerShell):

(Invoke-WebRequest -Method Post -Uri "http://localhost:8787/mcp" -ContentType "application/json" -Body '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' -UseBasicParsing).Content

Listar herramientas disponibles

Unix:

curl -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

Windows (PowerShell): la respuesta viene en result.tools; para ver la lista como JSON, use la respuesta sin procesar:

(Invoke-WebRequest -Method Post -Uri "http://localhost:8787/mcp" -ContentType "application/json" -Body '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' -UseBasicParsing).Content

O a través del objeto: (Invoke-RestMethod ...).result.tools | ConvertTo-Json -Depth 5

Comprobar estado

Unix:

curl -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"health","arguments":{}}}'

Windows (PowerShell):

(Invoke-WebRequest -Method Post -Uri "http://localhost:8787/mcp" -ContentType "application/json" -Body '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"health","arguments":{}}}' -UseBasicParsing).Content

Ejecutar análisis (ejemplo mínimo)

Unix:

curl -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 4,
    "method": "tools/call",
    "params": {
      "name": "analyze_android_project",
      "arguments": {
        "projectName": "TestApp",
        "files": [
          {
            "path": "app/src/main/AndroidManifest.xml",
            "content": "<manifest><application android:debuggable=\"true\" android:allowBackup=\"true\"></application></manifest>"
          }
        ]
      }
    }
  }'

Windows (PowerShell):

$body = @{
  jsonrpc = "2.0"
  id = 4
  method = "tools/call"
  params = @{
    name = "analyze_android_project"
    arguments = @{
      projectName = "TestApp"
      files = @(
        @{
          path = "app/src/main/AndroidManifest.xml"
          content = "<manifest><application android:debuggable=`"true`" android:allowBackup=`"true`"></application></manifest>"
        }
      )
    }
  }
} | ConvertTo-Json -Depth 10
(Invoke-WebRequest -Method Post -Uri "http://localhost:8787/mcp" -ContentType "application/json" -Body $body -UseBasicParsing).Content

Conexión desde un cliente MCP

Añade a la configuración de tu cliente MCP:

{
  "mcpServers": {
    "android-security-analyzer": {
      "url": "http://localhost:8787/mcp"
    }
  }
}

Para producción (alojado):

{
  "mcpServers": {
    "android-security-analyzer": {
      "url": "https://android-security-analyzer.ako-labs.workers.dev/mcp"
    }
  }
}

Reglas de seguridad

El analizador implementa 53 reglas de seguridad en 5 categorías:

Categoría

Prefijo

Reglas

Ejemplos

Manifiesto

MAN-*

17

depurable, allowBackup, componentes exportados, permisos

Gradle

GRD-*

9

configuración de release, versiones de SDK, dependencias, secretos

Código

SRC-*

17

WebView, SSL/TLS, criptografía, inyección, almacenamiento de archivos

Config XML

XML-*

4

configuración de seguridad de red, rutas de proveedor de archivos

Secreto

SEC-*

7

claves de API, tokens, contraseñas, credenciales de nube

Cada hallazgo incluye:

  • ID de regla estable

  • Severidad (crítica/alta/media/baja/informativa) y confianza (alta/media/baja)

  • Ruta de archivo y número de línea (cuando se puede determinar)

  • Fragmento de evidencia

  • Mapeos de CWE y OWASP Mobile Top 10

  • Recomendación accionable

Puntuación

La puntuación de riesgo (0-100) se calcula a partir de las severidades de los hallazgos:

  • Crítica: 9 puntos

  • Alta: 6 puntos

  • Media: 3 puntos

  • Baja: 1 punto

  • Informativa: 0 puntos

La suma bruta se normaliza contra un máximo esperado de 50 puntos.

Limitaciones

  • No es un reemplazo de SAST — heurísticas basadas en patrones/expresiones regulares, no análisis completo de AST/flujo de datos

  • No requiere compilación — analiza el código fuente sin procesar, por lo que las transformaciones en tiempo de compilación no son visibles

  • Posibles falsos positivos — especialmente para el escaneo de secretos y algunos patrones de código

  • Restricciones de Workers — límite de memoria de 128MB, límites de tiempo de CPU, sin acceso al sistema de archivos

  • Sin análisis de APK/AAB — solo código fuente

  • Sin análisis interprocedimental — los patrones se comparan por archivo, no a través de grafos de llamadas

Estructura del Proyecto

src/
├── index.ts                          # Worker entry point
├── server/
│   ├── mcp.ts                        # MCP JSON-RPC 2.0 handler
│   └── tools/                        # MCP tool implementations
│       ├── analyzeAndroidProject.ts
│       ├── listAndroidSecurityChecks.ts
│       ├── explainFinding.ts
│       └── health.ts
├── core/
│   ├── types.ts                      # TypeScript types & Zod schemas
│   ├── scoring.ts                    # Risk score computation
│   ├── registry.ts                   # Rule registry
│   └── orchestrator.ts              # Analysis orchestrator
├── analyzers/
│   ├── manifestAnalyzer.ts
│   ├── gradleAnalyzer.ts
│   ├── sourceAnalyzer.ts
│   ├── xmlConfigAnalyzer.ts
│   └── secretScanner.ts
├── parsers/
│   ├── xml.ts                        # XML parser wrapper
│   ├── gradle.ts                     # Gradle file parser
│   ├── source.ts                     # Source code pattern matcher
│   └── files.ts                      # File classifier
├── rules/
│   ├── manifestRules.ts
│   ├── gradleRules.ts
│   ├── sourceRules.ts
│   ├── xmlRules.ts
│   └── secretRules.ts
├── mappings/
│   ├── cwe.ts                        # CWE descriptions
│   └── owaspMobile.ts               # OWASP Mobile Top 10
└── utils/
    ├── lines.ts                      # Line number utilities
    ├── paths.ts                      # Path classification
    └── text.ts                       # Text utilities
test/
├── fixtures/                         # Sample Android project files
├── unit/                             # Unit tests per module
└── integration/                      # Full analysis integration tests

Añadir Nuevas Reglas

  1. Define la regla en el archivo apropiado bajo src/rules/

  2. Añade la lógica de detección en el analizador correspondiente bajo src/analyzers/

  3. Añade el mapeo CWE en src/mappings/cwe.ts si es necesario

  4. Añade un caso de prueba

  5. La regla se registra automáticamente mediante src/core/registry.ts

Licencia

MIT

F
license - not found
Not graded
quality - not tested
D
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

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides a one-stop automated solution for Android APK security analysis by integrating tools like JEB, JADX, APKTOOL, FlowDroid, and MobSF into unified MCP standard API interfaces.
    11
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for Android APK triage, providing tools to parse APK headers, list DEX classes, and decode AndroidManifest.xml using apktool or androguard backends.
    5
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Local static-analysis assistant for Android malware research that manages investigation cases, exposes MCP tools via a local server, and persists evidence-backed findings without cloud dependency.
    MIT

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/ako2345/android-security-analyzer'

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