Android MCP server providing device automation, accessibility control, and system information access through HTTP-based JSON-RPC protocol
MCP-box exposes 13 Android accessibility and device tools via HTTP. Tool naming follows verb_noun convention (accessibility/health, accessibility/click_text, etc.), which is good. However, descriptions are extremely terse (10-30 chars), parameter descriptions are entirely absent, and input schemas lack type information for most parameters. No output schemas are documented. Error handling is not visible in the provided code. The server appears to be a direct Android accessibility service wrapper without LLM-optimized tool design. Most tools lack the context needed for LLM selection and safe execution.
Clicks UI node containing text
Clicks UI node by viewIdResourceName
Find nodes by text or viewId
Performs a global accessibility action
Performs hardware-style commands: back/menu/media buttons
Returns server and accessibility health status
Scrolls a container (forward/backward) optionally by target text/viewId
Sets text in editable control by text hint or viewId
Parameter descriptions entirely absent. No tool parameter has a description explaining what it controls, expected format, or constraints. LLMs cannot infer parameter meaning from names alone (e.g., 'direction' in scroll could mean forward/backward or up/down).
Tool descriptions are critically short (10-30 chars). Baseline for A+ tools is 50-200 chars. Current descriptions like 'Clicks UI node containing text' lack context for when to use the tool, what it returns, and prerequisites.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | <=2025-11-25 | v2 |
Performs swipe gesture between coordinates
Performs tap gesture at screen coordinates
Returns accessibility tree snapshot for agent exploration
Lists calendar events
Lists all contacts with names and phone numbers
No output schemas documented. Tools return accessibility tree snapshots, event lists, and contact data, but the response structure is not specified. LLMs cannot plan downstream calls or extract required fields without knowing what the response contains.
Input schemas lack type information for optional parameters. E.g., accessibility/scroll has 'text' and 'viewId' as optional but no type declarations.
No error handling guidance visible. Tools like accessibility/click_text and accessibility/set_text are destructive (WRITE risk) but provide no recovery hints if the target is not found or the action fails. Per pattern:recovery-guide, errors must tell the LLM what to do next.