mcp-android
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANDROID_MODE | No | Access mode determining what the server can do (e.g. read-only, read-write, admin). | read-only |
| ANDROID_DRY_RUN | No | Preview operations without touching the device. Default is false. | false |
| ANDROID_AUDIT_LOG | No | Enable audit logging to stderr. Default is true. | true |
| ANDROID_ALLOW_SHELL | No | Allow raw `adb shell` usage (run_shell is not registered otherwise). Default is false. | false |
| ANDROID_ALLOW_INSTALL | No | Allow install/uninstall/clear operations. Default is false. | false |
| ANDROID_PACKAGE_ALLOWLIST | No | Which packages are in scope. Defaults to all packages. | * |
| ANDROID_PROTECTED_PACKAGES | No | Protected packages that are never uninstalled or cleared. Defaults to settings, systemui, gms. | settings, systemui, gms |
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_devicesB | List connected adb devices and their state. |
| device_infoC | Model, manufacturer, Android version, and screen size. |
| screenshotA | Capture the current screen as a PNG image so you can see what's on the phone before acting. |
| ui_dumpA | Dump the current screen's UI hierarchy (uiautomator XML) with element text and bounds — use it to find exact tap coordinates. |
| current_appB | The package/activity currently in the foreground. |
| list_appsA | List installed packages. Third-party only by default. |
| get_notificationsA | Read current notifications (package + title/text), best-effort. Useful for clearing the pile-up. |
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 7 tools
Each tool targets a distinct inspection target (device list, device specs, screenshot, UI hierarchy, foreground app, installed packages, notifications). The only mild overlaps are list_devices vs device_info and screenshot vs ui_dump, but the descriptions explicitly differentiate them (visual preview vs. exact tap coordinates).
All names are snake_case, but verb style is mixed: some use verb_noun (list_devices, list_apps, get_notifications) while others are bare nouns (screenshot, ui_dump, device_info, current_app). Still readable, but no single predictable pattern.
Seven tools is a well-scoped size for a device inspection server, and each one covers a distinct piece of information. Slightly thin for a full Android control server, but no tool feels redundant.
The surface is entirely read-only: there is no tap, swipe, text input, app launch/install, or file push. This is especially glaring because screenshot and ui_dump descriptions explicitly frame themselves as preparation for acting ('before acting', 'find exact tap coordinates'), yet no action tool exists — a dead end for the primary workflow.