Skip to main content
Glama
mstivenvelezc-ctrl

android-security-mcp

android-security-mcp

Servidor MCP (Model Context Protocol) para auditoría de seguridad de apps Android, pensado como herramienta de aprendizaje de hacking ético y análisis de aplicaciones. Combina tres fuentes:

  • ADB → inventario de apps, permisos, extracción de APK y desinstalación.

  • VirusTotal → reputación de malware por hash contra 70+ motores antivirus.

  • MobSF → análisis estático de vulnerabilidades (OWASP Mobile Top 10).

⚠️ Importante (alcance honesto): esto es un auditor, no un antivirus en tiempo real. Android aísla cada app en su sandbox, así que ninguna herramienta aquí "limpia" el dispositivo sola. El flujo es: extraer → analizar → recomendar. Las acciones destructivas (desinstalar) siempre pasan por confirmación humana. Úsalo solo sobre dispositivos y apps que controles o tengas autorización para auditar.


Arquitectura

android-security-mcp/
├── src/
│   ├── index.ts                 # entrada, servidor MCP + stdio
│   ├── config.ts                # carga de .env y guard de paquetes/confirmación
│   ├── schemas/
│   │   └── index.ts             # esquemas Zod centralizados (raw shapes)
│   ├── lib/
│   │   ├── exec.ts              # ejecución de comandos sin shell (anti-inyección)
│   │   ├── adb.ts               # wrapper de ADB
│   │   ├── hash.ts              # SHA-256 por streaming
│   │   ├── virustotal.ts        # cliente API VirusTotal v3
│   │   ├── mobsf.ts             # cliente REST de MobSF
│   │   └── result.ts            # helpers de respuesta MCP
│   └── tools/
│       ├── index.ts             # registerAllTools(server)
│       ├── deviceTools.ts       # inventario y permisos (lectura)
│       ├── extractTools.ts      # extracción de APK y hashing
│       ├── virustotalTools.ts   # reputación de malware
│       ├── mobsfTools.ts        # análisis de vulnerabilidades
│       ├── auditTools.ts        # flujo de auditoría consolidado
│       └── actionTools.ts       # acciones destructivas (con guard)
├── .env.example
├── tsconfig.json
└── package.json

Sigue el patrón modular registerXxxTools(server) con esquemas Zod centralizados y exactOptionalPropertyTypes: true.


Related MCP server: frida-mcp

Requisitos previos

  1. Node.js ≥ 18.17 (usa fetch, FormData y Blob nativos).

  2. platform-tools (adb) instalado y en el PATH, o ruta en ADB_PATH.

  3. Dispositivo con Depuración USB activada y autorizada (adb devices debe verlo).

  4. API key de VirusTotal (gratuita): https://www.virustotal.com/gui/my-apikey

  5. MobSF corriendo en local con Docker:

docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
# usuario/clave por defecto: mobsf/mobsf — la API key aparece en la consola

Instalación

npm install
cp .env.example .env   # y rellena tus claves
npm run build

Para desarrollo con recarga: npm run dev.


Configuración (.env)

Variable

Descripción

Default

ADB_PATH

Ruta al ejecutable de adb

adb

ADB_SERIAL

Serial del dispositivo (si hay varios)

(vacío)

REQUIRE_CONFIRM

Exige confirm=true en acciones destructivas

true

ALLOWED_PACKAGES_PREFIX

Prefijos de paquete permitidos (CSV). Vacío = todos

(vacío)

WORK_DIR

Carpeta donde se extraen los APK

./work

VT_API_KEY

API key de VirusTotal

(vacío)

MOBSF_URL

URL de la instancia MobSF

http://localhost:8000

MOBSF_API_KEY

API key de MobSF

(vacío)


Registro en Claude Code

En tu configuración de MCP (Windows), apunta al build:

{
  "mcpServers": {
    "android-security": {
      "command": "node",
      "args": ["C:\\Users\\mstiv\\proyectos\\android-security-mcp\\dist\\index.js"],
      "env": {
        "ADB_PATH": "C:\\Users\\mstiv\\AppData\\Local\\Android\\Sdk\\platform-tools\\adb.exe",
        "VT_API_KEY": "tu_api_key",
        "MOBSF_API_KEY": "tu_api_key",
        "REQUIRE_CONFIRM": "true"
      }
    }
  }
}

