๐ฆ
Android MCP
MCP server: Android MCP
0 installs
8 stars
1 forks
Trust: 41 โ Fair
Devtools
Installation
npx android-mcpAsk AI about Android MCP
Powered by Claude ยท Grounded in docs
I know everything about Android MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Loading tools...
Reviews
Documentation
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
- Node.js 18+ and npm.
- ADB on PATH (e.g., Android SDK platform-tools). Keep
adb start-serverrunning. - At least one device or emulator attached (
adb devices). - Optional: Android SDK/Gradle only if you plan to build the demo app; not needed for the MCP server itself.
๐ Setup (local)
git clone <repo-url> android-mcp
cd android-mcp
npm ci # or npm install
npm test # stdio + tsconfig smoke tests
npm run dev # start MCP server with tsx
# or explicitly:
npx --yes tsx src/server.ts
To build output: npm run build (emits dist/). Keep adb devices happy before invoking tools.
๐งฐ MCP config (Cursor/Claude)
Example ~/.cursor/mcp.json entry:
{
"mcpServers": {
"android-mcp": {
"type": "stdio",
"command": "npx",
"args": ["--yes", "tsx", "/home/ivan/code/android-mcp/src/server.ts"],
"cwd": "/home/ivan/code/android-mcp"
}
}
}
๐ฎ 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.
๐งช Tests
npm test
๐ฑ Optional: Build/install the demo app
Only needed if you want to exercise the sample Android UI:
# from the parent monorepo that contains the Android app
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
adb shell am start -n org.dronix.android.kindlegratis/.MainActivity
๐ ๏ธ CI hints
- Node workflow: checkout โ setup-node 18+ โ
npm ciโnpm test. - If building the Android app in CI, add Java 17 + Android SDK setup and run
./gradlew assembleDebug.
