mcpField
M
mcp-android

mcp-android

Local
github.com/dockndevaiDeveloper Tools0Updated 2w ago

About mcp-android

mcp-android is an MCP server for controlling Android devices over ADB from a computer. It supports screen inspection and device actions, with read-only access by default and configurable safeguards for writes and admin operations.

Key features

  1. 01Screenshots and UI hierarchy
  2. 02Read notifications and app details
  3. 03Tap, swipe, type, and launch apps
  4. 04Set alarms and timers
  5. 05Access modes and audit logging

Use cases

  1. 01Inspect a phone screen with an AI agent
  2. 02Automate app navigation and text entry
  3. 03Review notifications or set a timer

MCP support

The MCP server exposes Android device inspection and control tools to MCP clients. Read-only access is the default; write and admin actions require configured permissions, and destructive actions can request human approval through MCP elicitation.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"dockndevai-mcp-android": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-android"
],
"env": {
"ANDROID_MODE": "<ANDROID_MODE>",
"ANDROID_ADB_PATH": "<ANDROID_ADB_PATH>",
"ANDROID_SERIAL": "<ANDROID_SERIAL>",
"ANDROID_TIMEOUT_MS": "<ANDROID_TIMEOUT_MS>",
"ANDROID_PACKAGE_ALLOWLIST": "<ANDROID_PACKAGE_ALLOWLIST>",
"ANDROID_PROTECTED_PACKAGES": "<ANDROID_PROTECTED_PACKAGES>",
"ANDROID_ALLOW_INSTALL": "<ANDROID_ALLOW_INSTALL>",
"ANDROID_ALLOW_SHELL": "<ANDROID_ALLOW_SHELL>",
"ANDROID_DRY_RUN": "<ANDROID_DRY_RUN>",
"ANDROID_AUDIT_LOG": "<ANDROID_AUDIT_LOG>"
}
}
}
}
Run commandnpx -y @dockndevai/mcp-android
Environment variables to set
ANDROID_MODEAccess mode: read-only | read-write | admin.
ANDROID_ADB_PATHPath to the adb binary (default: adb on PATH).
ANDROID_SERIALTarget device serial from `adb devices`. Empty = the only connected device.
ANDROID_TIMEOUT_MSPer-command adb timeout in milliseconds.
ANDROID_PACKAGE_ALLOWLISTComma-separated package allowlist for launch/uninstall/clear. Empty = all.
ANDROID_PROTECTED_PACKAGESPackages that can be launched/inspected but never uninstalled or data-cleared.
ANDROID_ALLOW_INSTALLEnable install_apk / uninstall_app / clear_app_data (requires admin mode too).
ANDROID_ALLOW_SHELLEnable run_shell (arbitrary adb shell; requires admin mode too).
ANDROID_DRY_RUNValidate + log write/admin actions without executing them on the device.
ANDROID_AUDIT_LOGEmit a JSON audit line to stderr per guarded operation (default true).

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@dockndevai/mcp-android0.1.0

Tools

7

Saved tool list · updated 2w ago

This tool takes no parameters.

Details

From the project README

mcp-android

CI License: MIT npm

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-android

Or add it to Claude Code in one line (start read-only):

claude mcp add android -e ANDROID_MODE="read-only" -- npx -y @dockndevai/mcp-android

See docs/CLIENTS.md for Claude Desktop, Cursor, Codex, Windsurf, and VS Code configs.

Setup from source

brew install android-platform-tools        # provides adb
adb devices                                 # confirm your device shows "device"
npm install && npm run build

Tools

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

ConcernFlagDefault
What it can doANDROID_MODEread-only
Which packages in scopeANDROID_PACKAGE_ALLOWLIST(all)
Protected packages (never uninstall/clear)ANDROID_PROTECTED_PACKAGESsettings, systemui, gms
Allow install/uninstall/clearANDROID_ALLOW_INSTALLfalse
Allow raw adb shellANDROID_ALLOW_SHELLfalse
Interactive confirmation (destructive ops)MCP elicitation (client-driven)(on when the client supports it)
Preview without touching deviceANDROID_DRY_RUNfalse
Audit log (stderr)ANDROID_AUDIT_LOGtrue

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 typecheck

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.