Herramientas disponibles

Herramienta

Tipo

Qué hace

adb_list_devices

lectura

Lista dispositivos conectados

adb_device_info

lectura

Modelo, Android, SDK, parche de seguridad

adb_list_packages

lectura

Lista apps (por defecto solo de usuario)

adb_package_permissions

lectura

Permisos solicitados/concedidos y peligrosos

apk_pull

lectura

Extrae el APK base y calcula su SHA-256

apk_hash

lectura

SHA-256 de un APK ya en disco

vt_file_report

lectura

Reputación en VirusTotal por hash

vt_upload_file

escritura

Sube un APK a VirusTotal si el hash no existe

mobsf_upload

escritura

Sube un APK a MobSF

mobsf_scan

escritura

Lanza análisis estático

mobsf_scorecard

lectura

Resumen de seguridad del análisis

mobsf_report

lectura

Informe JSON completo

mobsf_delete_scan

destructiva

Borra un análisis de MobSF

audit_package

lectura

Flujo completo: extrae + permisos + VT + MobSF + recomendación

adb_uninstall_package

destructiva

Desinstala una app (requiere confirm=true)


Flujo típico de uso

  1. adb_list_devices → confirma que el dispositivo está conectado.

  2. adb_list_packages → ve qué apps de usuario hay instaladas.

  3. audit_package { packageName: "com.ejemplo.sospechosa" } → informe consolidado.

  4. Si el informe recomienda actuar: adb_uninstall_package { packageName, confirm: true }.


Notas de seguridad

  • La ejecución de comandos usa execFile (sin shell) para evitar inyección.

  • ALLOWED_PACKAGES_PREFIX limita el radio de acción a paquetes concretos.

  • REQUIRE_CONFIRM=true evita que el agente desinstale apps por error o por un prompt injection.

  • Términos de VirusTotal: la API pública no puede usarse como sustituto comercial de un antivirus. Esto es para auditoría/aprendizaje, no para distribuir como producto antivirus.

Próximos pasos sugeridos

  • Persistir informes de auditoría en disco/JSON para comparar versiones de una misma app.

  • Añadir reglas YARA propias sobre el APK extraído.

  • Integrar mobsfscan para análisis de código fuente en tus propios proyectos.

Licencia

MIT

Available Tools

15 tools
adb_device_infoInformación del dispositivoA
Read-only

Devuelve modelo, fabricante, versión de Android, SDK y parche de seguridad.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, consistent with a read-only info retrieval. Description adds specifics on returned data, complementing annotations. No mention of failure cases, but adequate for a simple query.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that efficiently conveys the tool's output. No redundant words or structural issues.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter tool with readOnly annotations, the description covers the key return values. Could mention device connectivity requirement, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and full schema coverage, so no additional parameter explanation is needed. Baseline score 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Devuelve' (returns) and lists concrete fields (model, manufacturer, Android version, SDK, security patch), clearly distinguishing from sibling ADB tools like adb_list_devices or adb_list_packages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, nor any context about prerequisites or exclusions. The description is purely functional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_list_devicesListar dispositivosA
Read-only

Lista los dispositivos Android conectados por ADB con su estado y modelo.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, so the description adds no further behavioral disclosure. It does not mention edge cases like no devices connected or timeout behavior, but also does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence that is front-loaded with the action and result. It is concise and contains no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with no parameters and annotations disclosing read-only nature, the description is complete. It could slightly improve by mentioning output format or behavior when no devices are connected, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the description implicitly confirms this. Baseline for zero parameters is 4, and the description adds no unnecessary param info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists Android devices connected via ADB with their status and model. It uses specific verbs and resources, and is distinct from sibling tools like adb_device_info which focuses on a single device's details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a list of connected devices is needed, but it does not explicitly mention when to avoid this tool or suggest alternatives like adb_device_info for detailed device information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_list_packagesListar apps instaladasB
Read-only

