DeepADB
El servidor MCP de Android Debug Bridge más profundo: 147 herramientas desde la interfaz de usuario hasta la banda base.
Documentación
DeepADB
Servidor MCP (Model Context Protocol) para agentes de IA que necesitan inspeccionar, controlar, probar y diagnosticar dispositivos Android a través de ADB, o directamente en el dispositivo mediante Termux.
209 herramientas, 5 recursos y 4 indicaciones en 49 módulos—desde automatización de interfaz de usuario y gestión de aplicaciones hasta registros, captura de red, banda base, firmware, seguridad y diagnóstico de hardware.
Comenzar
DeepADB se ejecuta como un servidor MCP local. Usa ADB por defecto y cambia automáticamente a ejecución directa cuando detecta Termux en un dispositivo Android.
git clone https://github.com/fullread/DeepADB.git
cd DeepADB
npm ci
npm run build
npm start
Agrega build/index.js a la configuración de tu cliente MCP y luego comienza con estos flujos de trabajo:
| Objetivo | Comience con |
|---|---|
| Confirmar el conjunto de herramientas y el dispositivo conectado | adb_health_check, luego adb_devices |
| Inspeccionar la interfaz de usuario actual de Android | adb_screen_state, luego adb_ui_dump |
| Diagnosticar un dispositivo o aplicación | adb_device_info, adb_logcat y adb_dumpsys |
Para una conexión local guiada, consulte Configuración de Claude Code. Lea SECURITY.md antes de exponer transportes HTTP, WebSocket o GraphQL más allá del loopback.
Arquitectura
┌──────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude Code / claude.ai) │
└──────────────────────┬───────────────────────────┘
│ stdio (JSON-RPC) or HTTP/SSE or WebSocket
┌──────────────────────▼───────────────────────────┐
│ DeepADB Server │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Tool Modules (49) │ │
│ │ device │ shell │ packages │ files │ logs │ │
│ │ diagnostics │ ui │ build │ health │ │
│ │ wireless │ control │ logcat-watch │ │
│ │ forwarding │ screen-record │ emulator │ │
│ │ testing │ multi-device │ snapshot │ │
│ │ network-capture │ ci │ plugins │ baseband │ │
│ │ accessibility │ regression │ │
│ │ device-farm │ registry │ at-commands │ │
│ │ screenshot-diff │ workflow │ sensors │ │
│ │ split-apk │ mirroring │ test-gen │ │
│ │ ota-monitor │ ril-intercept │ │
│ │ device-profiles │ firmware-analysis │ │
│ │ workflow-market │ selinux-audit │ │
│ │ thermal-power │ network-discovery │ │
│ │ input-gestures │ wireless-firmware │ │
│ │ app-network │ database-inspector │ │
│ │ runtime-audit │ wear │ │
│ ├─────────────────────────────────────────────┤ │
│ │ Resources (5) │ Prompts (4) │ │
│ └───────────────────┬─────────────────────────┘ │
│ │ │
│ ┌───────────────────▼─────────────────────────┐ │
│ │ ToolContext (unified DI) │ │
│ │ server │ bridge │ deviceManager │ │
│ │ logger │ security │ config │ │
│ └───────────────────┬─────────────────────────┘ │
│ │ │
│ ┌───────────────────▼─────────────────────────┐ │
│ │ Middleware Layer │ │
│ │ OutputProcessor │ SecurityMiddleware │ │
│ │ InputSanitizer │ Logger (stderr-safe) │ │
│ └───────────────────┬─────────────────────────┘ │
│ │ │
│ ┌───────────────────▼─────────────────────────┐ │
│ │ Bridge Layer (auto-detect) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌────────────────────┐ │ │
│ │ │ ADB Bridge │ OR │ Local Bridge │ │ │
│ │ │ (PC mode) │ │ (on-device mode) │ │ │
│ │ │ via adb.exe │ │ via sh/su direct │ │ │
│ │ └──────┬───────┘ └────────┬───────────┘ │ │
│ │ │ │ │ │
│ │ Retry │ Timeout │ Cache │ Serial routing │ │
│ └─────────┼─────────────────────┼─────────────┘ │
└────────────┼─────────────────────┼───────────────┘
│ │
┌───────▼───────┐ ┌───────▼───────┐
│ ADB Binary │ │ sh / su │
│ (USB/WiFi) │ │ (local) │
└───────┬───────┘ └───────┬───────┘
│ │
┌─────▼────────────────────▼─────┐
│ Android Device │
└────────────────────────────────┘
Arquitectura de Doble Modo
DeepADB opera en dos modos, detectados automáticamente al inicio:
Modo ADB (predeterminado) — puente del lado del PC
AI Agent (PC) ←→ MCP ←→ DeepADB (PC) ←→ ADB (USB) ←→ Android Device
Modo estándar: DeepADB se ejecuta en un host PC/Mac/Linux y se comunica con el dispositivo a través de USB mediante ADB. La superficie completa de 209 herramientas se registra a través del puente ADB con reintento automático en fallos transitorios; las herramientas específicas del entorno informan sus requisitos de capacidad cuando un host no puede ejecutarlas.
Modo en el dispositivo — ejecución local directa
AI Agent (Termux) ←→ MCP (stdio/HTTP) ←→ DeepADB (Termux) ←→ sh/su (local)
Cuando DeepADB se ejecuta directamente en el dispositivo Android (por ejemplo, dentro de Termux), detecta automáticamente el entorno y cambia a LocalBridge. Los comandos se ejecutan directamente mediante sh/su — sin servidor ADB, sin USB, sin sobrecarga de serialización. La misma superficie MCP de 209 herramientas se registra, con orientación consciente de capacidades cuando un binario opcional en el dispositivo como sqlite3 no está disponible.
Validación de hardware del host v1.1.4: la regresión completa de Pixel 6a / Android 16 se completó con 604 aprobados, 0 fallidos y 17 omisiones esperadas específicas del entorno (621 en total). Esto incluye validación AT/OK en vivo en /dev/umts_router, una instantánea de esquema SQLite de solo lectura protegida con limpieza, la auditoría de tiempo de ejecución unificada, contexto de ruta por aplicación y la verificación previa de Wear para un solo dispositivo. Las omisiones son las cinco verificaciones QEMU solo en el dispositivo más doce verificaciones de seguridad de host Windows o tcpdump no disponible.
Línea base de hardware v1.1.3: validado en un Pixel 6a (Android 16, Termux + Magisk + QEMU 10.2.1) en una matriz de prueba de cuatro celdas — host (ADB) y en el dispositivo (LocalBridge), cada uno con y sin PIN del dispositivo — con 0 fallos en cada celda. El conjunto v1.1.3 contenía 577 pruebas en la configuración host/ADB y 613 en el dispositivo; la diferencia son los conjuntos de virtualización QEMU y arranque de VM Alpine, que solo se ejecutan en el dispositivo:
- Modo ADB, sin PIN: 556 aprobados / 0 fallidos / 21 omitidos (577 en total). Omisiones: 5 QEMU (solo en el dispositivo), 7 pruebas unitarias de gracefulKill (requieren señales POSIX, omitidas en el host Windows), 3 de saneamiento de tcpdump (tcpdump es solo root e inaccesible a través de un shell ADB no root), 2 de ida y vuelta del shell del host (requieren un /bin/sh POSIX), 4 de estado de pantalla (requieren DA_TEST_PIN).
- Modo ADB, con PIN: 560 aprobados / 0 fallidos / 17 omitidos (577 en total). Las 4 pruebas de estado de pantalla se desbloquean y se ejecutan.
- Modo en el dispositivo, sin PIN: 606 aprobados / 0 fallidos / 7 omitidos (613 en total). Todas las pruebas QEMU se ejecutan, incluido el arranque de VM Alpine Linux con aceleración KVM, detección de topología de CPU big.LITTLE, manejo de errores de conectividad ADB del invitado y apagado limpio de la VM; los conjuntos de tcpdump y gracefulKill también se ejecutan aquí (root + POSIX). Omisiones: 3 pasos de configuración QEMU que no operan cuando el kernel/initrd/disco Alpine ya están en caché, 4 de estado de pantalla (requieren PIN).
- Modo en el dispositivo, con PIN: 610 aprobados / 0 fallidos / 3 omitidos (613 en total). Cada prueba habilitada por el entorno se ejecuta; las 3 omisiones son los pasos de configuración de VM en caché.
Escalada de privilegios: En modo ADB, todos los comandos de shell se ejecutan como uid=2000 (el usuario shell) que tiene permisos a nivel de sistema. En Termux, los comandos se ejecutan como un usuario de aplicación normal. LocalBridge eleva automáticamente los comandos privilegiados a través de su cuando root (Magisk) está disponible:
- Lista de permitidos de comandos: 16 comandos del sistema (
settings,dumpsys,am,input,screencap,screenrecord,uiautomator,app_process,getenforce,setenforce,cmd,pm,wm,svc,ip,ifconfig) se enrutan a través desu -cpara coincidir con el comportamiento del modo ADB. - Elevación basada en ruta: Los comandos que hacen referencia a rutas
/sdcard,/storageo/system/se elevan para evitar las restricciones de almacenamiento con ámbito de Android. - Detección de root: Almacenada en caché después de una sola sonda
su -c iden el primer uso. Degradación gradual cuando root no está disponible. - La lista de permitidos de elevación está congelada (
ReadonlySet+Object.freeze) — no configurable mediante variables de entorno o API de tiempo de ejecución.
Auto-detección: Verifica /system/build.prop (presente en todos los dispositivos Android, nunca en hosts). Anule con DA_LOCAL=true o DA_LOCAL=false.
Configuración en el dispositivo (Termux):
pkg install nodejs-lts git
git clone <deepadb-repo> && cd deepadb
npm install && npm run build
npm start # stdio — for local AI agents (Claude Code, OpenCode)
DA_HTTP_PORT=3000 npm start # HTTP/SSE — for remote AI access over WiFi
Configuración de Claude Code
{
"mcpServers": {
"deepadb": {
"command": "node",
"args": ["/path/to/DeepADB/build/index.js"]
}
}
}
Herramientas Disponibles (209)
Comience con el área de capacidad que coincida con su tarea; la referencia completa permanece a continuación.
Referencia completa de herramientas
Salud (1 herramienta)
adb_health_check— Validación integral del conjunto de herramientas: binario ADB, servidor, conexión del dispositivo, autorización, acceso root y capacidad de escritura del almacenamiento
Auditoría de Tiempo de Ejecución (1 herramienta)
adb_runtime_audit— Auditoría de preparación unificada de solo lectura para transporte, espacio de usuario de Android, root, SELinux, almacenamiento, capacidades de comandos, diagnóstico de UI/red, SQLite, nodos de módem y requisitos previos de Wear
Dispositivo (3 herramientas)
adb_devices— Listar todos los dispositivos conectados con estado, modelo e información del productoadb_device_info— Propiedades detalladas del dispositivo (modelo, SO, SDK, compilación, parche de seguridad, ABI)adb_getprop— Leer una propiedad específica del sistema o volcar todas las propiedades
Shell (2 herramientas)
adb_shell— Ejecutar comandos de shell arbitrarios con tiempo de espera configurable (verificado por seguridad)adb_root_shell— Ejecutar comandos como root mediante su (requiere dispositivo rooteado, verificado por seguridad)
Paquetes (12 herramientas)
adb_install— Instalar APK con opciones de reemplazo/downgradeadb_uninstall— Eliminar paquete con retención de datos opcionaladb_list_packages— Listar paquetes filtrados por nombre o tipo (todos/sistema/terceros)adb_package_info— Información detallada del paquete (versión, permisos, rutas)adb_clear_data— Borrar todos los datos y caché de la aplicaciónadb_grant_permission— Otorgar un permiso de tiempo de ejecución a un paqueteadb_revoke_permission— Revocar un permiso de tiempo de ejecución de un paquete (restablecer el estado del permiso para probar flujos de denegación)adb_list_permissions— Listar todos los permisos declarados y otorgados para un paquete, filtrable por otorgado/denegadoadb_force_stop— Forzar la detención de una aplicación inmediatamenteadb_start_app— Iniciar una aplicación por nombre de paquete (resuelve la actividad del lanzador)adb_restart_app— Forzar la detención y luego relanzar en una sola llamada (retraso configurable)adb_resolve_intents— Descubrir actividades, servicios y receptores registrados con filtros de intención
Inspección de Room y SQLite (1 herramienta)
adb_sqlite_inspect— Listado de bases de datos con ámbito de paquete, inspección de esquema y SQL de solo lectura validado con límites estrictos de filas/salida. Prefiererun-as, recurre a root, rechaza archivos de base de datos/WAL de enlace simbólico, usasqlite3del dispositivo cuando está presente y, de lo contrario, elimina una instantánea privada y limitada del lado del host después de la inspección
Archivos (18 herramientas)
adb_push— Enviar archivo local al dispositivo (rutas de kernel bloqueadas estrictamente, conocimiento del tipo de sistema de archivos, informe de almacenamiento)adb_pull— Extraer archivo del dispositivo al sistema de archivos localadb_ls— Listar el contenido del directorio del dispositivo (simple o detallado)adb_cat— Leer archivo de texto del dispositivo con límite de líneas opcionaladb_file_write— Crear o sobrescribir archivos de texto mediante heredoc (advertencia de límite de búfer, consciente del sistema de archivos, verificación posterior)adb_find— Buscar archivos por nombre/patrón con control de profundidad y límite de resultadosadb_file_stat— Metadatos del archivo: tamaño, permisos, marcas de tiempo, propiedad, contexto SELinuxadb_file_checksum— Hash SHA-256/SHA-1/MD5 con estimación de tiempo de espera basada en tamañoadb_mkdir— Crear directorios con creación de padres (-p), rutas de kernel bloqueadas estrictamenteadb_rm— Eliminar archivos/directorios con protección recursiva basada en profundidad y resolución de enlaces simbólicosadb_file_move— Mover/renombrar con protección de profundidad de origen y verificación posterioradb_file_copy— Copiar con verificación previa de tamaño+espacio y coincidencia de tamaño posterioradb_file_chmod— Cambiar permisos (modo octal validado por Zod, protección recursiva basada en profundidad)adb_file_touch— Crear archivos vacíos o actualizar marcas de tiempo (soporte explícito de marcas de tiempo)adb_file_fsinfo— Informe del sistema de archivos: tipo, montaje, capacidad, capacidades, SELinux, limitacionesadb_file_chown— Cambiar propiedad (requiere root, protección recursiva basada en profundidad)adb_grep— Buscar contenido de archivos con cadena fija predeterminada, control de profundidad recursiva, límite de resultadosadb_file_replace— Buscar/reemplazar texto en archivos (respaldado por sed, escape adecuado, opción de copia de seguridad)
Registros — Instantáneas (3 herramientas)
adb_logcat— Instantánea de logcat filtrada con selección de etiqueta, prioridad, grep y búferadb_logcat_clear— Borrar todos los búferes de logcatadb_logcat_crash— Instantánea del registro del búfer de fallos
Registros — Vigilantes Persistentes (4 herramientas)
adb_logcat_start— Iniciar un vigilante de logcat en segundo plano con acumulación de búfer circularadb_logcat_poll— Recuperar nuevas líneas desde la última consulta de un vigilante en ejecuciónadb_logcat_stop— Detener una sesión de vigilante (o todas las sesiones)adb_logcat_sessions— Listar todas las sesiones de vigilante activas con estadísticas
Diagnóstico (9 herramientas)
adb_dumpsys— Ejecuta dumpsys para cualquier servicio (o lista todos los servicios)adb_telephony— Información de celda, intensidad de señal y registro de red (consulta paralela)adb_battery— Estado de la batería, nivel, temperatura e información de cargaadb_network— Conectividad WiFi, celular e IP (consulta paralela)adb_top— Instantánea de uso de CPU y memoriaadb_perf_snapshot— Perfilado paralelo de memoria, estadísticas de fotogramas y CPU para un paqueteadb_bugreport— Captura completa de informe de errores en zip (estado del dispositivo, registros, información del sistema)adb_crash_logs— Trazas ANR y volcados de fallos tombstone desde /data/anr/ y /data/tombstones/adb_heap_dump— Captura de volcado de montón (.hprof) desde un proceso en ejecución para análisis de memoria
Contexto de Ruta por Aplicación (1 herramienta)
adb_app_route_context— Resuelve un paquete instalado a su UID y correlaciona sus rangos efectivos deip rule, tablas de rutas, política de red, VPN y estado de red predeterminada sin cambiar rutas ni políticas
Interfaz de Usuario (10 herramientas)
adb_screencap— Toma una captura de pantalla con saneamiento del nombre de archivo, guarda localmenteadb_screencap_annotated— Captura de pantalla con cuadros delimitadores de elementos de UI y etiquetas numeradas compuestas sobre el PNG. Devuelve la ruta de la imagen anotada más una leyenda de texto. Ideal para flujos de trabajo LLM que referencian elementos por númeroadb_current_activity— Obtiene la actividad enfocada y la pila de ventanas superioradb_input— Envía entrada de toque, deslizamiento, texto o keyeventadb_start_activity— Lanza actividades por intent o nombre de componenteadb_ui_dump— Vuelca la jerarquía completa de UI. Admite tres formatos de salida:text(predeterminado, legible por humanos),tsv(tab-separado compacto para bucles de automatización eficientes en tokens),xml(XML uiautomator crudo)adb_ui_find— Busca en la jerarquía de UI por texto, resource-id o content-description (devuelve coordenadas de toque)adb_screen_state— Estado combinado de pantalla en una sola llamada: actividad en primer plano, dimensiones y densidad de pantalla, orientación, nivel de batería y una lista TSV de elementos interactivos. Reemplaza 3–4 llamadas de herramientas separadasadb_screenrecord_start— Inicia la grabación de la pantalla del dispositivo (1-180s, almacenada en el dispositivo)adb_screenrecord_stop— Detiene la grabación y extrae el archivo de video mp4 localmente
Control del Dispositivo (9 herramientas)
adb_airplane_mode— Alterna el modo avión con difusión y verificaciónadb_airplane_cycle— Cicla el modo avión encendido/apagado para forzar el re-registro celularadb_wifi— Habilita o deshabilita WiFiadb_mobile_data— Habilita o deshabilita datos móvilesadb_location— Establece el modo de ubicación (off/sensors/battery/high)adb_screen— Despierta, duerme, alterna, bloquea o desbloquea la pantalla. El bloqueo verifica el estado de keyguard mediantedumpsys window. El desbloqueo usawm dismiss-keyguard(funciona para keyguards de deslizamiento); proporcionapinpara realizar la secuencia completa de ingreso de PIN: despierta la pantalla, desliza hacia arriba para revelar el teclado, escribe el PIN, confirma y verifica que el token de sueño de keyguard fue liberadoadb_settings_get— Lee cualquier configuración de Android desde el espacio de nombres system/secure/globaladb_settings_put— Escribe cualquier configuración de Android con verificación de lectura posterioradb_reboot— Reinicia el dispositivo (modo normal, recovery o bootloader)
Depuración Inalámbrica (4 herramientas)
adb_pair— Empareja con el dispositivo a través de WiFi usando código de emparejamientoadb_connect— Conecta al dispositivo a través de WiFi/TCPadb_disconnect— Desconecta dispositivos inalámbricosadb_tcpip— Cambia el dispositivo USB a modo TCP/IP (detecta automáticamente la IP del dispositivo)
Reenvío de Puertos (8 herramientas)
adb_forward— Reenvía un puerto local a un puerto del dispositivo (host → dispositivo)adb_reverse— Reenvía inversamente un puerto del dispositivo al host (dispositivo → host)adb_forward_list— Lista todos los mapeos de reenvío y reenvío inverso activosadb_forward_remove— Elimina un reenvío de puerto o todos los reenvíosadb_reverse_remove— Elimina un reenvío inverso o todos los reenvíos inversosadb_tunnel_open— Abre un túnel gestionado con ID opaco. Elige automáticamente un puerto host libre para la dirección de reenvío cuando se omite; registra limpieza para que el túnel se elimine al salir del servidoradb_tunnel_list— Lista túneles gestionados activos (los abiertos mediante adb_tunnel_open). Filtro opcional por dispositivo; muestra ID, dirección, endpoints y antigüedadadb_tunnel_close— Cierra un túnel gestionado por ID, o cierra todos a la vez con id="all"
Gestión de Emuladores (3 herramientas)
adb_avd_list— Lista AVDs disponibles (modo PC) o detecta capacidades de virtualización KVM/QEMU (modo en-dispositivo)adb_emulator_start— Lanza un AVD con opciones headless, cold boot y GPU (modo PC) o reporta alternativa QEMU (modo en-dispositivo)adb_emulator_stop— Apaga correctamente un emulador en ejecución
Virtualización QEMU/KVM (8 herramientas)
adb_qemu_setup— Verifica e instala QEMU para virtualización en-dispositivo. Verifica KVM, reporta CPU/RAM del host, instala vía Termux pkgadb_qemu_images— Gestiona imágenes de disco de VM: listar, crear (qcow2/raw), eliminar. La verificación de contención de ruta previene traversaladb_qemu_start— Arranca una VM acelerada por KVM con asignación dinámica de recursos. Auto-detecta CPUs óptimas (total menos 1, reservando una para el host) y memoria (65% de RAM física). Admite kernel/initrd/append para arranque Android, reenvío de puerto ADBadb_qemu_stop— Detiene una VM en ejecución (SIGTERM correcto o SIGKILL forzado). Auto-desconecta el ADB del invitado antes de matar. Reporta VMs en ejecución si no se da nombreadb_qemu_status— Estado completo: disponibilidad KVM/QEMU, presupuesto de recursos del host, VMs en ejecución con PID/recursos/uptime/puertos/estado de conexión ADB, inventario de imágenesadb_qemu_connect— Conecta al servicio ADB invitado de una VM en ejecución. Restringido solo a localhost — el puerto se deriva del estado de la VM en ejecución, nunca de entrada del usuario. Habilita que las herramientas multi-dispositivo operen en VMs invitadasadb_qemu_disconnect— Desconecta del servicio ADB de una VM invitada. Limpia el estado de conexión y elimina al invitado de la lista de dispositivosadb_qemu_guest_shell— Ejecuta comandos de shell en una VM invitada vía ADB. Sujeto a middleware de seguridad. El serial del invitado se deriva internamente — ningún host/IP proporcionado por el usuario llega al binario ADB
Sesiones de Prueba (3 herramientas)
adb_test_session_start— Inicia una sesión de prueba nombrada con directorio de salida organizadoadb_test_step— Captura un paso numerado con captura de pantalla y logcat en la sesiónadb_test_session_end— Termina la sesión, escribe manifiesto de resumen, devuelve la ruta del directorio
Orquestación Multi-Dispositivo (4 herramientas)
adb_multi_shell— Ejecuta un comando en todos/dispositivos seleccionados en paralelo (verificado por seguridad)adb_multi_install— Instala un APK en múltiples dispositivos simultáneamenteadb_multi_compare— Ejecuta un comando en todos los dispositivos y resalta diferencias de salidaadb_multi_test— Flujo de trabajo de prueba comparativa: ejecuta perfiles de diagnóstico predefinidos (firmware/security/network/identity/full) o listas de comandos personalizadas en todos los dispositivos incluyendo invitados QEMU, compara por verificación, reporta coincidencias y diferencias
Capa de Datos Wear (1 herramienta)
adb_wear_datalayer_preflight— Preflight de solo lectura de rol teléfono/reloj, Google Play services, Bluetooth, paquete opcional, asociación de compañero y capa de datos; los identificadores de emparejamiento se omiten intencionalmente
Gestos de Entrada y Automatización de UI (15 herramientas)
adb_input_drag— Arrastra del punto A al punto B (usadraganddropcon respaldo de deslizamiento para Android antiguo)adb_input_fling— Gesto de fling de alta velocidad para desplazamiento por impulso en listas y vistas paginadas (duración configurable 20-200ms)adb_input_long_press— Pulsación larga en coordenadas con duración de retención configurableadb_input_double_tap— Doble toque con intervalo configurable entre toquesadb_input_text— Entrada de texto dedicada con manejo de espacios/caracteres especialesadb_open_url— Abre una URL en el dispositivo vía intent VIEWadb_orientation— Obtiene o establece la orientación de pantalla (auto/portrait/landscape/reverse)adb_clipboard— Lee o escribe el portapapeles del dispositivoadb_input_pinch— Gesto de pellizco multi-táctil (alejar) o expandir (acercar). Dos dedos se mueven simétricamente alrededor de un punto central. Inyección en capas:input swipeparalelo (universal, sin root) osendeventcrudo protocolo MT Type B (multi-táctil real, requiere root). Auto-detecta el dispositivo táctil y capacidades víagetevent -p. Centro, radio, duración, ángulo y pasos de interpolación configurablesadb_tap_element— Encuentra elemento por texto/resource-id/content-description y toca su centroadb_wait_element— Sondea la jerarquía de UI hasta que un elemento aparezca o desaparezca (timeout/intervalo de sondeo configurables)adb_wait_stable— Sondea hasta que volcados de UI consecutivos coincidan (estabilización de pantalla después de transiciones)adb_scroll_until— Desplaza repetidamente hasta que se encuentre un elemento objetivo, con auto-toque opcionaladb_screenshot_compressed— Captura de pantalla con metadatos de tamaño/calidad para flujos de trabajo eficientes en tokensadb_batch_actions— Ejecuta múltiples acciones de entrada (tap/swipe/fling/long_press/double_tap/keyevent/text/drag/pinch/back/home/sleep) en una sola llamada de herramienta con validación de seguridad
Conciencia del Dispositivo (3 herramientas)
adb_screen_size— Resolución de pantalla, densidad de visualización (DPI), relación de aspecto y ancho DP en una llamadaadb_device_state— Instantánea combinada: nivel/estado/temperatura de batería, tipo de red, estado WiFi, pantalla encendida/apagada, orientación, actividad en primer planoadb_notifications— Analiza notificaciones activas con paquete, título, texto, importancia, canal, banderas y marca de tiempo (filtrable por paquete)
Instantánea/Restauración (3 herramientas)
adb_snapshot_capture— Guarda estado completo del dispositivo (paquetes, configuraciones, propiedades) a JSONadb_snapshot_compare— Compara el estado actual contra una instantánea guardada (paquetes agregados/eliminados, configuraciones cambiadas)adb_snapshot_restore_settings— Restaura configuraciones global/secure desde una instantánea guardada
Captura de Red (3 herramientas)
adb_tcpdump_start— Inicia captura de paquetes en segundo plano vía tcpdump (requiere root)adb_tcpdump_stop— Detiene la captura y extrae el archivo pcap localmente para análisis en Wiresharkadb_network_connections— Muestra conexiones TCP/UDP activas (ss/netstat con respaldo /proc/net)
Integración CI/CD (3 herramientas)
adb_ci_wait_boot— Espera a que el dispositivo/emulador arranque completamente con timeout configurableadb_ci_device_ready— Verificación de preparación estructurada pass/fail (boot, PM, pantalla, red, disco)adb_ci_run_tests— Ejecuta pruebas instrumentadas víaam instrumentcon resultados pass/fail analizados
Baseband/Modem (6 herramientas)
adb_baseband_info— Firmware del módem, implementación RIL, chipset, configuración SIM (detección de doble SIM con estado por ranura), registro de red. La recuperación de IMEI es solo opt-in (includeImei=true)adb_cell_identity— Cell ID (CID), TAC/LAC, EARFCN, PCI, PLMN desde dumpsys phone para análisis de red celularadb_signal_detail— RSRP, RSRQ, SINR, RSSI, timing advance — mediciones de radio crudas para análisis de señaladb_neighboring_cells— Todas las celdas LTE/5G/WCDMA/GSM visibles con identidades e intensidades de señaladb_carrier_config— Volcado de configuración del operador, ID del operador, APN preferidoadb_modem_logs— Buffer de radio RIL, framework de telefonía, RILJ/RILC, dmesg del kernel (root) registros del módem
Auditoría de Accesibilidad (3 herramientas)
adb_a11y_audit— Auditoría WCAG automatizada: etiquetas faltantes, objetivos táctiles subdimensionados (<48dp), descripciones duplicadas, clicables no enfocablesadb_a11y_touch_targets— Lista todos los elementos interactivos con dimensiones de objetivo táctil en dp, marca subdimensionadosadb_a11y_tree— Árbol de UI enfocado en accesibilidad que muestra solo elementos relevantes para lector de pantalla con roles, etiquetas y estados
Detección de Regresiones (3 herramientas)
adb_regression_baseline— Captura línea base de rendimiento (memoria, CPU, estadísticas de fotogramas, batería, red) a JSONadb_regression_check— Compara el rendimiento actual contra una línea base guardada con umbrales de regresión configurablesadb_regression_history— Lista todas las líneas base guardadas con tendencias, opcionalmente filtradas por paquete
Device Farm (3 herramientas)
adb_farm_run— Ejecuta pruebas instrumentadas en Firebase Test Lab en múltiples modelos de dispositivos y niveles de APIadb_farm_results— Recupera resultados de una ejecución de Test Lab o lista matrices de pruebas recientesadb_farm_matrix— Lista los modelos de dispositivos y versiones de Android disponibles en Firebase Test Lab
Registro de Plugins (3 herramientas)
adb_registry_search— Busca en el registro de plugins de la comunidad, muestra el estado de instalación y las actualizaciones disponiblesadb_registry_install— Descarga e instala un plugin del registro por nombreadb_registry_installed— Lista los plugins instalados localmente con versión y disponibilidad de actualización
Plugins (2 herramientas)
adb_plugin_list— Lista todos los plugins cargados con rutas y tiempos de cargaadb_plugin_info— Documentación del sistema de plugins y formato de ejemplo de plugin
Compilación (2 herramientas)
adb_gradle— Ejecuta cualquier tarea de Gradle en un directorio de proyectoadb_build_and_install— Compila el APK de depuración e instala mediante la orientación de ANDROID_SERIAL
Comandos AT (6 herramientas)
adb_shannon_session— Verifica la detección del chipset Shannon/Exynos, root, puertos de módem de dispositivo de caracteres y un handshake benigno deAT/OKjuntos; admite el/dev/umts_routerde Google Tensor, rearma lecturas CPIF limitadas hasta un resultado terminal, envía opcionalmenteATIde solo lectura y nunca envía un comando de configuración del módemadb_at_detect— Detecta automáticamente el nodo de dispositivo de comandos AT del módem según la familia de chipset (Shannon, Qualcomm, MediaTek, Unisoc, genérico). Prueba rutas conocidas y devuelve el primer nodo que respondeadb_at_send— Envía un solo comando AT al módem con captura de respuesta. Detecta automáticamente el puerto o acepta anulación manual. Lista negra de comandos peligrosos con anulación forzadaadb_at_batch— Envía múltiples comandos AT secuencialmente con resultados por comando. Retardo configurable entre comandosadb_at_probe— Ejecuta una sonda de diagnóstico estándar: ID del módem, calidad de señal, registro de red, estado de SIM, operador, modo de funcionalidadadb_at_cross_validate— Valida de forma cruzada el firmware de banda base comparando respuestas de comandos AT (ATI, AT+CGMR, AT+CGMM) contra propiedades del sistema. Señala discrepancias como posible manipulación del firmware, OTA incompleta o suplantación de propiedades. Soporte específico de Shannon para AT+DEVCONINFO. Requiere root
Comparación de Capturas de Pantalla (3 herramientas)
adb_screenshot_baseline— Captura y guarda una línea base de captura de pantalla con nombre y metadatos (dimensiones, SHA-256, marca de tiempo)adb_screenshot_diff— Compara la pantalla actual contra una línea base guardada usando decodificación PNG a nivel de píxel. Informa el recuento/porcentaje de píxeles cambiados, el cuadro delimitador de la región cambiada y admite un umbral de tolerancia para absorber elementos dinámicos como relojesadb_screenshot_history— Lista todas las líneas base de capturas de pantalla guardadas con metadatos
Orquestación de Flujos de Trabajo (3 herramientas)
adb_workflow_run— Ejecuta un flujo de trabajo definido en JSON: operaciones secuenciales de dispositivo con sustitución de variables, pasos condicionales, bucles y captura de resultados. Acciones: shell, root_shell, install, screenshot, logcat, getprop, sleepadb_workflow_validate— Valida la estructura del flujo de trabajo sin ejecutarlo. Muestra el plan de ejecuciónadb_workflow_list— Lista los archivos de flujo de trabajo guardados en el directorio de flujos de trabajo
Gestión de APK Divididos (4 herramientas)
adb_install_bundle— Instala APK divididos (app bundles) medianteinstall-multiplecon opciones de reemplazo y degradaciónadb_list_splits— Muestra todas las rutas de división de APK para un paquete con clasificación (base, config.density, config.language, etc.) y tamaño totaladb_extract_apks— Extrae todas las divisiones de un paquete a un directorio local para análisis o respaldoadb_apex_list— Lista los módulos APEX instalados con información de versión
Espejo de Dispositivo (3 herramientas)
adb_mirror_start— Inicia el espejo de pantalla en vivo mediante scrcpy. Admite modos con ventana y sin cabeza, grabación, control de bitrate/FPS/resolución, mantener despierto y apagar pantallaadb_mirror_stop— Detiene el espejo para un dispositivo o todos los dispositivosadb_mirror_status— Verifica la disponibilidad de scrcpy y lista las sesiones de espejo activas
Generación Automatizada de Pruebas (3 herramientas)
adb_test_gen_from_ui— Analiza los elementos interactivos de la pantalla actual y genera un flujo de trabajo que toca cada uno, toma capturas de pantalla y verifica fallosadb_test_gen_from_intents— Analiza las actividades registradas de un paquete y genera un flujo de trabajo que lanza cada actividad exportada con detección de fallosadb_test_gen_save— Guarda un flujo de trabajo generado en JSON en el directorio de flujos de trabajo para ejecución posterior
Monitoreo de Actualizaciones OTA (3 herramientas)
adb_ota_fingerprint— Captura la huella del sistema: ID de compilación, versión de Android, parche de seguridad, bootloader, firmware de banda base, kernel, ranura A/Badb_ota_check— Compara el estado actual del sistema contra una huella guardada para detectar actualizaciones OTA. Identifica campos cambiados y recomienda re-baselinearadb_ota_history— Lista todas las huellas guardadas para un dispositivo con progresión de versiones a lo largo del tiempo
Intercepción de Mensajes RIL (3 herramientas)
adb_ril_start— Inicia la captura de mensajes RIL desde el buffer logcat de radio. Categoriza eventos de registro, información de celda, señal, red, seguridad, traspaso y NASadb_ril_poll— Recupera mensajes RIL capturados con filtrado opcional por categoría. Muestra la distribución de categoríasadb_ril_stop— Detiene una sesión de captura RIL con resumen de categorías
Perfiles de Dispositivo (3 herramientas)
adb_profile_detect— Detecta automáticamente y construye un perfil de dispositivo: ID de hardware, familia de chipset, nodos de módem, estado de root, soporte 5G, configuración de doble SIM. Compara contra la biblioteca integrada para peculiaridades conocidasadb_profile_save— Guarda un perfil de dispositivo en la biblioteca de perfilesadb_profile_list— Lista perfiles de dispositivo integrados y guardados por el usuario
Análisis de Firmware del Módem (3 herramientas)
adb_firmware_probe— Identificación integral de firmware: analiza banda base (Shannon/Qualcomm/MediaTek/Unisoc/HiSilicon/Intel), bootloader e implementación RIL en componentes estructurados. Informa kernel, parche de seguridad, ranura A/B, estado de arranque verificado, VBMeta, hipervisor e inventario de particiones OTAadb_firmware_diff— Compara todos los componentes de firmware (banda base, bootloader, kernel, parche de seguridad, ID de compilación, versión de Android, RIL) entre huellas guardadas o dispositivo en vivo. Diffs profundos analizados para banda base y bootloader cuando se detectan cambiosadb_firmware_history— Rastrea la progresión de firmware en todas las huellas OTA guardadas con detección de cambios en múltiples componentes (banda base, bootloader, kernel, parche de seguridad, ID de compilación, versión de Android) y diffs de banda base analizados
Firmware Inalámbrico (4 herramientas)
adb_wifi_firmware— Identificación de chipset y firmware WiFi: versión de controlador, versión de firmware, bandas soportadas (2.4/5/6 GHz), detección de estándar WiFi (5/6/6E/7), información de conexión actual. Dirección MAC solo con consentimientoadb_bluetooth_firmware— Identificación de firmware y chipset Bluetooth: versión de firmware, versión BT (4.0–5.4 desde LMP), estado del adaptador, capacidades LE (2M PHY, Coded PHY, publicidad extendida), perfiles activos (A2DP/HFP/HID/LE Audio), recuento de dispositivos vinculados. MAC/nombre solo con consentimientoadb_nfc_firmware— Firmware del controlador NFC: tipo de controlador (NXP/Broadcom/Samsung/ST), versión de firmware, tecnologías soportadas (NFC-A/B/F/V, MIFARE), elemento seguro (eSE/UICC), soporte HCEadb_gps_firmware— Identificación de chipset y firmware GNSS/GPS: modelo de hardware (fabricante, chip, firmware), constelaciones soportadas (GPS/GLONASS/Galileo/BeiDou/QZSS/NavIC/SBAS), tipos de señal con frecuencias, detección de doble frecuencia (L1+L5), capacidades de medición GNSS cruda, modos A-GPS (MSB/MSA), configuración del servidor SUPL, mediciones de fase de portadora
Mercado de Flujos de Trabajo (3 herramientas)
adb_market_search— Busca en el mercado de flujos de trabajo definiciones compartidas por la comunidad con filtrado por palabra clave y etiqueta. Muestra el estado de instalaciónadb_market_install— Descarga, valida (estructura JSON + integridad SHA-256) e instala un flujo de trabajo del mercado para uso inmediato con adb_workflow_runadb_market_export— Empaqueta un flujo de trabajo local con metadatos de mercado (autor, versión, etiquetas, SHA-256) y genera una entrada de manifiesto de registro para compartir
Auditoría de SELinux y Permisos (3 herramientas)
adb_selinux_status— Modo de aplicación de SELinux, versión de política, contexto de shell, recuento reciente de denegaciones AVC. Root proporciona estadísticas de denegación de dmesg del kerneladb_selinux_denials— Lista mensajes recientes de denegación AVC con contextos de origen/destino analizados, clases de permiso y operaciones denegadas. Admite filtrado por procesoadb_permission_audit— Audita las concesiones de permisos en tiempo de ejecución para un paquete agrupadas por categoría de permiso peligroso (Cámara, Ubicación, Teléfono, SMS, etc.). Señala concesiones de alta sensibilidad
Perfilado Térmico y de Energía (3 herramientas)
adb_thermal_snapshot— Captura todas las temperaturas de zonas térmicas, frecuencias/gobernadores por CPU, estados de dispositivos de enfriamiento, temperatura/corriente/voltaje/consumo de energía de la batería. Guardado opcional como línea base JSONadb_thermal_compare— Compara el estado térmico actual contra una línea base guardada con deltas de temperatura por zona y cambios de corriente de bateríaadb_battery_drain— Mide la tasa de descarga de batería durante una duración configurable (3-60s). Informa mA promedio, mW, %/hora estimado. Batterystats opcional específico de paquete
Descubrimiento de Red (3 herramientas)
adb_network_scan— Escanea la red local para dispositivos habilitados para ADB mediante la tabla ARP y barrido opcional de rango IP. Prueba puertos 5555-5558 con sondas TCP paralelas por lotesadb_network_device_ip— Obtiene la IP WiFi de un dispositivo conectado mediante múltiples métodos. Muestra el estado TCP de ADB e instrucciones de conexión inalámbricaadb_network_auto_connect— Descubrimiento + conexión en un solo paso: escanea dispositivos ADB y ejecuta automáticamente adb connect en cada listener encontrado
Acceso a Sensores de Hardware (2 herramientas)
adb_sensor_read— Lee los valores actuales de sensores de hardware mediante dumpsys sensorservice. Enumera todos los sensores con proveedor, tipo, modo, rango de frecuencia y capacidad de activación. Devuelve lecturas de último conocimiento con marcas de tiempo y formato etiquetado por ejes. Filtro por categoría (13 categorías) y modo de descubrimiento listOnly. No requiere rootadb_iio_read— Lee datos de hardware crudos del subsistema Linux IIO. Descubre automáticamente dispositivos IIO, clasifica por controlador de kernel. En Tensor/Exynos: expone monitores de energía ODPM por riel que muestran consumo de energía en tiempo real por subsistema SoC. La ruta IIO genérica maneja canales crudos con escala+offset calibrados. Requiere root
Manejadores de Resultados (3 herramientas)
adb_result_list— Lista los manejadores de resultados activos en el caché respaldado por tempdir. Muestra herramienta, nombre, tamaño, antigüedad y TTL restante para cada manejadoradb_result_get— Recupera el contenido de un manejador almacenado por herramienta + nombre. Devuelve los bloques de contenido originales tal como los produjo la herramienta fuente; actualiza la hora de último acceso. Para recuperación basada en URI, usa el Recurso MCPresult://{tool}/{name}en su lugaradb_result_drop— Elimina un manejador de resultados almacenado, o limpia todos los manejadores en el espacio de nombres actual. Pasa tantotoolcomonamepara eliminar un manejador específico, oall: truepara eliminar todo. Útil antes de cambiar DA_AUTH_TOKEN (que de otro modo dejaría huérfanos bajo el directorio antiguo de hash de token)
Recursos MCP (5)
Superficies de estado de dispositivo de solo lectura accesibles por clientes MCP:
device://list— Lista de todos los dispositivos conectados con estado e información de modelodevice://info/{serial}— Propiedades del dispositivo (modelo, SO, compilación, ABI)device://battery/{serial}— Estado de batería analizado (nivel, carga, temperatura, voltaje)device://telephony/{serial}— Estado del registro de telefonía para análisis celularresult://{tool}/{name}— Manejador de resultados de herramienta almacenado. Resolver por URI; creado por herramientas que optan por el almacenamiento de manejadores de resultados mediante el parámetroresult_handle. Listado por adb_result_list
Prompts MCP (4)
Plantillas de flujo de trabajo preconstruidas para tareas comunes de depuración de múltiples pasos:
debug-crash— Limpiar logcat → reiniciar la app → esperar la reproducción → capturar el búfer de fallos → analizardeploy-and-test— Compilar → instalar → limpiar logcat → iniciar el monitor → lanzar → capturar pantalla → informartelephony-snapshot— Capturar el estado de telefonía, SIM/operador de red, tipo de red → resumir anomalíasairplane-cycle-test— Iniciar el monitor → telefonía de referencia → alternar modo avión → comparar estado previo/posterior
Características Clave
Caché de Dispositivos
Los resultados del descubrimiento de dispositivos se almacenan en caché con un TTL configurable (5 s por defecto), eliminando llamadas redundantes al subproceso adb devices durante secuencias rápidas de herramientas. La caché se invalida automáticamente en errores de conexión y después de operaciones de conexión/desconexión/emparejamiento inalámbrico.
Reintentos ante Fallos Transitorios
El puente ADB reintenta automáticamente ante fallos transitorios (dispositivo sin conexión, restablecimiento de conexión, fallo de protocolo) con un número configurable de reintentos y retroceso exponencial. Los comandos de diagnóstico omiten los reintentos para mostrar problemas reales de inmediato.
Protección de Salida
Toda la salida de ADB pasa por el OutputProcessor, que normaliza los finales de línea, aplica límites de caracteres configurables y proporciona truncamiento contextual en límites lógicos (saltos de línea, separadores de sección) en lugar de cortar a mitad de línea. Incluye analizadores estructurados para la salida de batería, meminfo y getprop.
Transmisión Persistente de Logcat
Los monitores de logcat en segundo plano se ejecutan como procesos generados con acumulación de búfer circular. Cada sondeo devuelve solo las líneas nuevas desde la última lectura. Admite múltiples sesiones concurrentes (hasta 10) con filtros independientes. Los manejadores de limpieza de procesos evitan procesos adb logcat huérfanos al salir del servidor.
Análisis de Jerarquía de UI
Captura completa del árbol de vistas mediante uiautomator dump con extracción de XML analizado. Devuelve datos de elementos estructurados, incluidos texto, resource-id, content-description, nombres de clase, coordenadas de límites con puntos centrales listos para tocar y banderas de interacción. Extracción de atributos mediante expresiones regulares precompiladas para un análisis eficiente.
Middleware de Seguridad
Seguridad multicapa activada mediante DA_SECURITY=true. Proporciona filtrado de listas de bloqueo/permitidos de comandos, limitación de velocidad (comandos por minuto) y registro de auditoría con redacción automática de credenciales. Las comprobaciones de seguridad están integradas en adb_shell, adb_root_shell, adb_multi_shell, adb_multi_compare, adb_input, adb_batch_actions y adb_start_activity. Configurable mediante variables de entorno para diferentes escenarios de implementación.
Saneamiento de Entradas
Todas las herramientas que interpolan parámetros proporcionados por el usuario en cadenas de comandos de shell validan las entradas contra metacaracteres de shell antes de la ejecución. Nombres de paquetes, claves de propiedades, nombres de servicios, claves de configuración, identificadores de prueba, nombres de interfaces de red y filtros de tcpdump se validan mediante una función centralizada validateShellArg() que rechaza ;, |, &, $, comillas invertidas, paréntesis y otros vectores de inyección. Las rutas de archivo usan escape de shell con comillas simples para evitar la sustitución de comandos $(). La herramienta adb_input aplica validación específica por tipo: tap/swipe aceptan solo coordenadas numéricas, keyevent acepta solo códigos de tecla alfanuméricos y text se escapa para shell para entrega literal. La herramienta adb_batch_actions aplica la misma validación por tipo de acción (solo dígitos para coordenadas, alfanumérico para códigos de tecla, escape de shell para texto) y enruta cada comando ensamblado a través del middleware de seguridad. El JSON deserializado de archivos de instantáneas se valida antes de la interpolación en shell. Cada parámetro z.number() en las 209 herramientas tiene límites explícitos de .min()/.max() Zod para prevenir el agotamiento de recursos por valores extremos. El LocalBridge tiene manejadores explícitos para cada subcomando ADB utilizado por los módulos de herramientas, evitando el paso no citado al manejador de shell predeterminado. En modo en-dispositivo, la elevación de privilegios usa una lista de permitidos congelada de 16 comandos y una expresión regular de ruta restringida — el conjunto de elevación es ReadonlySet + Object.freeze, no configurable en tiempo de ejecución. El transporte HTTP/SSE deniega solicitudes de origen cruzado por defecto (configurable mediante DA_HTTP_CORS_ORIGIN), el registro de complementos verifica hashes de integridad SHA-256 y previene el recorrido de rutas mediante comprobaciones de contención de directorios, y el motor de flujos de trabajo aplica límites de pasos (200), duración de suspensión (5 min) e iteraciones repetidas (100). Los ayudantes de búsqueda aplican un límite de 5 MB en el cuerpo de la respuesta. El análisis de salida de getprop maneja finales de línea \r\n de Windows mediante .trim() antes de la coincidencia de expresiones regulares, y los contadores de ranuras SIM duales están limitados a 4 para prevenir el agotamiento de recursos por propiedades de dispositivo corruptas.
Orquestación Multi-Dispositivo
Ejecutar comandos, instalar APKs y comparar salidas en múltiples dispositivos conectados en paralelo. Esencial para pruebas comparativas entre versiones de Android y modelos de dispositivos.
Instantánea/Restauración
Capturar instantáneas completas del estado del dispositivo (paquetes, configuraciones en todos los espacios de nombres, propiedades del sistema) en archivos JSON. Comparar el estado actual contra instantáneas guardadas para detectar desviaciones. Restaurar configuraciones desde instantáneas para entornos de prueba reproducibles.
Captura de Tráfico de Red
Captura de paquetes en el dispositivo mediante tcpdump con extracción de archivos pcap para análisis en Wireshark. Incluye listado de conexiones activas mediante ss/netstat con respaldo de /proc/net para dispositivos sin esas herramientas.
Integración CI/CD
Herramientas diseñadas para pipelines automatizados: esperar el arranque del dispositivo con sondeo, comprobaciones de preparación estructuradas y ejecución de pruebas instrumentadas con resultados de aprobado/fallo analizados.
Arquitectura de Complementos
Carga dinámica de módulos de herramientas desde un directorio de complementos configurable. Los complementos son módulos ESM estándar de JavaScript que exportan una función register(ctx) que recibe el ToolContext completo. Se cargan al iniciar el servidor, lo que permite contribuciones de la comunidad sin modificar el código central.
Registro de Complementos de la Comunidad
Buscar, instalar y gestionar complementos desde una URL de registro configurable. Muestra estado de instalación, comparación de versiones y actualizaciones disponibles. Descarga archivos de complementos con metadatos complementarios en el directorio de complementos para cargarlos en el próximo reinicio. Las características de seguridad incluyen verificación de integridad SHA-256 (cuando el manifiesto del registro la proporciona), protección contra recorrido de rutas y comprobación de cordura de exportación register().
Integración de Banda Base/Módem
Herramientas de inspección profunda de radio celular para desarrollo e investigación avanzados de Android. Extrae identificación de firmware del módem, parámetros de identidad celular (CID, TAC, EARFCN, PCI), mediciones de señal crudas (RSRP, RSRQ, SINR), encuestas de celdas vecinas, configuración de operador y registros de módem de múltiples fuentes (búfer de radio RIL, framework de telefonía, dmesg del kernel). Admite familias de chipsets Shannon/Exynos, Qualcomm, MediaTek y Unisoc mediante APIs estándar de telefonía de Android. Incluye detección de SoC Google Tensor (gs101/gs201/zuma/zumapro) para enrutamiento automático de ruta de módem Shannon en Pixel 6–9. La detección de SIM dual informa el estado de SIM por ranura, operador, tipo de red y país para configuraciones DSDS, DSDA y TSTS.
Auditoría de Accesibilidad
Comprobaciones automatizadas de accesibilidad WCAG en la jerarquía de UI en vivo. Detecta etiquetas faltantes en elementos interactivos, objetivos táctiles demasiado pequeños por debajo de la pauta de 48dp (consciente de densidad), imágenes sin content-descriptions, elementos clicables sin capacidad de enfoque y content-descriptions duplicados. Genera informes estructurados con niveles de severidad. Incluye una vista de árbol de accesibilidad dedicada para depuración de lectores de pantalla.
Detección de Regresiones
Capturar líneas base de rendimiento (memoria, CPU, estadísticas de fotogramas, batería, estado de red) y comparar ejecuciones posteriores contra ellas. Umbrales de regresión configurables para memoria (+20 %), CPU (+50 %) y tasa de jank (+25 %). Mantiene un historial de líneas base para análisis de tendencias entre versiones.
Integración de Granjas de Dispositivos
Ejecución de pruebas basada en la nube mediante Firebase Test Lab a través de la CLI de gcloud. Ejecutar pruebas instrumentadas en múltiples modelos de dispositivos y niveles de API, recuperar resultados estructurados y listar configuraciones de matrices de prueba disponibles. Respaldo elegante con instrucciones de configuración si gcloud no está disponible.
Transporte HTTP/SSE
Alternativa a stdio para clientes MCP basados en navegador. Establezca DA_HTTP_PORT para iniciar un servidor HTTP con transmisión SSE. Proporciona endpoints /sse (suscripción de cliente), /message (JSON-RPC) y /health. Las solicitudes de origen cruzado se deniegan por defecto — establezca DA_HTTP_CORS_ORIGIN para permitir explícitamente un origen específico.
Gestión de Sesiones de Prueba
Flujos de trabajo de prueba estructurados con pasos numerados. Cada paso captura una captura de pantalla y una instantánea de logcat en un directorio organizado con un manifiesto Markdown. Diseñado para documentación de pruebas reproducible.
Interfaz de Comandos AT
Paso directo de comandos AT al módem mediante acceso root, lo que permite interrogación cruda más allá del framework de telefonía de Android. El soporte multi-chipset detecta automáticamente los nodos de dispositivo para Samsung Shannon/Exynos, Qualcomm Snapdragon, MediaTek, Unisoc/Spreadtrum y módems USB genéricos. La validación de entrada rechaza metacaracteres de shell tanto de cadenas de comandos AT como de rutas de nodos de dispositivo antes de la interpolación en shell root. Una lista de bloqueo de seguridad previene la ejecución accidental de comandos peligrosos (AT+CFUN=0, AT+EGMR, etc.) con una anulación forzada explícita.
Comparación de Capturas de Pantalla
Detección de regresiones visuales a nivel de píxel real. Captura líneas base de capturas de pantalla nombradas y compara el estado actual de la pantalla decodificando datos de píxeles PNG (análisis IHDR, descompresión IDAT, los 5 tipos de filtro PNG) y comparando valores RGB reales. Informa el recuento y porcentaje de píxeles cambiados, el cuadro delimitador de la región cambiada con posición vertical de pantalla y deltas de dimensiones/tamaño. Admite un parámetro tolerancePercent (0–100) que absorbe cambios dinámicos menores como relojes o insignias de notificación — una tolerancia del 1 % absorbe de manera confiable los cambios del reloj de la barra de navegación (~0,5 % de los píxeles) mientras detecta cualquier regresión real de UI. Ruta rápida SHA-256 para coincidencias exactas. Cero dependencias externas.
Orquestación de Flujos de Trabajo
Motor de flujos de trabajo JSON declarativo para operaciones de dispositivo repetibles de múltiples pasos. Admite sustitución de variables ({{pkg}}), pasos condicionales (expresiones if con ==, !=, contains), bucles (repeat, limitados a 100 iteraciones) y captura de resultados en variables para pasos posteriores. Las acciones se asignan directamente a operaciones del puente ADB con aplicación completa del middleware de seguridad. La validación de flujos de trabajo aplica un máximo de 200 pasos y un límite de suspensión de 5 minutos por paso para prevenir el agotamiento de recursos por definiciones de flujos de trabajo maliciosas o malformadas.
Gestión de APK Divididos
Soporte para formatos de entrega modernos de Android. Instalar paquetes de aplicaciones mediante install-multiple, inspeccionar la estructura de APK divididos (base + divisiones de configuración para idioma, densidad, ABI), extraer todas las divisiones localmente para análisis y listar módulos APEX.
Espejo de Dispositivos
Espejo de pantalla en vivo mediante integración de scrcpy. Admite modo con ventana para retroalimentación visual y modo sin cabeza para flujos de trabajo solo de grabación. El seguimiento de sesiones por dispositivo permite el espejo simultáneo de múltiples dispositivos conectados. Los manejadores de limpieza de procesos evitan procesos scrcpy huérfanos.
Generación Automatizada de Pruebas
Analiza la jerarquía de UI en vivo y los registros de intenciones de paquetes para auto-generar JSON de flujos de trabajo de prueba compatible con el motor de orquestación de flujos de trabajo. La generación basada en UI toca cada elemento interactivo, captura pantallas y comprueba fallos. La generación basada en intenciones lanza cada actividad exportada con detección de fallos.
Monitoreo de Actualizaciones OTA
Rastrea la huella completa del sistema (ID de compilación, versión de Android, parche de seguridad, bootloader, firmware de banda base, versión del kernel, ranura de partición A/B) entre sesiones. Compara el estado actual contra huellas guardadas para detectar actualizaciones OTA. Identifica exactamente qué campos cambiaron y recomienda re-baselinear métricas de rendimiento y capturas de pantalla después de las actualizaciones.
Intercepción de Mensajes RIL
Captura persistente de mensajes de la capa de interfaz de radio (Radio Interface Layer) desde el buffer logcat de Android. Inicia un proceso en segundo plano que acumula y categoriza mensajes RIL en: registro, cell_info, señal, red, seguridad, traspaso, datos, radio_state, SMS y eventos NAS. Recuperación basada en sondeo con filtrado por categoría. Útil para monitoreo pasivo de la comunicación baseband-framework para diagnósticos de radio e investigación de redes celulares. El límite de sesiones (5) y los manejadores de limpieza de procesos previenen el agotamiento de recursos.
Biblioteca de Perfiles de Dispositivo
Base de conocimiento específica de dispositivos que contiene identificación de hardware, familia de chipset, nodos de módem conocidos, compatibilidad con comandos AT, requisitos de root, número de ranuras SIM dual y peculiaridades. Detecta automáticamente perfiles de dispositivos conectados y los compara con una biblioteca integrada de dispositivos conocidos. Los perfiles guardados persisten entre sesiones y mejoran la precisión de auto-detección para herramientas como adb_at_detect. Extensible por la comunidad mediante archivos de perfil guardados.
Transporte WebSocket
Alternativa a stdio y HTTP/SSE para clientes MCP que se benefician de streaming bidireccional real. Menor latencia que el sondeo SSE con mejor compatibilidad con frameworks web. Requiere el paquete npm ws como dependencia opcional entre pares. Establezca DA_WS_PORT para habilitarlo.
Análisis de Firmware del Módem
Identificación integral de firmware multicomponente, comparación y seguimiento de historial. Analiza cadenas de versión de baseband para 6 familias de chipset: Shannon/Exynos (incluyendo formato g5123b-* de Google Pixel/Tensor y formato clásico S5123AP_CL* de Samsung), rama/versión/compilación de Qualcomm MPSS, rama/lanzamiento/hito de MediaTek MOLY, modelo/versión de SoC Unisoc/Spreadtrum, modelo/código de operador HiSilicon/Kirin y modelo/rama Intel XMM. También analiza versiones de bootloader (nombre de código/versión/compilación de Pixel, modelo/operador/revisión de Samsung) y cadenas de implementación RIL (proveedor/id/API/fecha de compilación de Samsung S.LSI, Qualcomm, MediaTek). La sonda de firmware reporta 8 secciones: baseband, bootloader, RIL, kernel, seguridad/compilación, partición/arranque (ranura A/B, arranque seguro, arranque verificado, bloqueo de flash), integridad VBMeta e inventario de particiones OTA. La herramienta de comparación compara todos los componentes de firmware entre huellas guardadas o estado de dispositivo en vivo, con subcomparaciones profundas analizadas para baseband y bootloader. La herramienta de historial rastrea la progresión de firmware multicomponente a través de huellas OTA.
Mercado de Flujos de Trabajo
Capa de intercambio comunitario para el motor de orquestación de flujos de trabajo. Busque un registro de flujos de trabajo de prueba, secuencias de diagnóstico y procedimientos de auditoría contribuidos por la comunidad. Descargue e instale flujos de trabajo directamente para ejecución inmediata con adb_workflow_run. Exporte flujos de trabajo locales con metadatos de mercado y entradas de manifiesto de registro generadas automáticamente para envío. Verificación de integridad SHA-256 en la descarga.
API GraphQL
Endpoint HTTP opcional que sirve una API GraphQL para consultas compuestas de dispositivos. Permite a los clientes obtener información del dispositivo, batería, red y propiedades arbitrarias en una sola solicitud en lugar de múltiples llamadas de herramientas MCP. Tamaño del cuerpo POST limitado a 1 MB. Las propiedades del dispositivo se obtienen previamente una vez por resolución para minimizar llamadas a subprocesos. Requiere el paquete npm graphql como dependencia opcional entre pares. Establezca DA_GRAPHQL_PORT para habilitarlo.
Auditoría SELinux y de Permisos
Inspecciona el modo de aplicación de SELinux, consulta denegaciones AVC de logcat y registros de auditoría del kernel, y audita concesiones de permisos en tiempo de ejecución por paquete. Agrupa permisos concedidos por categoría peligrosa (Cámara, Ubicación, Teléfono, SMS, etc.) y marca concesiones de alta sensibilidad como ubicación en segundo plano y gestión de almacenamiento externo. Extiende la superficie de auditoría de seguridad a la capa de permisos del sistema operativo.
Perfilado Térmico y de Energía
Captura temperaturas de zonas térmicas de sysfs, estados de escalado de frecuencia por CPU y gobernadores, actividad de dispositivos de enfriamiento y tasas de drenaje de batería. Complementa la detección de regresiones con líneas base térmicas/de energía para problemas que se manifiestan como calor o drenaje de batería en lugar de caídas de fotogramas. Incluye medición de drenaje cronometrada con cálculos de mA/mW/porcentaje estimado por hora.
Descubrimiento de Dispositivos de Red
Escanea la red local para dispositivos habilitados para ADB mediante consultas de tabla ARP y barridos opcionales de rango IP. Sondea puertos ADB comunes (5555-5558) con intentos de conexión TCP paralelos por lotes. Extrae IPs WiFi de dispositivos mediante múltiples métodos. El modo de conexión automática descubre y conecta dispositivos en un solo paso. Optimiza los flujos de trabajo de depuración inalámbrica.
Virtualización QEMU/KVM
Gestión de máquinas virtuales en el dispositivo usando QEMU con aceleración de hardware KVM. Permite ejecutar máquinas virtuales Android invitadas directamente en el dispositivo físico — una capacidad única de DeepADB. La asignación dinámica de recursos auto-detecta núcleos de CPU del host y RAM física, reservando 1 núcleo y 35% de memoria para el sistema operativo host para prevenir inanición. Soporte multi-VM rastrea el consumo de recursos entre VMs concurrentes, rechazando nuevas VMs cuando el grupo está agotado en lugar de degradar el rendimiento del host. Gestión de imágenes de disco con formatos qcow2 (disperso, con capacidad de instantáneas) y raw. El reenvío de puertos ADB a VMs invitadas permite que el conjunto completo de herramientas de DeepADB apunte tanto a dispositivos host como invitados simultáneamente. El ciclo de vida del proceso se rastrea mediante el registro centralizado de limpieza con apagado SIGTERM/SIGKILL. La verificación de contención de rutas en todas las operaciones de imagen previene el recorrido de directorios.
Arquitectura ToolContext
Los 49 módulos de herramientas reciben un paquete de dependencias unificado ToolContext que contiene servidor, puente, deviceManager, logger, seguridad y configuración. Agregar nuevas dependencias transversales no requiere cambios en las firmas de los módulos.
Variables de Entorno
| Variable | Predeterminado | Descripción |
|---|---|---|
DA_LOCAL | Auto-detección | Forzar modo en-dispositivo (true/false). Auto-detecta mediante /system/build.prop |
ADB_PATH | Auto-detección | Ruta al binario ADB (ignorado en modo en-dispositivo) |
DA_TIMEOUT | 30000 | Tiempo de espera predeterminado de comandos en milisegundos |
DA_MAX_OUTPUT | 50000 | Máximo de caracteres de salida antes de truncamiento |
DA_MAX_LOGCAT | 500 | Máximo de líneas logcat por instantánea |
DA_DEVICE | (auto) | Serial de dispositivo predeterminado (auto-selecciona si hay un solo dispositivo) |
DA_TEMP_DIR | Temp del SO | Directorio temporal para capturas de pantalla, archivos extraídos, informes de errores, sesiones de prueba, instantáneas |
DA_CACHE_TTL | 5000 | TTL de caché de lista de dispositivos en milisegundos (0 = deshabilitado) |
DA_RETRY_COUNT | 1 | Número de reintentos para fallos transitorios de ADB |
DA_RETRY_DELAY | 500 | Retraso base de reintento en ms (se duplica en cada intento) |
DA_LOG_LEVEL | info | Nivel de registro: debug, info, warn, error |
DA_ASCII_ONLY | (auto-detección) | Establecer a 1 para forzar salida solo ASCII en el banner de advertencia de inicio. Predeterminado auto-detecta mediante WT_SESSION/TERM_PROGRAM/TERM para terminales compatibles con Unicode; retrocede a ASCII en cmd.exe heredado. |
DA_RESOURCE_CACHE_TTL_MS | 0 (deshabilitado) | TTL de caché de recursos MCP en ms. Establecer a un valor positivo para almacenar en caché lecturas de recursos (device://info, device://battery, etc.) durante esa duración. |
DA_RESULT_HANDLE_DIR | {tempDir}/result-handles | Raíz de almacenamiento para manejadores de resultados de herramientas respaldados por tempdir. Anular para reubicar el almacén fuera del directorio temporal predeterminado. |
DA_RESULT_HANDLE_TTL | 43200 (12h) | TTL por manejador en segundos. Los manejadores más antiguos que esto se eliminan en el barrido de inicio y durante la eliminación periódica. Limitado a [60, 7 días]. |
DA_RESULT_HANDLE_MAX_BYTES | 5242880 (5 MB) | Límite de tamaño por manejador. Las herramientas que intentan almacenar un bloque de contenido más grande que esto fallan con un error. |
DA_RESULT_HANDLE_TOTAL_BYTES | 104857600 (100 MB) | Límite de tamaño total del almacén de manejadores de resultados en todos los manejadores. Activa eliminación LRU cuando se excede. |
DA_RESULT_HANDLE_MAX_COUNT | 100 | Número máximo de manejadores activos. Activa eliminación LRU cuando se excede. |
DA_SECURITY | false | Habilitar middleware de seguridad (filtrado de comandos, limitación de velocidad) |
DA_BLOCKED_COMMANDS | (ninguno) | Lista separada por comas de subcadenas de comandos de shell bloqueados |
DA_ALLOWED_COMMANDS | (ninguno) | Lista de permitidos separada por comas (si se establece, solo se ejecutan comandos coincidentes) |
DA_RATE_LIMIT | 0 | Máximo de comandos por minuto (0 = ilimitado) |
DA_CI_PING_TARGET | 1.1.1.1 | Objetivo de alcanzabilidad de red usado por adb_ci_device_ready (la alcanzabilidad de red es una de las verificaciones de preparación junto con la finalización del arranque, la autorización ADB y la disponibilidad del administrador de paquetes). Anular para apuntar a un objetivo interno si 1.1.1.1 está detrás de un firewall. |
DA_AUDIT_LOG | true | Registrar todos los comandos ejecutados para pista de auditoría (establecer a false para deshabilitar) |
DA_PLUGIN_DIR | {tempDir}/plugins | Directorio para escanear módulos .js de complementos al inicio |
DA_REGISTRY_URL | Predeterminado de GitHub | URL del manifiesto JSON del registro de complementos comunitarios |
DA_HTTP_PORT | (deshabilitado) | Establecer a un número de puerto para habilitar el modo de transporte HTTP/SSE |
DA_HTTP_HOST | 127.0.0.1 | Dirección de enlace para servidores HTTP/SSE, WebSocket y GraphQL |
DA_AUTH_TOKEN | (ninguno — abierto) | Token Bearer para transportes de red. Cuando se establece, todas las solicitudes HTTP/SSE/WS/GraphQL requieren el encabezado Authorization: Bearer <token>. Los endpoints de salud están exentos. |
DA_HTTP_CORS_ORIGIN | (ninguno — denegar) | Origen CORS permitido para HTTP/SSE |
DA_WS_PORT | (deshabilitado) | Establecer a un número de puerto para habilitar el modo de transporte WebSocket (requiere npm install ws) |
DA_WS_CORS_ORIGIN | (ninguno — denegar) | Origen CORS permitido para el endpoint de salud WebSocket |
DA_GRAPHQL_PORT | (deshabilitado) | Establecer a un número de puerto para habilitar el endpoint de API GraphQL (requiere npm install graphql) |
DA_GRAPHQL_CORS_ORIGIN | (ninguno — denegar) | Origen CORS permitido para API GraphQL |
DA_WORKFLOW_REGISTRY_URL | (derivado de DA_REGISTRY_URL) | URL del manifiesto JSON del mercado de flujos de trabajo |
DA_TEST_PIN | (ninguno) | PIN numérico usado por tests/test-ui-control.mjs para ejercitar pruebas de bloqueo/desbloqueo de pantalla. Sin él, las 4 pruebas de estado de bloqueo se omiten. Formato: DA_TEST_PIN=0000 npm test. |
Estructura del Proyecto
DeepADB/
├── src/
│ ├── index.ts # Entry point — stdio, HTTP/SSE, WebSocket, or GraphQL transport
│ ├── server.ts # MCP server wiring, config, module registration (exports CreateServerResult)
│ ├── http-transport.ts # HTTP/SSE transport server for browser clients
│ ├── ws-transport.ts # WebSocket transport (optional `ws` peer dependency)
│ ├── graphql-api.ts # GraphQL API endpoint (optional `graphql` peer dependency)
│ ├── tool-context.ts # Unified dependency bundle (ToolContext interface)
│ ├── bridge/
│ │ ├── adb-bridge.ts # Core ADB subprocess wrapper, retry logic, error types
│ │ ├── local-bridge.ts # On-device direct execution bridge with privilege escalation (Termux/local mode)
│ │ └── device-manager.ts # Device discovery, TTL cache, serial routing
│ ├── tools/
│ │ ├── health.ts # Toolchain health check (1 tool)
│ │ ├── runtime-audit.ts # Unified read-only runtime readiness audit (1 tool)
│ │ ├── device.ts # Device info and properties (3 tools)
│ │ ├── shell.ts # Shell and root command execution (2 tools)
│ │ ├── packages.ts # App lifecycle, install, permissions, intents (12 tools)
│ │ ├── database-inspector.ts # Package-scoped read-only Room/SQLite inspection (1 tool)
│ │ ├── files.ts # File operations — push, pull, write, find, grep, replace, stat, checksum, chmod, chown, touch, fsinfo (18 tools)
│ │ ├── logs.ts # Logcat snapshots — filtered (3 tools)
│ │ ├── logcat-watch.ts # Persistent logcat with ring buffer and poll (4 tools)
│ │ ├── diagnostics.ts # dumpsys, telephony, battery, network, perf, bugreport, crash logs, heap dump (9 tools)
│ │ ├── ui.ts # Screenshots, input, activity, UI hierarchy, annotated screencap, screen state (8 tools)
│ │ ├── input-gestures.ts # Drag, long press, double tap, text, URL, orientation, clipboard, tap-element, wait-element, wait-stable, scroll-until, compressed screenshot, batch actions, fling, pinch, screen size, device state, notifications (18 tools)
│ │ ├── screen-record.ts # Screen video recording start/stop (2 tools)
│ │ ├── control.ts # Airplane, WiFi, data, location, screen, settings, reboot (9 tools)
│ │ ├── wireless.ts # WiFi pairing, connect, disconnect, TCP/IP (4 tools)
│ │ ├── forwarding.ts # Port forwarding — forward, reverse, list, remove, managed tunnels with auto-port-pick (8 tools)
│ │ ├── emulator.ts # AVD list, start, stop with on-device KVM/QEMU detection (3 tools)
│ │ ├── qemu.ts # QEMU/KVM VM management — setup, images, start, stop, status, guest ADB connect/disconnect/shell (8 tools)
│ │ ├── testing.ts # Structured test sessions with numbered steps (3 tools)
│ │ ├── multi-device.ts # Multi-device shell, install, compare, comparative testing (4 tools)
│ │ ├── snapshot.ts # Device state capture, compare, restore (3 tools)
│ │ ├── network-capture.ts # tcpdump start/stop, network connections (3 tools)
│ │ ├── ci.ts # CI wait-boot, device-ready, run-tests (3 tools)
│ │ ├── plugins.ts # Plugin loader, info, and dynamic tool loading (2 tools)
│ │ ├── baseband.ts # Modem/baseband inspection and radio diagnostics (6 tools)
│ │ ├── accessibility.ts # Automated WCAG accessibility auditing (3 tools)
│ │ ├── regression.ts # Performance baseline and regression detection (3 tools)
│ │ ├── device-farm.ts # Firebase Test Lab integration via gcloud (3 tools)
│ │ ├── registry.ts # Community plugin registry search/install (3 tools)
│ │ ├── at-commands.ts # AT command modem interface, Shannon session, cross-validation (6 tools)
│ │ ├── screenshot-diff.ts # Visual regression — screenshot baseline/diff (3 tools)
│ │ ├── workflow.ts # Declarative workflow orchestration engine (3 tools)
│ │ ├── split-apk.ts # App bundles, split APKs, APEX modules (4 tools)
│ │ ├── mirroring.ts # Live screen mirroring via scrcpy (3 tools)
│ │ ├── test-gen.ts # Automated test workflow generation (3 tools)
│ │ ├── ota-monitor.ts # OTA update monitoring and fingerprinting (3 tools)
│ │ ├── ril-intercept.ts # RIL message interception from radio buffer (3 tools)
│ │ ├── device-profiles.ts # Device profile library with built-in entries (3 tools)
│ │ ├── firmware-analysis.ts # Modem firmware version parsing and diffing (3 tools)
│ │ ├── workflow-market.ts # Workflow marketplace — search, install, export (3 tools)
│ │ ├── selinux-audit.ts # SELinux status, AVC denials, permission auditing (3 tools)
│ │ ├── thermal-power.ts # Thermal zones, CPU frequency, battery drain (3 tools)
│ │ ├── network-discovery.ts # ADB-over-network scanning and auto-connect (3 tools)
│ │ ├── app-network.ts # Per-app UID routing and network-policy context (1 tool)
│ │ ├── wear.ts # Wear OS Data Layer phone/watch preflight (1 tool)
│ │ ├── sensors.ts # Hardware sensor enumeration, IIO power monitor reading (2 tools)
│ │ ├── result-handles.ts # Tempdir-backed result handle store — list, drop, drop-all (3 tools) + the result://{tool}/{name} resource
│ │ ├── wireless-firmware.ts # WiFi, Bluetooth, NFC, GPS firmware identification (4 tools)
│ │ ├── build.ts # Gradle build and install (2 tools)
│ │ ├── resources.ts # MCP Resources — 4 device-state surfaces: device://info|battery|telephony|list (5th, result://, lives in result-handles.ts)
│ │ └── prompts.ts # MCP Prompts — workflow templates (4 prompts)
│ ├── middleware/
│ │ ├── auth.ts # Bearer token authentication for network transports (DA_AUTH_TOKEN)
│ │ ├── output-processor.ts # Contextual truncation, structured parsers, settledValue helper
│ │ ├── security.ts # Command filtering, rate limiting, audit logging with redaction
│ │ ├── sanitize.ts # Shell injection prevention — validateShellArg/validateShellArgs/shellEscape
│ │ ├── chipset.ts # Shared chipset family detection, modem path mapping, SIM config detection
│ │ ├── fetch-utils.ts # Shared HTTP helpers with 5 MB streaming response size limit
│ │ ├── png-utils.ts # Zero-dependency PNG decode/encode/draw primitives for screenshot annotation and diffing
│ │ ├── ui-dump.ts # Shared uiautomator XML capture with concurrent-safe paths, on-device /data/local/tmp routing, and cleanup
│ │ ├── cleanup.ts # Centralized process cleanup registry for SIGINT/SIGTERM/exit
│ │ ├── logger.ts # stderr-safe logging (MCP-compliant)
│ │ ├── fs-utils.ts # Filename sanitization, atomic write, private-dir helpers, within-dir containment check
│ │ ├── parse-utils.ts # Shared parseIntSafe for env-var numeric parsing (single source of truth)
│ │ └── result-handle.ts # Tempdir-backed tool result content cache with TTL, LRU, and token-hash isolation
│ └── config/
│ └── config.ts # Configuration, env vars, startup validation
├── package.json
├── tsconfig.json
├── server.json # MCP Registry metadata (io.github.fullread/deepadb)
├── .gitignore
├── README.md
├── SECURITY.md # Threat model, security architecture, deployment hardening, vulnerability reporting
├── CHANGELOG.md # Version history from v0.1.0 to current
├── LICENSE # Apache 2.0 license
└── tests/
├── run-all.mjs # Run all test suites sequentially with summary (tracks skipped counts)
├── test-hw.mjs # Hardware core: health, identity, baseband, thermal, profiles, wireless firmware, crash analysis (34 tests)
├── test-shell-files.mjs # Shell, filesystem, packages, diagnostics (24 tests)
├── test-ui-control.mjs # UI hierarchy, screenshots, settings, input gestures, UI automation, device awareness, accessibility, screen lock/unlock, multi-touch (46 tests)
├── test-monitoring.mjs # Logcat watchers, snapshots, OTA, regression, workflows (43 tests)
├── test-security.mjs # Input sanitization, shell injection, AT command safety, QEMU shell escaping, heap-dump validation (116 on-device, 105 host)
├── test-lifecycle.mjs # App lifecycle, file push/pull, input, port forwarding, screen recording, test sessions (24 tests)
├── test-analysis.mjs # Thermal/snapshot/regression comparison, firmware diff, screenshot diff, test gen, RIL intercept, AT cross-validation, permission management (23 tests)
├── test-boundaries.mjs # Zod bounds enforcement, input injection, error paths, sensitive data protection, wireless ADB coverage, multi-device basics, tunnel automation, device-free coverage boundaries (78 tests)
├── test-sensors.mjs # HAL sensors, IIO power monitors, category filters, formatting, wake-up, rate display (30 tests)
├── test-files-extended.mjs # File tool coverage — write, find, stat, checksum, mkdir, rm, move, copy, chmod, touch, fsinfo, chown, grep, replace; push safety; sed-escape regression (95 tests)
├── test-result-handles.mjs # Result handle store — listing, retrieval, drop, isolation, eviction (19 tests)
├── test-qemu.mjs # QEMU/KVM setup, image management, VM status, guest connectivity errors (13 on-device tests)
├── test-qemu-boot.mjs # QEMU Alpine VM boot with auto-fetch of kernel/initrd, KVM acceleration, topology detection, guest ADB connectivity (17 on-device tests)
├── test-supply-chain.mjs # Supply-chain hardening checks for fetch and network paths (24 tests)
├── test-sanitize-fuzz.mjs # Property-based fuzzing of shell sanitizers — shellQuote/shellEscape round-trip, validateShellArg rejection (19 tests)
├── test-transports.mjs # Transport smoke — HTTP/SSE + WebSocket MCP round-trip, GraphQL health query (8 tests)
└── lib/
└── harness.mjs # Shared test harness (stdio JSON-RPC transport, assertion primitives)
Pila Tecnológica
- Runtime: Node.js ≥22 (ES2024, ESM; Node 22.12+ para cobertura)
- Lenguaje: TypeScript 6.0 (modo estricto, resolución de módulos NodeNext)
- SDK MCP:
@modelcontextprotocol/sdk^1.24.0 (actualmente resuelve a 1.30.0) - Validación: Zod ^4.4.3
- Transporte: stdio (JSON-RPC), HTTP/SSE, WebSocket (opcional
ws), API GraphQL (opcionalgraphql)
Licencia
Licencia Apache 2.0 — ver LICENSE y NOTICE. El lanzamiento v1.1.2 migró de MIT a Apache 2.0 por la concesión explícita de patentes y los requisitos de atribución de contribuyentes; las bifurcaciones/instalaciones existentes permanecen válidas bajo los términos MIT anteriores.