Observed since 21 Oct, 09:04 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Control any Android phone from Claude, Cursor, or any MCP client — via ADB
Control any Android phone from Claude Code, Cursor, or any MCP client — just ADB, no app required.

Claude Code ──(MCP stdio)──► agi-android-mcp ──(ADB)──► Android Phone
A lightweight Python MCP server that translates tool calls into adb commands. Works with any Android phone that has USB debugging enabled. No proprietary dependencies.
pip install agi-android-mcp
Enable USB debugging (Settings > Developer options > USB debugging), connect via USB, and verify:
adb devices
# emulator-5554 device
Add to ~/.claude/claude_code_config.json:
{
"mcpServers": {
"android": {
"command": "agi-android-mcp"
}
}
}
Restart Claude Code. That's it. Tell Claude:
"Take a screenshot of my phone"
"Open Chrome and search for the weather"
"Launch Settings and turn on dark mode"
Claude will take screenshots, reason about the UI, and tap/type/swipe to accomplish the task.
Add to .cursor/mcp.json:
{
"mcpServers": {
"android": {
"command": "agi-android-mcp"
}
}
}
The server uses stdio transport. Run agi-android-mcp as the command — it speaks MCP over stdin/stdout.
| Tool | Description |
|---|---|
screenshot | Take a screenshot, returned as PNG image |
get_screen_size | Get screen dimensions in pixels |
tap(x, y) | Tap at pixel coordinates |
double_tap(x, y) | Double-tap at pixel coordinates |
long_press(x, y) | Long-press at pixel coordinates |
type_text(text) | Type text into focused input field |
press_key(key) | Press a key (enter, backspace, tab, space, home, back) |
swipe(direction) | Swipe up/down/left/right from screen center |
drag(start, end) | Drag between two points |
press_home() | Press the Home button |
press_back() | Press the Back button |
open_notifications() | Open the notification shade |
open_quick_settings() | Open quick settings panel |
launch_app(package) | Launch an app by package name |
get_current_app() | Get the currently visible app/activity |
list_installed_apps() | List installed packages |
shell(command) | Run any ADB shell command |
get_device_info() | Get device model, Android version, screen size, battery |
| Variable | Default | Description |
|---|---|---|
ADB_PATH | Auto-detected | Path to adb binary |
ADB_SERIAL | (none) | Target a specific device by serial number |
Multiple devices? Set ADB_SERIAL:
{
"mcpServers": {
"android": {
"command": "agi-android-mcp",
"env": {
"ADB_SERIAL": "XXXXXXXXXXXXXX"
}
}
}
}
demo.py runs a full autonomous loop: screenshot → Claude reasons → execute action → repeat.
pip install anthropic
ANTHROPIC_API_KEY=sk-... python demo.py "Open Chrome and search for cats"
adb subprocess calladb exec-out screencap -padb shell input tap/swipe/text/keyeventadb shell am, adb shell pmpip install -e .
python -c "from agi_android_mcp.server import mcp; print(len(mcp._tool_manager._tools), 'tools')"
MIT
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.0.1 | 16 Feb 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 09:04 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:636b597b3ef3dc25955834b24cdca4ace7d7397679c2fd8e4b1e7099735c9ae3