Lista los paquetes instalados. Por defecto solo apps de usuario (no del sistema).

ParametersJSON Schema
NameRequiredDescriptionDefault
thirdPartyOnlyNoSi true, solo apps instaladas por el usuario (no del sistema).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description adds value by specifying the default filtering behavior (user apps only). However, it does not disclose other behavioral aspects like network requirements or that a device must be connected, which could be inferred but are not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences. It communicates the essential purpose and default behavior without any unnecessary words, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description provides adequate information about the input behavior. However, it omits details about the output format (e.g., list of package names) and any potential side effects like requiring device connection, which could affect agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has full description coverage for the single parameter (thirdPartyOnly). The description reinforces the parameter's meaning by stating the default behavior, adding context that helps the agent understand the filtering logic beyond the schema's explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists installed packages, with a default filter for user apps. The action and resource are specific and unambiguous. While it distinguishes from sibling tools by its focus on listing packages, it could be more explicit about differentiation from other list-like operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of when not to use it, prerequisites, or any context for selecting it over other available tools such as adb_uninstall_package or adb_device_info.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_package_permissionsPermisos de una appA
Read-only

Analiza los permisos solicitados y concedidos de un paquete y resalta los peligrosos.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNameYesNombre del paquete Android (applicationId), ej: com.whatsapp

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, which is consistent with the analytical description. The description adds that it highlights dangerous permissions, which provides a behavioral detail beyond the schema. However, it does not describe the response format, error handling, or any side effects. Given the annotations, the description adds moderate value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the key information: it analyzes permissions and highlights dangerous ones. Every word contributes to the purpose. There is no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no output schema, read-only annotations), the description covers the core purpose but lacks details about return format (e.g., list of permissions, severity levels), prerequisites (ADB connection), and failure modes (e.g., invalid package name). For a basic analysis tool, it is minimally complete but could provide more context for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with a description and pattern for packageName. The description does not add additional parameter-level information; it focuses on the output (highlighting dangerous permissions). Since schema coverage is high, a baseline of 3 is appropriate. The description does not contradict the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Analiza' (analyzes) and clearly identifies the resource (permissions of a package) and the outcome (highlights dangerous ones). This distinguishes it from sibling tools like adb_list_packages which list packages, or mobsf_scan which performs security scanning. The purpose is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., ADB connection, device attached), nor conditions under which this tool is preferred over others like vt_file_report or mobsf_scorecard. The context signals show many sibling tools, but no explicit usage guidelines are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_uninstall_packageDesinstalar appA
Destructive

Desinstala una app de usuario. Acción destructiva: si REQUIRE_CONFIRM está activo, exige confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoDebe ser true para ejecutar realmente la desinstalación cuando REQUIRE_CONFIRM está activo.
packageNameYesPaquete a desinstalar (solo apps de usuario).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond the destructiveHint annotation by explaining that the confirm parameter is mandatory depending on the REQUIRE_CONFIRM setting, which helps the agent understand when confirmation is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences: the first states the purpose and the second adds crucial behavioral detail. No redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive tool with two parameters and no output schema, the description adequately covers purpose, destructive nature, and the confirm requirement. It could optionally mention what happens when REQUIRE_CONFIRM is inactive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema already describes both parameters with 100% coverage, the description adds meaning by linking the confirm parameter to the server-side REQUIRE_CONFIRM setting and clarifying that packageName is only for user apps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Desinstala' (uninstall) and the resource 'app de usuario' (user app), distinguishing it from sibling tools like adb_list_packages or adb_device_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance that the action is destructive and that the confirm parameter is required when REQUIRE_CONFIRM is active, but it does not explicitly state when to use this tool versus alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apk_hashHash de un APK localA
Read-only

