android-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANDROID_HOME | No | Android SDK location, used to locate adb | |
| ANDROID_MCP_DEVICE | No | Default device id used when a tool call omits device | |
| ANDROID_MCP_ALLOW_UNSAFE_URLS | No | Set to 1 to allow non-http(s) URLs (e.g. deep links) in android_open_url |
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 |
|---|---|
| android_list_devicesA | List connected Android devices and emulators with name, Android version, and connection type. Auto-discovers wireless-debugging devices via mDNS when the list is empty. |
| android_connect_wifiA | Connect to an Android device over WiFi ADB. Accepts HOST or HOST:PORT (port defaults to 5555). The device must have wireless debugging or 'adb tcpip 5555' enabled. |
| android_device_infoA | Get details of a device: model, Android version, SDK level, screen size, orientation, battery level, and the current foreground app. |
| android_list_appsA | List installed apps that have a launcher activity (package names). |
| android_launch_appA | Launch an app by package name. Use android_list_apps to find package names. |
| android_terminate_appB | Force-stop a running app by package name. |
| android_install_appC | Install an APK file on the device. |
| android_uninstall_appA | Uninstall an app from the device by package name. |
| android_take_screenshotA | Take a screenshot of the device screen and return it as an image. Use android_list_elements first when you need coordinates of UI elements. Do not cache this result. |
| android_save_screenshotB | Take a screenshot and save it to a PNG file on this computer. |
| android_list_elementsA | List UI elements on the current screen with text, accessibility labels, resource ids, and pixel coordinates. Use this to find where to tap. Do not cache this result. |
| android_wait_for_elementA | Wait until a UI element appears on screen. Use this instead of a fixed sleep when content loads dynamically. Returns element info and center coordinates when found. |
| android_tapA | Tap the screen at x,y pixel coordinates. Use android_list_elements to find element coordinates. |
| android_tap_elementA | Find a UI element by selector and tap its center. More reliable than coordinate taps for dynamic layouts. Waits for the element to appear (default 5s). |
| android_double_tapB | Double-tap the screen at x,y pixel coordinates. |
| android_long_pressC | Long-press the screen at x,y pixel coordinates. |
| android_swipeC | Swipe in a direction. Starts from screen center by default, or from given x,y coordinates. |
| android_dragA | Drag from one point and drop at another (uses a slow swipe that triggers drag behavior). |
| android_type_textA | Type text into the currently focused input field. Tap the field first. ASCII only (adb limitation). |
| android_press_keyA | Press a hardware or navigation key. Common keys: BACK, HOME, ENTER, MENU, APP_SWITCH, POWER, VOLUME_UP, VOLUME_DOWN, DELETE, TAB, DPAD_UP/DOWN/LEFT/RIGHT/CENTER. Any Android KEYCODE_* name or numeric keycode also works. |
| android_open_urlB | Open a URL in the default browser on the device. |
| android_open_notificationsA | Expand the notification shade to inspect notifications. Use android_list_elements or android_take_screenshot afterwards to read them, and BACK key to close. |
| android_set_orientationA | Set the screen orientation (disables auto-rotate). |
| android_start_recordingA | Start recording the device screen in the background. Stop it with android_stop_recording. Max duration is 180 seconds (Android limit). |
| android_stop_recordingA | Stop the active screen recording, pull the video from the device, and save it as an .mp4 file on this computer. |
| android_logcatA | Read recent device logs. Useful for debugging apps (Flutter, React Native, native). The 'crash' buffer contains crash reports. |
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 26 tools
Each tool targets a distinct action or resource. While tap and tap_element overlap, their descriptions clarify different use cases for coordinate vs. element-based tapping. Other tools like drag and swipe are clearly differentiated.
All tools follow a strict 'android_' prefix with snake_case action-oriented names. There is no mixing of conventions, and the verb-noun structure is consistent throughout.
With 26 tools, the server is comprehensive but not excessively large. Every tool seems justified for Android device automation, though some could be merged (e.g., tap and tap_element). The count is high but still reasonable.
The tool set covers device connection, UI interaction, app management, screenshots, recording, and logs. Missing operations like file transfer or clipboard access are minor gaps, but core workflows for UI automation are supported.