Model Context Protocol server for Android device automation via ADB, enabling AI assistants to control Android devices, interact with UI elements, manage files, and execute shell commands
Android-MCP-go has 27 tools with basic schemas and descriptions, but significant quality gaps. Descriptions are present but often generic (e.g., 'Click on a specific cordinate' [sic], 34 chars, below the 50-char baseline). Many tools expose coordinate-based parameters (x, y, x1, y1, etc.) without explaining coordinate system, bounds, or screen reference. No output schemas documented. Error handling is minimal, handlers return generic text or error messages without recovery guidance. Tool naming has redundancy (ListDevices + device_list, Click + ui_click) suggesting composition issues. Security concerns: shell_exec accepts arbitrary commands with no validation or sandboxing hints.
Click on a specific cordinate
Click on an element by selector (text, resourceId, className, description). More reliable than coordinate clicks.
Connect to an ADB device by serial number
Manage ADB devices (list, connect, or disconnect)
Drag from one coordinate to another
List available ADB devices
Long click on a specific coordinate
Parameter descriptions missing or minimal. Coordinate-based tools (Click, Swipe, Drag, Pinch, LongClick) do not document coordinate system, bounds, or screen reference frame. LLMs cannot infer whether (0,0) is top-left, what max values are, or if coordinates are in pixels or percentages.
Duplicate tool names with different casing/prefixes (ListDevices + device_list, Click + ui_click, Snapshot + ui_snapshot, Pinch + pinch + ui_pinch). This violates single-responsibility and forces LLMs to reason about which variant to use, wasting tokens and inviting selection errors.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | <=2025-11-25 | v2 |
Send a notification to the device
Pinch gesture (zoom in/out) with two finger coordinates
Press a key or button on the device
Take a screenshot of the device
Swipe from one coordinate to another
Type text on the device
Wait for a specified number of seconds
Wait for an element to appear on the screen
Connect to an ADB device by serial number (alias)
List available ADB devices (alias)
Pull a file from the device
Push a file to the device
Launch an application on the device
List installed applications on the device
Pinch gesture (zoom in/out) with two finger coordinates (alias)
Execute a shell command on the device
Stop an application on the device
Click on a specific cordinate (alias)
Pinch gesture (zoom in/out) with two finger coordinates (alias)
Take a screenshot of the device (alias)
No output schemas documented. Tools return text or error messages, but LLMs cannot parse structured results or extract IDs for chaining. E.g., ListDevices returns device list as text; no structured array with serial/state fields.
shell_exec accepts arbitrary commands with no validation, sandboxing, or permission hints. Agents can execute destructive commands (rm -rf, reboot, etc.) without guardrails. No dry-run or confirmation pattern.
Error handling is generic. Handlers return plain text errors without recovery guidance. E.g., 'Failed to connect: <error>' tells LLM nothing about whether to retry, ask user, or try a different device.