Agent-Android
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADB_PATH | No | Path to the adb executable | |
| AGENT_ANDROID_DATA_DIR | No | Data directory for SQLite, locks, and optional binaries | |
| AGENT_ANDROID_WEB_HOST | No | Web listening address | 127.0.0.1 |
| AGENT_ANDROID_WEB_PORT | No | Web port | 8765 |
| AGENT_ANDROID_API_TOKEN | No | API token required for non-loopback web access | |
| AGENT_ANDROID_STREAM_BACKEND | No | Stream backend: 'screenshot' or 'scrcpy' | screenshot |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List all currently visible Android devices (USB and already-connected WiFi). |
| screenshotB | Capture the current screen of the given device as an image. |
| get_screen_sizeA | Get active and physical screen dimensions without transferring a screenshot. |
| tapC | Tap the screen at pixel coordinates (x, y). |
| double_tapA | Double-tap the screen at pixel coordinates (x, y). |
| swipeB | Swipe from (x1, y1) to (x2, y2) over |
| key_eventA | Press a named key (home, back, recent, volume_up, ...) or raw Android keycode. |
| input_textA | Type text into the focused field. |
| clear_textB | Clear text in the currently focused input field. |
| text_input_capabilitiesA | Inspect the active IME and whether reliable Unicode input is available. |
| launch_appC | Launch an app and, by default, wait until it is confirmed foreground. |
| wait_for_appB | Wait until the requested Android package becomes the foreground app. |
| list_appsB | List installed package names on the device. |
| dump_uiA | Get all UI elements on screen (text/resource-id/class/bounds/clickable) via the accessibility tree. |
| screen_summaryA | Return compact visible labels and bounds; prefer this over dump_ui for routine inspection. |
| find_elementB | Find the first UI element matching the given (non-None) attributes. Returns None if not found. |
| wait_for_elementC | Wait until an accessibility element appears, then return it. |
| tap_elementB | Find a UI element by attribute(s) and tap its center. Raises if no match is found. |
| ocr_screenA | Run OCR on the current screen for UIs with no usable accessibility tree (canvas/games/WebView). Returns matched text + bounding box + confidence. |
| ocr_tapA | Find text on screen via OCR (best fuzzy match) and tap its center. Raises if no good match is found. |
| search_appsB | Search installed package names containing |
| get_current_appA | Get the package name of the currently foregrounded app. |
| tcpip_pair_deviceA | Switch a USB-connected, already-trusted device into WiFi mode and connect to it. Requires the device to have been used over USB at least once already. |
| connect_deviceA | Connect to a WiFi device by ip:port (already tcpip-enabled or paired). |
| pair_with_codeB | Pair with an Android 11+ wireless-debugging device using its six-digit code. |
| reconnect_remembered_devicesA | Attempt to reconnect every remembered WiFi ADB device. |
| list_remembered_devicesA | List WiFi device_ids previously paired/connected, whether or not currently reachable. |
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 27 tools
Most tools have clearly distinct purposes, such as tap vs double_tap vs swipe vs key_event. However, there is some overlap between UI inspection tools (dump_ui vs screen_summary vs find_element vs ocr_screen) and between device connection tools (connect_device vs pair_with_code vs tcpip_pair_device), though descriptions help differentiate them.
Tool names are mostly snake_case but mix verb_noun (e.g., list_devices, tap, input_text) with noun phrases (e.g., screenshot, key_event, screen_summary). Some names like 'tcpip_pair_device' are awkward. Overall readable but not fully consistent.
27 tools is on the high side for an MCP server. While each tool has utility, the set could potentially be streamlined (e.g., combining some UI inspection tools). The count feels slightly excessive for the domain scope.
The tool set covers many key operations (device discovery, screen capture, input, UI inspection, app management), but lacks common actions like device info retrieval, app install/uninstall, clipboard access, and explicit scrolling. These gaps may limit automation scenarios.