MCP server for Android device control via ADB and uiautomator2, providing UI hierarchy inspection, screenshots, and shell command execution
Four tools with basic verb-noun naming and present descriptions, but significant gaps in parameter documentation and output schema clarity. All tools lack descriptions for their return types. Parameter descriptions exist but are minimal (10-30 chars). No error handling guidance, no pagination support, and no tool annotations. Security validation is present in execute_adb_command but not documented in the tool description itself.
Executa um comando ADB shell autorizado no dispositivo. Comandos permitidos: input, am, pm, dumpsys, getprop, settings, service, wm, cmd. Metacaracteres de shell são rejeitados por segurança.
Retorna o dump XML da hierarquia de UI da tela atual do dispositivo.
Retorna os seriais de todos os dispositivos Android conectados via ADB.
Captura um screenshot do dispositivo e retorna como JPEG codificado em base64.
No output schema documentation. Tools return strings, dicts, or lists but LLMs cannot infer field names, types, or structure. E.g., execute_adb_command returns {stdout, exit_code} but this is not documented in the tool definition.
Parameter descriptions are too brief (10-30 chars). 'Serial ADB do dispositivo alvo.' lacks context on format, constraints, or when to use. Rubric baseline: 72 chars average. LLMs cannot infer valid values from minimal descriptions.
execute_adb_command has security validation (_validate_command) but the tool description does not explain the whitelist, shell injection prevention, or what happens if validation fails. Security constraints must be explicit in descriptions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
No error handling guidance. Tools raise generic exceptions without telling LLMs what to do next (retry, ask user, check device connection, etc.). Rubric requires: 'Error responses must tell the LLM what to do next.'
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Three tools are READ_ONLY and one is WRITE, but this is not declared in the tool schema. LLMs cannot infer safety properties.