adb-mcp
Android · Model Context Protocol

Drive Android emulators and devices with AI.

An MCP server that lets an agent boot an AVD, screenshot, read the UI hierarchy, tap/swipe/type, and manage app lifecycle over adb.

curl -fsSL https://raw.githubusercontent.com/iksnerd/adb-mcp/main/install.sh | sh
ReleaseCIGoMCP

Why

Why adb-mcp

No more stale coordinates
describe_ui returns each element's center in true device pixels, computed fresh — so a tap lands where you mean it to, no guessing off a downscaled screenshot.
Screenshots that actually work
Captured via exec-out screencap (no CRLF corruption) and auto-downscaled to fit the image reader — plus black-frame retry and a diagnosis (FLAG_SECURE vs. a sleeping display) when a capture really is black.
The runbook ships with the server
The driving workflow — observe→act loop, PIN/lock handling, crash triage — is baked in as MCP resources the agent can pull up mid-task, not tribal knowledge you have to re-explain every session.

Tools

0 tools across nine areas

Plus 4 guide resources the agent can pull up mid-task.

Emulator / device
Boot, list, wait-for-boot, shut down, Wi-Fi connect, port forwarding.
Observe
Screenshot (multi-display aware) and describe_ui with true-pixel centers and top-window awareness.
Interact
Tap, swipe, drag, type, key combos, PIN pads, run_sequence batching.
Lock / Keystore / Biometrics
Secure lock screen, fingerprint_touch, biometric enrollment checks.
Extended controls
SMS, phone calls, battery, cellular conditions, sensors, AVD snapshots.
App lifecycle
Install/launch/stop, app_state (Metro-vs-embedded bundle detection), permissions, deep links.
Logs & capture
One-shot/streaming logcat, filters, screen recording.
Environment & diagnostics
Dark mode, mock location, stay_awake, doctor.
Gradle build & test
Build, unit/instrumented tests, variant/module discovery, build_and_run.

Workflow

The core loop

screenshotsee
describe_uilocate
tap / swipe / typeact
screenshotconfirm

Click a step to hear it.

Read android://guide/driving (an MCP resource, not a URL — ask your agent to fetch it) for the full loop and the gotchas that waste turns.

Install

Getting started

curl -fsSL https://raw.githubusercontent.com/iksnerd/adb-mcp/main/install.sh | sh

Override the install location with BIN_DIR or pin a version with VERSION=v0.19.0. Already installed? Run adb-mcp update to fetch the latest release.

Register with your MCP client

claude mcp add adb -- adb-mcp

Confirm it's wired up — ask your agent to boot an emulator and take a screenshot.

Built on the official Go MCP SDK·Not affiliated with Google or Sentry