android-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADB | No | Path to adb if it is not on the PATH or in ~/Android/Sdk/platform-tools. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| devicesA | Phones and emulators adb can see, with their serial, model and state. |
| screen_elementsA | What is on screen: each visible text or touchable element with its centre (x, y), type, id and state. Cheaper and more precise than a screenshot for tapping. |
| screenshotB | A picture of the screen, for layout, images and anything not in screen_elements. |
| current_appC | Package and activity in the foreground. |
| tapB | Touch the screen at a point, in pixels. |
| tap_elementB | Touch the element whose text, description or id matches the query. |
| swipeA | Scroll by swiping: 'up' shows what is below, 'down' what is above, 'left' and 'right' move between pages. distance is a fraction of the screen. |
| type_textA | Type into the focused field (tap it first). ASCII only: adb's input cannot type accents or emoji on stock Android. |
| press_keyB | Press back, home, recents, enter, delete, tab, volume_up, volume_down, power, menu or search. |
| list_appsC | Installed packages, optionally only those containing |
| launch_appB | Open an app by its package name (see list_apps). |
| install_apkB | Install or update an APK from this computer (keeps the app's data). |
| logcatA | Recent system log, optionally only one app's lines and only errors: the place to look when an app crashes. |
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 13 tools
Each tool maps to a distinct action or resource: element-targeted tap vs coordinate tap, swipe vs press_key vs type_text are clearly separated, and observation tools (screenshot, screen_elements, current_app, logcat, devices) each return different data. Descriptions reinforce the boundaries (e.g. screen_elements is explicitly framed as a cheaper alternative to screenshot for tapping).
Action tools follow a consistent verb_noun pattern (tap_element, type_text, press_key, list_apps, launch_app, install_apk), while read-only/inspection tools use bare nouns (devices, screenshot, logcat, current_app, screen_elements) and two are bare verbs (tap, swipe). The split is readable and roughly correlated with purpose, but it is not a single uniform convention.
13 tools is well within the ideal range and each earns its place: input, navigation, app lifecycle, device discovery, and diagnostics are all represented without redundancy.
Covers the core device-control lifecycle (inspect screen, tap/type/swipe/key, launch/install/list apps, logs, screenshot, device list). Minor gaps remain: no long-press or drag gesture, no way to clear an input field, and no keyevent beyond the enumerated set, but agents can work around most of these.