Calcula el SHA-256 de un archivo APK ya presente en disco (sin volver a extraerlo).

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesRuta local del archivo (APK) a procesar.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, consistent with a hash calculation. The description adds behavioral detail beyond annotations by emphasizing that the file is already on disk and no re-extraction occurs, which clarifies operational scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action and resource. No redundant information; every word contributes to understanding the tool's purpose and key constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter, read-only tool with no output schema, the description covers the core purpose and behavioral nuance (no re-extraction). Could mention output format (hash string) but not essential given context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter filePath fully described. The description reinforces that the file is local and an APK but does not add significant new meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('calcula') and resource ('SHA-256 de un archivo APK'), clearly stating it computes a hash from a local file without re-extraction. This distinguishes it from sibling tools like apk_pull (which extracts from device) and vt_file_upload (which uploads for scanning).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when needing SHA-256 of an already-disk APK and explicitly states no extraction is needed, but does not name alternatives or exclusion criteria. It provides clear context but lacks explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apk_pullExtraer APKA
Read-only

Extrae el APK base de un paquete instalado al directorio de trabajo local y calcula su SHA-256.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNameYesNombre del paquete Android (applicationId), ej: com.whatsapp

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, so description's extraction action aligns. Description adds that it outputs SHA-256 and writes to local working directory, providing useful behavioral context beyond schema. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no redundancy, directly states action and outcome. Front-loaded with verb and resource. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 1 parameter, no output schema, and annotations covering safety, description is mostly complete. Could mention output filename or that hash is computed locally, but current version suffices for typical use. Minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already fully describes the parameter (packageName with pattern and description). Description does not add new semantic details about the parameter, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it extracts the base APK to the local working directory and computes SHA-256. Verb 'Extrae' and resource 'APK base de un paquete instalado' are specific. Distinguishes from siblings like apk_hash (which computes hash from an APK file) and adb_list_packages (which only lists).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use vs alternatives (e.g., apk_hash for hash-only, or mobsf_upload for analysis). Usage is implied for getting APK file locally, but no when-not-to or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_packageAuditar app (flujo completo)A
Read-only

Extrae el APK de un paquete, analiza permisos, consulta VirusTotal y MobSF, y devuelve un informe consolidado con recomendación. No desinstala nada.

ParametersJSON Schema
NameRequiredDescriptionDefault
useMobsfNoIncluir análisis de vulnerabilidades con MobSF.
packageNameYesPaquete a auditar de extremo a extremo.
useVirusTotalNoIncluir consulta de reputación en VirusTotal.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, and the description adds that it extracts APK and queries external services (VirusTotal, MobSF), which is consistent. It also explicitly states that it does not uninstall anything, providing useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence covering all major operations, plus a clarifying sentence about what it does not do. Every part is relevant and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the parameter schema with 100% coverage and no output schema, the description provides a sufficient high-level overview of the multi-step process and output (consolidated report). It covers the major components, though details about the report format are omitted. For a complex tool with many siblings, it adequately frames the use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter descriptions in the schema already explain useVirusTotal, useMobsf, and packageName. The description reinforces how these parameters fit into the overall workflow but does not add significant new semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool extracts the APK, analyzes permissions, queries VirusTotal and MobSF, and returns a consolidated report. It clearly distinguishes from sibling tools that focus on individual steps (e.g., apk_pull, vt_file_report, mobsf_scan).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates a full audit flow and includes a statement 'No desinstala nada' to clarify what it does not do. While it does not explicitly list when to use this versus siblings, the comprehensive nature is implied, and the sibling names provide cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mobsf_delete_scanMobSF: borrar análisisA
Destructive

Elimina un análisis del servidor MobSF para liberar espacio.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesHash devuelto por MobSF al subir el APK.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already set destructiveHint=true, so the destructive nature is clear. The description adds the consequence 'libera espacio' (frees space), which provides context. However, it does not mention any irreversible effects or required permissions beyond what is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly states the purpose and outcome. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (one parameter, no output schema), the description adequately covers the purpose and consequence. It could mention that deletion is irreversible, but the destructiveHint annotation already serves that purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a clear description for the hash parameter. The tool description does not add any additional meaning beyond the schema, meeting the baseline for schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name clearly indicates the action (delete) and resource (scan), and the description specifies the purpose: eliminating a scan to free space. This distinguishes it well from sibling tools like mobsf_upload or mobsf_scan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives (e.g., other cleanup tools). It only states the basic function without context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mobsf_reportMobSF: informe JSON completoA
Read-only

