Android-MCP MCP Server
Open-source MCP server that lets AI agents control Android devices over ADB and the Accessibility API for UI automation, gestures, and QA testing.
Android-MCP is a lightweight, open-source bridge that enables AI agents and LLMs to interact with Android devices. It runs as a Model Context Protocol server and exposes tools for app navigation, UI interaction, gestures, key events, and shell command execution. The server communicates with the device through ADB (Android Debug Bridge) and Android's Accessibility API, so it can drive real apps without relying on computer vision models or OCR pipelines.
The server supports both USB and WiFi ADB connections, lets you target a specific device by serial, and offers tools for state inspection (combined snapshot of active apps and interactive UI elements), tapping, long-pressing, swiping, dragging, text input, hardware key presses, notification access, and arbitrary shell commands. It is designed to work with any LLM or VLM, with typical action-to-action latency in the 2 to 4 second range.
The project is maintained by Jeomon George and Muhammad Yaseen under the CursorTouch organization, written in Python, and released under the MIT license. It targets Android 10 and later, and is most commonly used from Claude Desktop or similar MCP clients for mobile automation and automated QA workflows.
Tools
| Tool | Description |
|---|---|
State-Tool |
Provides a combined snapshot of the currently active applications and the interactive UI elements on screen. |
Click-Tool |
Taps the screen at the specified coordinates. |
Long-Click-Tool |
Performs an extended press at the given coordinates. |
Type-Tool |
Inputs text into the focused field, with optional clearing of existing text first. |
Swipe-Tool |
Performs a swipe gesture from one location to another. |
Drag-Tool |
Drags an element or pointer between two points on the screen. |
Press-Tool |
Activates a hardware key such as Back, Home, or Volume Up. |
Wait-Tool |
Pauses execution for a defined duration. |
Notification-Tool |
Accesses the device notifications. |
Shell-Tool |
Executes an Android shell command via ADB. |
Prerequisites
- Python 3.13
- ADB (Android Debug Bridge) installed and on PATH
- Android 10+ device or emulator with USB debugging enabled
Option 1: UVX (recommended)
Add to your Claude Desktop config:
{
"mcpServers": {
"android-mcp": {
"command": "uvx",
"args": ["--python", "3.13", "android-mcp"]
}
}
}
Option 2: UV (local development)
git clone https://github.com/CursorTouch/Android-MCP.git
cd Android-MCP
uv sync
Then configure Claude Desktop:
{
"mcpServers": {
"android-mcp": {
"command": "uv",
"args": ["--directory", "</PATH/TO/Android-MCP>", "run", "android-mcp"]
}
}
}
WiFi device configuration
{
"mcpServers": {
"android-mcp": {
"command": "uvx",
"args": ["--python", "3.13", "android-mcp"],
"env": {
"ANDROID_MCP_CONNECTION": "wifi",
"ANDROID_MCP_HOST": "192.168.1.3"
}
}
}
}
Device selection flags
--device SERIALtarget a specific USB serial--wifi HOSTconnect to a WiFi ADB host--usbauto-detect the first USB device--connection usb|wifiprefer a connection type
Environment variables
ANDROID_MCP_DEVICEtarget device serialANDROID_MCP_CONNECTIONusborwifiANDROID_MCP_HOSTWiFi ADB hostSCREENSHOT_QUANTIZEDset totrueto reduce input tokens via screenshot quantization
- Drive end-to-end QA test flows on a real Android device or emulator from an LLM, including login, navigation, and form filling.
- Automate repetitive mobile tasks like sending messages, posting to social apps, or filling app forms by combining State-Tool, Click-Tool, and Type-Tool.
- Inspect a running app's UI hierarchy and current foreground activity to debug layout or accessibility issues from an AI assistant.
- Trigger ADB shell commands for diagnostics, log capture, or package management without leaving the chat interface.
- Build agentic mobile workflows that read notifications and react to them with gestures and hardware key presses.
- "Open the Settings app, navigate to Wi-Fi, and tell me which network is currently connected."
- "Launch Gmail, open the most recent email from my manager, and summarize it."
- "Run an ADB shell command to list all installed packages and find anything related to Spotify."
- "Swipe down to open the notification shade and read me the latest three notifications."
- "Type 'hello from Claude' into the focused text field, then press the Back key."
- Covers a full set of mobile automation primitives: state inspection, taps, long presses, swipes, drags, typing, hardware keys, notifications, and shell access.
- Works with any LLM or VLM, no fine-tuned vision model or OCR pipeline required.
- Supports both USB and WiFi ADB connections with flexible device selection via CLI flags or env vars.
- MIT licensed and actively maintained under the CursorTouch org.
- Requires Python 3.13 and a working ADB setup, which is more friction than a pure remote MCP server.
- Action-to-action latency is typically 2 to 4 seconds, so it is not suited for high frequency UI automation.
- Limited to Android 10 and later, no iOS support.
- minhalvp/android-mcp-server: another ADB based MCP server for Android device control.
- oddlyspaced/ultimate-android-mcp: feature-rich MCP server for automating connected Android devices and emulators.
- ulcica/android-mcp: MCP server focused on inspection and interaction tools for Android devices and emulators.