MCP server exposing Android Debug Bridge (ADB) to AI assistants
Strong tool naming (verb_noun pattern consistently applied) and comprehensive parameter schemas with Zod validation. Descriptions are clear and actionable (avg ~150 chars, within baseline 194). All 12 tools have explicit input schemas with type definitions and parameter descriptions. However, output schemas are not documented in the source, LLMs cannot see what fields to expect from responses. Error handling is present but generic (no recovery guidance or error classification). Missing tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. No batch variants for tools agents call in loops (e.g., adb_tap could batch multiple coordinates).
Get all registered actions for an installed app — activities, services, and receivers with their full intent filters (schemes, categories, authorities, deep links). Useful for discovering how to launch specific screens or trigger app functionality.
Get detailed info about an installed app: version, install path, permissions, whether it's running, memory usage, and more.
Run any ADB command. The `command` parameter is everything after `adb` (e.g., "shell pm list packages -3"). Returns the command output, exit code, and the full command string for debugging.
List all connected Android devices/emulators with metadata (model, Android version, API level, transport type).
Push a local file to the device or pull a file from the device to local filesystem.
Find a UI element on screen by text, resource ID, or content description and tap on it. Uses Android's uiautomator to inspect the view hierarchy — no screenshot needed. Perfect for clicking buttons, links, or any visible element by its label.
Output schemas not documented. LLMs cannot see what fields adb_command, adb_app_info, adb_app_actions, adb_get_ui_elements return. This forces agents to guess structure and wastes tokens parsing unstructured responses.
Tool annotations missing. Despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE), tools lack readOnlyHint/destructiveHint annotations. Agents cannot distinguish safe from dangerous operations without reading descriptions.
Error handling lacks recovery guidance. Tools return errors but do not tell LLMs what to do next (retry, ask user, or fail). E.g., 'device not found' should suggest 'Call adb_devices() to list available devices.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
List UI elements currently visible on screen. Uses Android's uiautomator to dump the view hierarchy. Filter by text, resource ID, content description, or class name. Use this to discover what's on screen before interacting.
Install an APK on a connected device. Validates the file exists, provides helpful error messages for common install failures (version downgrade, incompatible update, etc.).
Capture a screenshot from the device screen. Returns the image inline (compressed by default for fast transfer). Use savePath to also save the full-resolution file locally.
Run a streaming/long-running ADB command (e.g., logcat, top). Captures output for a specified duration or number of lines, then returns the collected output.
Tap on a screen coordinate. If you provide screenshotWidth/screenshotHeight (the dimensions of a screenshot image you're looking at), the tool auto-scales coordinates to the actual device resolution. This avoids the common problem of tapping wrong coordinates when the screenshot is scaled down.
Uninstall an app from a connected device. Provides helpful error messages for common failures (device admin, system app, unknown package).
No batch variants. adb_tap, adb_find_and_tap, and adb_file_transfer are called in loops by agents. Batch versions (tap_multiple, transfer_batch) would reduce token waste and latency.
adb_screenshot lacks result limit guidance. Returning full-resolution PNG without size warnings risks context window exhaustion. Description mentions 'may exceed size limits' but does not specify max dimensions or recommend compression.