droidmcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADB_PATH | No | Path to a non-standard adb binary. | |
| DROIDMCP_BACKEND | No | Which transport to use. Valid values are 'adb' (default) and 'root'. | adb |
| DROIDMCP_ROOT_CMD | No | How to elevate for the root backend, for example 'su' (default), 'rish', or 'sudo'. | su |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List Android devices visible to adb, including emulators. |
| device_infoB | Model, Android version, screen size and the currently focused activity. |
| batteryC | Battery level, charging status and temperature. |
| storageC | Free/used storage for the /data partition. |
| list_packagesB | Installed package names. Set third_party_only=false to include system apps. |
| screen_dumpA | Read the current screen as structured JSON: every node with text, content description, resource id, tap coordinates and whether it is clickable or scrollable. Use this before tapping anything so you act on real element positions instead of guessing. |
| screenshotA | Capture the screen and save it to a local PNG path. Returns the path plus the pixel dimensions so coordinates can be scaled correctly. |
| tapB | Tap the screen at absolute pixel coordinates. |
| tap_textA | Find an element by its visible text, content description or resource id and tap its centre. This is the robust alternative to guessing coordinates. Runs a fresh screen dump unless the previous one is reused. |
| swipeC | Swipe/drag from (x1,y1) to (x2,y2). Increase duration_ms for slow drags. |
| scrollB | Scroll the dominant axis of the screen. Use direction 'down' to reveal content further down the page. Coordinates are derived from the real screen size, so this works on any resolution. |
| type_textA | Type into the currently focused text field. Tap the field first. Spaces and shell metacharacters are escaped automatically. |
| press_keyB | Press a hardware key: home, back, enter, menu, power, volume_up, volume_down, recent, wake, sleep, tab, delete, search, notifications. Raw KEYCODE_* names are also accepted. |
| launch_appB | Launch an app by package name, optionally specifying an activity. |
| force_stopC | Force-stop a running app by package name. |
| open_urlC | Open a URL in the device's default browser or matching app. |
| shellA | Escape hatch: run an arbitrary adb shell command and return stdout. Use for anything not covered by the dedicated tools (e.g. 'settings get secure enabled_accessibility_services'). |
| logcatC | Tail recent logcat lines. filter_spec uses adb syntax such as '*:E' for errors only. |
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 18 tools
Each tool has a distinct purpose: listing devices/info/battery/storage/packages, UI inspection via screen_dump vs screenshot, input actions tap/tap_text/swipe/scroll/type_text/press_key, and app lifecycle tools. shell and logcat are clearly positioned as an escape hatch and a specialized log tool, so there is no meaningful ambiguity.
All names use snake_case consistently, with no disruptive camelCase or mixed casing. However, the set mixes verb_noun patterns (list_devices, launch_app, force_stop) with bare nouns (battery, storage, screenshot, shell, logcat), so it is slightly less predictable than a pure verb_noun convention.
18 tools is slightly above the ideal 3-15 range, but each tool covers a distinct Android/adb capability needed for device inspection and UI automation. There is little redundancy, so the count is reasonable rather than bloated.
The surface covers device discovery, system state inspection, package listing, UI dumping, screenshots, input automation, app launch/stop, URL opening, and shell/logcat escape hatches. Dedicated install/uninstall, file transfer, and app-data operations are missing, but the shell tool provides a practical workaround for most gaps.