Provides tools for interacting with Android devices over ADB, including device selection, UI automation (tap, text input, key events), activity management, screenshots, UI tree dumps, and element finding/tapping capabilities.
Android MCP ๐คโจ
Friendly MCP stdio server that chats with Android devices over ADB using @devicefarmer/adbkit, speaking newline-delimited JSON-RPC via @modelcontextprotocol/sdk (no Content-Length headers needed). Plug it into Cursor/Claude MCP and start poking at devices.
โจ What is this?
MCP transport that forwards handy ADB actions (tap, text, screenshot, UI dump, etc).
Uses newline-delimited JSON on stdin/stdout; one request per line, one response per line.
Prototype-friendly: swap out the minimal JSON-RPC loop for a full MCP SDK later if you want.
๐ฆ Requirements
ADB server running on your host (
adb start-server).Node.js 18+.
At least one device or emulator attached (
adb devices).
๐ Quickstart
Keep adb devices happy, then fire JSON-RPC lines at stdin and watch stdout for replies.
๐งฐ MCP config (Cursor/Claude)
Example ~/.cursor/mcp.json entry:
๐ฎ Tools exposed
selectDevice{ serial }โ set default device for subsequent calls.keyEvent{ keyCode, serial? }โ sendinput keyevent.tap{ x, y, serial? }text{ text, serial? }โ usesinput text(spaces become%s).startActivity{ component, serial? }โ e.g."org.example/.MainActivity".screenshot{ serial? }โ{ mimeType: "image/png", base64 }.uiDump{ serial? }โ parseduiautomator dumptree (text, contentDesc, resourceId, bounds).findAndTap{ text?, contentDesc?, serial? }โ finds the first matching node and taps its center.listDevicesDetailedโ lists attached devices with model/manufacturer/sdk info.
๐ธ Notes & limits
Screenshot and UI dump are periodic snapshots (no streaming yet).
UI dump depends on
uiautomatorbeing present on the device.Prototype transport; you can wire in a richer MCP SDK without changing the ADB helpers.