android-adb-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADB_PATH | No | Path to the adb binary. | adb |
| ADB_SERIAL | No | Comma-separated allowlist of device serials (`adb devices`). Every other device is refused. Recommended. | any |
| ALLOW_SHELL | No | Set to `1` to register the raw `shell` tool. | off |
| ALLOW_SENSITIVE | No | Set to `1` to turn off the sensitive-app guard. | off |
| RATE_LIMIT_PER_MIN | No | Maximum tool calls per minute. | 120 |
| SENSITIVE_PACKAGES | No | Extra package names to treat as sensitive (comma-separated). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List connected ADB devices (filtered by ADB_SERIAL allowlist if set) |
| connect_wifiA | Connect to a device over Wi-Fi. For Android 11+ wireless debugging, pass pairing_code and pair_port (from 'Pair device with pairing code') to pair first. |
| screenshotC | Take a screenshot (PNG) |
| get_screen_sizeC | Get screen resolution in pixels |
| tapB | Tap at pixel coordinates |
| swipeC | Swipe from (x1,y1) to (x2,y2) over ms milliseconds |
| long_pressC | Long-press at coordinates |
| type_textB | Type text into the focused field (printable ASCII) |
| key_eventB | Send a key event. Names: home, back, call, endcall, up, down, left, right, center, volume_up, volume_down, power, camera, tab, enter, delete, menu, search, play_pause, mute, recents, app_switch, wakeup, sleep; or a numeric keycode |
| open_appC | Launch an app by package name |
| list_appsC | List installed packages (third-party by default) |
| current_appC | Get the foreground app package |
| ui_dumpB | Dump the UI hierarchy as a compact list of clickable/labelled elements with bounds and center coordinates |
| tap_elementA | Find an element by text/content-desc (substring, case-insensitive) or resource-id and tap its center |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Each tool has a clearly distinct purpose: device listing, app inspection, input actions, screen capture, and UI element interaction are well separated. tap vs tap_element and open_app vs current_app are unambiguous, so an agent can select correctly without confusion.
All names use snake_case, which is readable, but the verb/noun convention is inconsistent: list_devices and get_screen_size follow verb_noun, while screenshot, current_app, key_event, and ui_dump use noun or mixed forms. The set is understandable but not predictably patterned.
14 tools is well-scoped for an ADB/UI-automation server. Each tool covers a distinct operation, and there is no obvious redundancy or filler.
The surface covers device discovery, app inspection, input gestures, text entry, key events, screenshots, and UI hierarchy dumping. Minor gaps exist for app install/uninstall, file transfer, shell commands, and reboot, but core UI automation workflows are supported.