mcp_healthLABSCO SUMMARY
Elements are addressed by text and resource id, not pixel coordinates.
That is what makes an automation survive a layout change — clicking by resource id and waiting for an element to appear beats replaying tap positions from a recording. Pair dump_hierarchy with the toast capture when a step silently fails: the XML tells you what the screen actually contains, and the toast usually tells you why the app refused.
What it is
A Python MCP server that automates Android devices through uiautomator2 over ADB. Tools are grouped by job — device, apps, screen, input, inspection and a few advanced ones — and it runs either as a stdio server for AI clients or as an HTTP API.
What you get
- Device:
connect_device,get_device_info,get_device_status,check_adb_and_list_devices - Apps:
get_installed_apps,get_current_app,start_app,stop_app,stop_all_apps,clear_app_data - Screen:
screen_on,screen_off,unlock_screen,wait_for_screen_on - Input:
clickandlong_clickby text, resource id or description, plussend_text,swipe,dragandpress_key - Inspection:
get_element_info,wait_for_element,scroll_to,screenshot, anddump_hierarchyfor the whole screen as XML - Advanced:
get_toastto capture the last toast message, andwait_activityto block until a named activity appears
Requirements
Python 3.13 or higher, Android Debug Bridge on your PATH, and a connected device with USB debugging enabled and uiautomator2 support. Install dependencies with uv. The server ships configured for HTTP on port 8080; for AI clients you switch the entry point to stdio transport before wiring it into Claude Desktop or VS Code.
Setup effort
Build from source — git clone https://github.com/nim444/mcp-android.git
USE CASES
Reproducing a bug report on a real handset
Start the app, walk the steps by tapping labelled elements, and screenshot the state where it goes wrong.
Working out why a tap did nothing
Dump the UI hierarchy to see what is actually on screen, and read the last toast message the app showed.
Filling in a form reliably
Wait for the field to exist, type into it, and scroll the next one into view rather than guessing at offsets.
Starting a test run from a known state
Clear the app's data, wake and unlock the screen, then launch it fresh.
28 tools
Listed in project docs. Your client may show a different list.
get_device_statusconnect_deviceget_device_infocheck_adb_and_list_devicesget_installed_appsget_current_appstart_appstop_appstop_all_appsclear_app_datascreen_onscreen_offunlock_screenwait_for_screen_onpress_keyclicklong_clicksend_textswipedragget_element_infowait_for_elementscroll_toscreenshotdump_hierarchyget_toastwait_activityBEFORE YOU INSTALL
What to know first
Tools you get
28 tools named in the project's documentation.
Requires
Python 3.13
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
1. Clone the repo
git clone https://github.com/nim444/mcp-android.git
cd mcp-android2. Create and activate virtual environment
uv venv
source .venv/bin/activate3. Install dependencies
uv pip installMCP Clients
Claude Desktop
{
"mcpServers": {
"mcp-android": {
"type": "stdio",
"command": "bash",
"args": [
"-c",
"cd <YOUR_PATH_TO_MCP_ADB> && source .venv/bin/activate && uv run python server.py"
]
}
}
}VS Code
{
"servers": {
"mcp-android": {
"type": "stdio",
"command": "bash",
"args": [
"-c",
"cd <YOUR_PATH_TO_MCP_ADB> && source .venv/bin/activate && uv run python server.py"
]
}
}
}