Descarga el informe JSON completo del análisis. Puede ser muy extenso.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesHash devuelto por MobSF al subir el APK.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds the warning 'puede ser muy extenso' (can be very extensive), which is useful for response handling. No contradictions; additional behavioral context is provided beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two short, focused sentences. The first sentence states the purpose, and the second adds a helpful warning. No unnecessary words; efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (single parameter, well-described in schema), the description adequately covers the tool's behavior. No output schema is needed as the return is a JSON report; the size warning addresses a key concern. Sibling tools are handled separately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for the single parameter 'hash'. The description does not add new semantic information beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'descarga' (downloads) and resource 'informe JSON completo del análisis' (full JSON report), distinguishing it from sibling tools like mobsf_scan (starts scan) and mobsf_scorecard (returns score). The additional note about extensiveness adds clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No prerequisites or context about preceding steps (e.g., scanning first) are provided, leaving the agent to infer usage from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mobsf_scanMobSF: ejecutar análisis estáticoA

Lanza el análisis estático de un APK ya subido (identificado por su hash MobSF).

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesHash devuelto por MobSF al subir el APK.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and openWorldHint=true. The description adds that it performs 'static analysis', but lacks details on side effects (e.g., if already scanned, time duration, or state changes). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and resource. Every word is necessary; no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the scanning workflow, the description omits key context: what the tool returns (no output schema) and that results can be retrieved via mobsf_report or mobsf_scorecard. The agent must infer the workflow from sibling tool names.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides full coverage for the single parameter 'hash' with a description. The tool description reiterates the hash as identifier. Since schema coverage is 100%, baseline 3 applies; the description adds no new semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (launches static analysis), the resource (APK), and the condition (already uploaded, identified by MobSF hash). It effectively distinguishes from sibling tools like mobsf_upload (upload) and mobsf_report (retrieve results).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the prerequisite (APK must be uploaded) by stating 'ya subido'. It clearly indicates when to use (after upload), but does not explicitly exclude other scenarios or name alternative tools for non-analyzed APKs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mobsf_scorecardMobSF: scorecard de seguridadB
Read-only

Devuelve el resumen de seguridad (score, hallazgos high/warning/info, trackers) de un análisis.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesHash devuelto por MobSF al subir el APK.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is clear. The description adds the return content but no additional behavioral traits (e.g., side effects, rate limits). It matches annotations perfectly, no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded with the key action and result. It could be slightly more structured (e.g., list format), but it is clear and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no output schema, the description partially explains return values (score, findings, trackers) but lacks details like score range (0-100?), findings classification, and what trackers are. This incompleteness may require follow-up questions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'hash', which is documented in the schema. The tool description does not add extra semantics beyond the schema, so it meets the baseline but doesn't provide additional value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns a security summary including score, findings (high/warning/info), and trackers. This is a specific verb-resource combination that distinguishes it from siblings like mobsf_scan (initiates scan) and mobsf_report (likely more detailed).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives (e.g., mobsf_report). It implies an analysis has been performed but doesn't state prerequisites or context. Without explicit usage conditions, the agent may misuse it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mobsf_uploadMobSF: subir APKA

Sube un APK local a la instancia de MobSF y devuelve el hash de la subida.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesRuta local del archivo (APK) a procesar.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate mutation (readOnlyHint=false) and external interaction (openWorldHint=true). The description adds that it uploads and returns a hash, clarifying the side effect. It doesn't fully disclose if uploads are idempotent or rate limits, but provides sufficient context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no fluff, directly addresses the tool's function. Highly concise and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is largely complete. It lacks mention of the hash's role in subsequent steps (e.g., mobsf_scan), but is still informative enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter described. The description does not add meaning beyond 'filePath' being the APK path; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: upload a local APK to MobSF instance and return the upload hash. It specifies the resource (APK) and distinguishes itself from sibling tools like mobsf_scan (which scans) or mobsf_delete_scan (which deletes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool vs alternatives. It implies it's a prerequisite for scanning, but lacks explicit guidance like 'use this before mobsf_scan to obtain a hash' or conditions to avoid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vt_file_reportVirusTotal: informe por hashA
Read-only

