mcp-android
Controls an Android phone over ADB, providing tools to take screenshots, inspect the UI hierarchy, tap, swipe, type text, press keys, launch apps, open URLs, set alarms/timers, and read notifications. Admin capabilities include installing APKs, uninstalling apps, clearing app data, and running shell commands, subject to access controls.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-androidset an alarm for 6:30am labeled Gym"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-android
A Model Context Protocol server to control an Android phone over ADB — the phone equivalent of the Mac-control servers. Claude can see the screen (screenshots + UI hierarchy) and tap, type, press keys, launch apps, set alarms/timers, and read notifications. Safe-by-default, with the suite's access-mode + flag model.
Runs on your computer and drives a phone connected by USB or wireless debugging (great for the Z Fold 7). It is not installed on the phone and does not need root.
iOS? A stock iPhone can't be controlled this way — Apple's sandbox forbids cross-app/system automation. See the separate mcp-ios repo for the realistic (Appium/WebDriverAgent over USB from a Mac) approach.
Quickstart
brew install android-platform-tools # provides adb
# On the phone: Settings → Developer options → enable USB (or Wireless) debugging, then authorize this computer
adb devices # confirm your device shows "device"Run it straight from npm — no clone or build needed:
npx -y @dockndevai/mcp-androidOr add it to Claude Code in one line (start read-only):
claude mcp add android -e ANDROID_MODE="read-only" -- npx -y @dockndevai/mcp-androidSee docs/CLIENTS.md for Claude Desktop, Cursor, Codex, Windsurf, and VS Code configs.
Related MCP server: Termux MCP Server
Setup from source
brew install android-platform-tools # provides adb
adb devices # confirm your device shows "device"
npm install && npm run buildTools
Read (read-only+): list_devices, device_info, screenshot, ui_dump, current_app, list_apps, get_notifications
Write (read-write+): tap, swipe, input_text, press_key, launch_app, open_url, set_alarm, set_timer
Admin (admin): install_apk, uninstall_app, clear_app_data (need ANDROID_ALLOW_INSTALL), run_shell (needs ANDROID_ALLOW_SHELL; not registered otherwise)
The typical loop for driving the UI: screenshot → ui_dump (find bounds) → tap/input_text.
Security model
Concern | Flag | Default |
What it can do |
|
|
Which packages in scope |
| (all) |
Protected packages (never uninstall/clear) |
| settings, systemui, gms |
Allow install/uninstall/clear |
|
|
Allow raw |
|
|
Interactive confirmation (destructive ops) | MCP elicitation (client-driven) | (on when the client supports it) |
Preview without touching device |
|
|
Audit log (stderr) |
|
|
When the connected client supports MCP elicitation, destructive tools (uninstall_app, clear_app_data, install_apk, run_shell) pause and ask the human to approve the exact action before it runs — the model can't approve on your behalf. When the client can't elicit, the access-mode + flag gates above are the control.
Run with Claude Desktop / Claude Code
{
"mcpServers": {
"android": {
"command": "node",
"args": ["/absolute/path/to/mcp-android/dist/index.js"],
"env": { "ANDROID_MODE": "read-write" }
}
}
}Example prompts
"Take a screenshot of my phone and tell me what's on screen."
"Set an alarm for 6:30am labeled Gym."
"Open the Clock app and start a 10-minute timer."
"What notifications do I have piling up?"
Develop
npm run dev
npm test # security policy
npm run typecheckLicense
MIT
Related MCP Connectors
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
Cloud Android phones for AI agents: create a phone, read the screen, tap, type, install APKs, park.
A real Android phone in the cloud for MCP agents: observe the screen, act, reset to a saved state.
Melaya is a remote MCP server. It gives an assistant hands on your own Android phone and browser: it reads the screen through the accessibility tree, then taps, types and navigates inside the apps and sites you allow-list, with no per-app API. It also builds, schedules and runs agent pipelines across 6k+ connected tools. OAuth 2.1, nothing to install.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables text-based control of Android devices through Claude Code using accessibility tree automation. Supports UI interaction, app launching, text input, gestures, and navigation without requiring screenshots.MIT
- FlicenseAqualityFmaintenanceEnables remote control of Android phones via Claude Desktop, offering 45+ tools including UI automation for app interactions.5715-
- FlicenseBqualityCmaintenanceEnables AI assistants to observe, reason about, and control connected Android devices via ADB, providing tools for screenshots, UI hierarchy parsing, semantic element clicking, gestures, text input, and app lifecycle management.13-
- AlicenseBqualityBmaintenanceEnables Claude to see and control a real Android phone via MCP, reading the accessibility tree to tap, type, navigate, launch apps, and diagnose connectivity over ADB or cellular.2381Apache 2.0