android-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANDROID_HOME | No | The path to the Android SDK. If your SDK is not in the default location (~/Library/Android/sdk on macOS), set this variable to point to your SDK directory. |
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 Android devices and emulators |
| list_avdsB | List available Android Virtual Devices |
| start_emulatorA | Start an Android emulator. Waits up to 60s for it to come online. |
| screenshotA | Take a screenshot of the Android device. Returns the image for visual analysis. Optionally saves to a file path. |
| get_ui_treeA | Get the UI element hierarchy of the current screen. Returns interactive elements with their bounds, text, resource IDs, and state. Use this to find elements before tapping. |
| tapC | Tap at specific screen coordinates |
| tap_elementA | Tap a UI element by its resource-id, text, or content-desc. Finds the element in the UI tree and taps its center. |
| tap_and_waitA | Tap element then wait for UI to settle and return the new UI tree. Combines tap + wait + get_ui_tree into a single fast operation. |
| type_textB | Type text into the currently focused input field |
| press_keyC | Press a hardware/software key |
| swipeC | Perform a swipe gesture on the screen |
| scroll_to_elementA | Scroll down repeatedly until an element matching the given criteria is visible |
| wait_for_elementB | Wait for a UI element to appear on screen. Polls every 500ms. |
| launch_appC | Launch an Android app by package name |
| install_apkC | Install an APK file on the device |
| get_current_activityC | Get the currently displayed app and activity |
| adb_shellC | Run an arbitrary ADB shell command |
| get_logsA | Get device logcat output. Use to find crashes, exceptions, and errors after reproducing a bug. |
| clear_logsA | Clear the logcat buffer. Call this before reproducing a bug to get clean logs. |
| get_device_infoB | Get device details: model, manufacturer, Android version, API level, screen size, and DPI. |
| pull_fileC | Pull a file from the Android device to the local filesystem. |
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 21 tools
Most tools have distinct purposes, but there is some overlap between tap, tap_element, and tap_and_wait, which could cause confusion about when to use each. The descriptions help clarify differences, but the boundaries are not entirely clear.
Tools follow a consistent verb_noun or verb_pattern naming style (e.g., get_device_info, list_devices, tap_element), with minor deviations like adb_shell (noun_verb) and scroll_to_element (verb_preposition_noun). Overall, the naming is readable and mostly predictable.
With 21 tools, the count is borderline high for an Android testing/automation server, potentially feeling heavy. However, it covers a broad range of operations, so it's not excessive, but could be streamlined for better focus.
The tool set provides comprehensive coverage for Android device interaction, including device management, UI automation, debugging, and file operations. There are no obvious gaps; it supports full workflows from setup to testing and analysis.