run-sequence-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 the device parameter. | |
| 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 |
|---|---|
| run_sequenceA | Run ordered Android actions, batching consecutive input commands in one ADB shell. Stops on errors; wait_for_element checks accessibility UI, not application success. |
| 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 27 tools
Most tools target a distinct action on a distinct resource, and descriptions explicitly cross-reference each other (tap → list_elements, tap_element preference over tap). Minor overlap exists between android_tap and android_tap_element, and between android_swipe and android_drag, but the descriptions clarify when to use which. run_sequence nominally overlaps all input tools, though it is clearly framed as a batching orchestrator.
Almost the whole surface follows an android_verb_noun snake_case pattern (android_list_elements, android_launch_app, android_take_screenshot). The only outlier is run_sequence, which drops the android_ prefix and uses a different verb style. That single deviation keeps it from a 5 but the convention is otherwise highly predictable.
27 tools is above the comfortable range, but the domain (device connection, app lifecycle, input, capture, debugging) is genuinely broad and each tool maps to a real capability. Still, some are borderline granular (android_take_screenshot vs android_save_screenshot, android_double_tap/long_press vs coordinate taps) and could be consolidated.
The surface covers device discovery/connection, app install/uninstall/launch/terminate, rich input, screenshots and video recording, notifications, orientation, and logcat — no major dead ends for UI automation workflows. Gaps remain for file push/pull, clipboard access, arbitrary shell commands, and multi-touch gestures like pinch/zoom.