Built on uiautomator2, this server turns Claude into an Android automation agent. It connects to physical devices or emulators via ADB and exposes tools for tapping coordinates, swiping, typing text, and navigating UI. The standout feature is visual element detection: take_screenshot returns annotated images with numbered overlays on interactive elements, so you can reference "tap element 5" instead of hunting for coordinates. It also handles multi-device targeting, video recording through scrcpy, and UI hierarchy parsing. Reach for this when you need Claude to drive Android UI testing, demonstrate app workflows, or automate repetitive mobile interactions without writing test scripts.
mcp-name: io.github.pedro-rivas/android-puppeteer-mcp
Android Puppeteer is a lightweight, visual-first MCP (Model Context Protocol) server that enables AI agents to interact with Android devices through intelligent UI element detection and automated interactions. Built on uiautomator2, it provides comprehensive Android automation capabilities including visual element detection, touch interactions, text input, and video recording.
Visual Element Detection Automatically detects and annotates interactive UI elements with numbered overlays for precise targeting.
Comprehensive Touch Interactions Support for tap, long press, swipe, scroll, and drag gestures with coordinate-based precision.
Multi-Device Support Connect to multiple Android devices or emulators simultaneously with device-specific targeting.
Video Recording Integration Built-in screen recording capabilities using scrcpy for documentation and testing workflows.
Real-Time UI Analysis Live UI hierarchy parsing and element information extraction for dynamic interaction strategies.
MCP Protocol Integration Seamless integration with Claude Desktop and other MCP-compatible AI platforms.
git clone https://github.com/pedro-rivas/android-puppeteer-mcp.git
cd android-puppeteer
uv python install 3.10
uv sync
# Enable USB debugging on your Android device
# For emulator, ensure it's running
adb devices # Verify device connection
Connect to the MCP server
Locate your Claude Desktop configuration file:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.jsonAdd the following JSON to your Claude Desktop config:
{
"mcpServers": {
"android-puppeteer": {
"command": "path/to/uv",
"args": [
"--directory",
"path/to/android-puppeteer",
"run",
"puppeteer.py"
]
}
}
}
Replace:
path/to/uv with the actual path to your uv executablepath/to/android-puppeteer with the absolute path to where you have cloned this repoRestart Claude Desktop
Restart your Claude Desktop. You should see "android-puppeteer" listed as an available integration.
Android Puppeteer provides the following tools for comprehensive Android device interaction:
list_emulators: List all available Android emulators and devices with their status and dimensionsget_device_dimensions: Get the screen dimensions of a specific Android deviceget_ui_elements_info: Get detailed information about all interactive UI elements on screentake_screenshot: Capture annotated screenshots with numbered UI element overlayspress: Tap on specific coordinates with optional long press durationlong_press: Perform long press gestures on specific coordinatespress_back: Press the hardware back buttonswipe: Perform directional or custom coordinate swipestype_text: Type text into focused input fields with optional text clearingscroll_element: Scroll specific UI elements in any directionrecord_video: Start screen recording with customizable quality settingsstop_video: Stop active screen recordings and save to local storage# Take an annotated screenshot
screenshot = await take_screenshot()
# Tap on a specific element (element 5 from screenshot)
await press(x=500, y=300)
# Type text into an input field
await type_text("Hello, Android!")
# Swipe to scroll down
await swipe(direction="down")
# List available devices
devices = await list_emulators()
# Target specific device
await take_screenshot(device_id="emulator-5554")
await press(x=200, y=400, device_id="emulator-5554")
# Start recording
await record_video(filename="test_session.mp4")
# Perform automation steps
await press(x=300, y=500)
await type_text("Automated test input")
# Stop recording
await stop_video()
android-puppeteer/
puppeteer.py # Main MCP server implementation
main.py # Entry point
pyproject.toml # Project configuration
ss/ # Screenshots directory
videos/ # Video recordings directory
README.md # This file
ss/ and videos/ directoriesadb devicesRun the server directly for debugging:
uv run puppeteer.py
This project is licensed under the MIT License. See LICENSE for details.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Star this repo if you find it useful!
therealtimex/browser-use
jae-jae/fetcher-mcp
merajmehrabi/puppeteer-mcp-server
com.thenextgennexus/playwright-mcp-server
saik0s/mcp-browser-use