ADB MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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_devicesA | List all connected Android devices and emulators, including their serial numbers, connection status, and details (product, model, device, transport). |
| connect_deviceA | Connect to an Android device over TCP/IP (Wi-Fi) using its IP address and optional port. |
| disconnect_deviceA | Disconnect from a previously connected TCP/IP (Wi-Fi) device. |
| get_device_stateB | Get the current state of a connected device (e.g. offline, bootloader, device). |
| reboot_deviceA | Reboot the connected device into different modes: system, bootloader, recovery, or sideload. |
| root_deviceA | Restart the adbd daemon on the device with root permissions. Note: Only works on userdebug/eng builds or rooted devices. |
| unroot_deviceA | Restart the adbd daemon on the device without root permissions (restores non-root privileges). |
| forward_portB | Forward socket connections from a local host port to a port on the connected device. |
| reverse_portA | Reverse socket connections from a port on the device to a port on the local host (critical for React Native bundler reverse tcp:8081). |
| list_forwardsA | List all active port forwarding connections from host to device. |
| list_reversesA | List all active reverse port connections from device to host. |
| install_appB | Install an APK from the host machine onto the connected device. |
| uninstall_appB | Uninstall an application package from the connected device. |
| list_packagesA | List all installed application packages on the device, with options to filter by name or package type. |
| clear_app_dataA | Delete all data associated with a package (resets app to clean state, clears cache). |
| force_stop_appB | Force stop all processes associated with the application package. |
| start_app_activityA | Launch an app or a specific activity on the device. If activity is not provided, launches the default launcher activity. |
| grant_permissionB | Grant a runtime permission to an application package on the device. |
| revoke_permissionA | Revoke a runtime permission from an application package on the device. |
| push_fileA | Copy a file or directory from the host machine to the connected device. |
| pull_fileA | Copy a file or directory from the connected device to the host machine. |
| get_logcatA | Dump a snapshot of recent system logs (logcat) with custom line limits and filter criteria. |
| clear_logcatA | Clear (flush) all current logcat buffers. Useful to run before a test to discard old irrelevant logs. |
| take_screenshotA | Capture the device screen. If savePath is provided, saves to the host machine. Otherwise, returns the image directly to the client as a renderable PNG image. |
| record_screenA | Record the device screen as an MP4 video for a given duration and save it to the host computer. |
| get_dumpsysB | Retrieve system diagnostic details (dumpsys) for a service or package. |
| get_propertiesA | Retrieve system property values (getprop) from the Android device. |
| set_mock_locationA | Set a mock GPS location (latitude and longitude) on the device. For emulators, this works directly. For physical devices, you must configure a Mock Location App in Developer Options first. |
| get_app_usageC | Retrieve app usage and screen time statistics from the device using the usagestats or batterystats services. |
| dump_ui_hierarchyA | Dump the current layout tree (UI hierarchy XML) of the screen using uiautomator. Highly useful for AI agents to inspect what UI elements are currently visible. |
| get_app_memoryB | Dump detailed RAM memory statistics (meminfo) for an app package name. |
| get_cpu_usageA | Retrieve current CPU load statistics from the device shell using dumpsys cpuinfo. |
| get_dbinfoA | Retrieve SQLite database statistics and diagnostics for running apps using dumpsys dbinfo. Optionally filter by application package. |
| query_sqliteA | Execute a SQL query/command on a SQLite database within an app's sandboxed data directory. Note: Only works on debuggable apps or rooted devices/emulators. |
| list_shared_preferencesA | List all Shared SharedPreferences (preferences XML files) inside an application sandbox. Requires a debuggable app or root. |
| get_shared_preferencesA | Retrieve and read the XML contents of a specific Shared Preferences file inside an app's sandbox. Requires a debuggable app or root. |
| send_keyeventA | Send a keyevent (hardware/system key simulation) to the device (e.g. BACK=4, HOME=3, POWER=26, APP_SWITCH=187). |
| tap_screenB | Tap the screen at specific X and Y coordinates. |
| swipe_screenA | Swipe from starting coordinates to ending coordinates, with an optional duration parameter to simulate drag actions. |
| type_textA | Type text into the currently focused input field. Automatically formats space characters for compatibility with the adb shell. |
| execute_raw_adbB | Execute an arbitrary ADB command by passing raw command-line arguments. Safe from shell injection on the host machine because arguments are passed as an array. |
| execute_shell_commandB | Execute an arbitrary shell command directly on the connected Android device. Allows full access to Android shell utilities (e.g., 'input keyevent 26', 'settings get global airplane_mode_on'). |
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 42 tools
Most tools have distinct purposes, but `execute_raw_adb` and `execute_shell_command` both execute arbitrary commands (on host vs device) and could be confused. Also `get_shared_preferences` and `list_shared_preferences` are similar but clearly one lists and one reads. Overall, the tool set is well-differentiated.
Every tool uses a verb_noun pattern, e.g., `reboot_device`, `install_app`, `pull_file`, `take_screenshot`. Even multi-word tools like `force_stop_app` and `dump_ui_hierarchy` maintain verb-first naming. No mixed conventions or camelCase.
With 42 tools, the server far exceeds the 25-tool threshold, making it heavy. While ADB is a broad domain, many tools are narrow (e.g., `get_dbinfo`, `list_shared_preferences`, `get_shared_preferences`) and could be consolidated. The count feels excessive for a typical MCP server.
The tool surface covers device management, app lifecycle, file transfer, UI interaction, system diagnostics, and arbitrary execution. Minor gaps include backup/restore and some advanced device features, but the presence of `execute_shell_command` mitigates most missing functionality.