Android Puppeteer Mcp

io.github.pedro-rivasPublished by GitHub account pedro-rivasv1.0.1Updated Oct 24, 2026

MCP server for Android automation with UI interaction, screenshots, and device control

VerifiedSTDIODesktop onlyBrowser AutomationDeveloper Tools

Overview

AI-generated overview

A local MCP server that lets an AI assistant inspect and control Android devices and emulators: annotated screenshots, taps, swipes, text input and screen video

What you can do
List connected Android devices and emulators and get their screen dimensions and interactive UI elements with details and numbered overlays on screenshots. Tap, long press, swipe, scroll and drag at coordinates, press the hardware back button, and type text into focused fields. Start and stop screen recording to local files for documentation or test runs. Target a specific device by ID when several are connected.
When to use it
Useful when an assistant should drive a real Android phone or emulator for UI testing, app walkthroughs, or scripted interactions, and when annotated screenshots or recorded video of the session are wanted.
Requirements
Runs locally as a Python package (Python 3.10+) with uiautomator2, ADB and an Android 10+ device or emulator with USB debugging enabled; scrcpy is needed for video recording. Host can be Windows, macOS or Linux. No API keys or environment variables are declared.
Before you install
The assistant can tap, type, swipe and navigate on the connected device, so it can change app state or submit data; screenshots and videos are written to local folders. USB debugging grants broad device control, and some features need network connectivity for device communication.

Installation

In SourceWeft

  1. Open Android Puppeteer Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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.

🎥 Watch the demo in action

Features

  • 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.

Supported Operating Systems

  • Android 10+
  • Windows, macOS, Linux (host systems)

Installation

Prerequisites

  • Python 3.10+
  • uiautomator2
  • Android 10+ (Emulator or Physical Device)
  • ADB (Android Debug Bridge)
  • scrcpy (for video recording features)

Getting Started

  1. Clone the repository
shell
git clone https://github.com/pedro-rivas/android-puppeteer-mcp.gitcd android-puppeteer
  1. Install dependencies
shell
uv python install 3.10uv sync
  1. Setup Android device
shell
# Enable USB debugging on your Android device# For emulator, ensure it's runningadb devices  # Verify device connection
  1. Connect to the MCP server

  2. Locate your Claude Desktop configuration file:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  3. Add the following JSON to your Claude Desktop config:

    json
    {  "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 executable
    • path/to/android-puppeteer with the absolute path to where you have cloned this repo
  4. Restart Claude Desktop

Restart your Claude Desktop. You should see "android-puppeteer" listed as an available integration.


Available Tools

Android Puppeteer provides the following tools for comprehensive Android device interaction:

Device Management

  • list_emulators: List all available Android emulators and devices with their status and dimensions
  • get_device_dimensions: Get the screen dimensions of a specific Android device
  • get_ui_elements_info: Get detailed information about all interactive UI elements on screen

Visual Interaction

  • take_screenshot: Capture annotated screenshots with numbered UI element overlays
  • press: Tap on specific coordinates with optional long press duration
  • long_press: Perform long press gestures on specific coordinates

Navigation & Input

  • press_back: Press the hardware back button
  • swipe: Perform directional or custom coordinate swipes
  • type_text: Type text into focused input fields with optional text clearing
  • scroll_element: Scroll specific UI elements in any direction

Recording & Documentation

  • record_video: Start screen recording with customizable quality settings
  • stop_video: Stop active screen recordings and save to local storage

Usage Examples

Basic Device Interaction

python
# Take an annotated screenshotscreenshot = await take_screenshot()
# Tap on a specific element (element 5 from screenshot)await press(x=500, y=300)
# Type text into an input fieldawait type_text("Hello, Android!")
# Swipe to scroll downawait swipe(direction="down")

Multi-Device Automation

python
# List available devicesdevices = await list_emulators()
# Target specific deviceawait take_screenshot(device_id="emulator-5554")await press(x=200, y=400, device_id="emulator-5554")

Video Recording Workflow

python
# Start recordingawait record_video(filename="test_session.mp4")
# Perform automation stepsawait press(x=300, y=500)await type_text("Automated test input")
# Stop recordingawait stop_video()

Project Structure

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

Important Notes

  • Device Permissions: Ensure USB debugging is enabled on target Android devices
  • Network Access: Some features require network connectivity for device communication
  • Storage: Screenshot and video files are saved locally in ss/ and videos/ directories
  • Performance: Response times depend on device performance and network latency

Troubleshooting

Common Issues

  1. Device not found: Verify ADB connection with adb devices
  2. Permission denied: Check USB debugging and device authorization
  3. Screenshot failures: Ensure device screen is unlocked and accessible
  4. Video recording issues: Verify scrcpy installation and device compatibility

Debug Mode

Run the server directly for debugging:

shell
uv run puppeteer.py

License

This project is licensed under the MIT License. See LICENSE for details.

Contributing

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.

Development Setup

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests and ensure code quality
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Related Projects


Star this repo if you find it useful!

Source: README.md at commit 94bf75f

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.1LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.