Consulta la reputación de un archivo por su SHA-256 en VirusTotal (70+ motores antivirus).

ParametersJSON Schema
NameRequiredDescriptionDefault
sha256YesHash SHA-256 del archivo a consultar.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description aligns by indicating a read-only query. It adds the context of 70+ antivirus engines, which is beyond annotations, but lacks details on rate limits or result structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the key action and resource, with no extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter, no output schema, and annotations present, the description is adequate but minimal. It could mention the kind of reputation data returned (e.g., detection ratio, last analysis) or usage hints like requiring a hash from a prior scan.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents the sha256 parameter fully. The description merely restates the parameter's purpose without adding new semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries file reputation via SHA-256 from VirusTotal, naming the specific resource (70+ antivirus engines) and distinguishing it from siblings like vt_upload_file or mobsf_scan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a SHA-256 hash is available, but it does not explicitly state when to use versus alternative tools like vt_upload_file or mobsf_scan, nor does it provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vt_upload_fileVirusTotal: subir archivoA

Sube un archivo a VirusTotal para análisis cuando su hash aún no está indexado. Maneja archivos grandes automáticamente.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesRuta local del archivo (APK) a procesar.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate it is not read-only and may have side effects (openWorldHint). The description confirms it is a mutation (upload) and adds behavioral context: it handles large files automatically and only initiates analysis if the hash is not indexed. This adds value beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences. The first sentence immediately conveys the primary purpose and condition. The second adds a key feature. No unnecessary words or repetition. Information is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and is a mutation with one parameter, the description could be more complete. It does not explain what happens after upload (e.g., returns a scan ID, status, or error), nor does it mention prerequisites like authentication. While annotations hint at side effects, the lack of return information leaves the agent with an incomplete understanding of the tool's full behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for the single parameter 'filePath', including a description that specifies it is for APK files. The tool description adds no further parameter details beyond restating that it uploads a file. Since the schema already documents the parameter adequately, the description offers minimal additional semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Sube un archivo' - upload a file), the target (VirusTotal for analysis), and the condition (when hash not yet indexed). It also highlights a distinctive feature (handles large files). This differentiates it from sibling tools like vt_file_report which likely only check reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies when to use the tool: when the file's hash is not yet indexed. It implies that if the hash is already indexed, the sibling tool vt_file_report should be used instead. While it does not explicitly list when not to use it or provide alternatives, the context is clear enough for an agent to make a decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 15 tool updatesv0.1.0
    • First observedadb_device_info
    • First observedadb_list_devices
    • First observedadb_list_packages
    • First observedadb_package_permissions
    • First observedadb_uninstall_package
    • First observedapk_hash
    • First observedapk_pull
    • First observedaudit_package
    • First observedmobsf_delete_scan
    • First observedmobsf_report
    • First observedmobsf_scan
    • First observedmobsf_scorecard
    • First observedmobsf_upload
    • First observedvt_file_report
    • First observedvt_upload_file

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a distinct purpose: ADB device management, APK extraction/hashing, VirusTotal queries, MobSF operations, and a comprehensive audit. No overlapping functionality.

Naming Consistency4/5

Uses consistent snake_case with service prefixes (adb_, apk_, vt_, mobsf_, audit_). While not strictly verb_noun, naming is predictable and clearly indicates tool function.

Tool Count5/5

15 tools is appropriate for an Android security analysis server, covering device info, package management, permission analysis, VirusTotal, MobSF, and an aggregated audit, without being excessive.

Completeness4/5

Covers all major workflows: extraction, hashing, reputation checks, static analysis (MobSF), and audit. Minor gaps like history or comparison tools, but core functionality is complete.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

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
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI models to perform Android dynamic analysis using Frida, including spawning and attaching to applications, listing apps, and injecting scripts.
    113
    -
  • 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
    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
    42
    4
    MIT

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/mstivenvelezc-ctrl/android-security-mcp'

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