android-mcp-server

MCP.Pizza Chef: minhalvp

The android-mcp-server is an MCP server that provides programmatic control over Android devices using the Android Debug Bridge (ADB). It exposes device management features such as executing ADB commands, capturing screenshots, analyzing UI layouts, and managing installed packages. This server integrates with MCP clients to enable real-time interaction and automation of Android devices for development, testing, and device management workflows.

Use This MCP server To

Execute ADB commands remotely on Android devices Capture and retrieve screenshots from Android devices Analyze Android device UI layouts for automation Manage installed packages on Android devices Integrate Android device control into MCP client workflows Automate Android device testing and debugging Monitor device state and perform maintenance tasks

README

Android MCP Server

An MCP (Model Context Protocol) server that provides programmatic control over Android devices through ADB (Android Debug Bridge). This server exposes various Android device management capabilities that can be accessed by MCP clients like Claude desktop and Code editors (e.g. Cursor)

Features

  • 🔧 ADB Command Execution
  • 📸 Device Screenshot Capture
  • 🎯 UI Layout Analysis
  • 📱 Device Package Management

Prerequisites

  • Python 3.x
  • ADB (Android Debug Bridge) installed and configured
  • Android device or emulator (not tested)

Installation

  1. Clone the repository:
git clone https://github.com/minhalvp/android-mcp-server.git
cd android-mcp-server
  1. Install dependencies: This project uses uv for project management via various methods of installation.
uv python install 3.11
uv sync

Configuration

The server uses a simple YAML configuration file (config.yaml) to specify the target android device

Customizing Configuration

  1. Create a new configuration file:
touch config.yaml
  1. Configure your device:
device:
  name: "google-pixel-7-pro:5555" # Your device identifier from 'adb devices'

Usage

An MCP client is needed to use this server. The Claude Desktop app is an example of an MCP client. To use this server with Claude Desktop:

  1. Locate your Claude Desktop configuration file:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  2. Add the Android MCP server configuration to the mcpServers section:

{
  "mcpServers": {
    "android": {
      "command": "path/to/uv",
      "args": ["--directory", "path/to/android-mcp-server", "run", "server.py"]
    }
  }
}

Replace:

  • path/to/uv with the actual path to your uv executable
  • path/to/android-mcp-server with the absolute path to where you cloned this repository
output.mov

Available Tools

The server exposes the following tools:

def get_packages() -> str:
    """
    Get all installed packages on the device.
    Returns:
        str: A list of all installed packages on the device as a string
    """
def execute_adb_command(command: str) -> str:
    """
    Executes an ADB command and returns the output.
    Args:
        command (str): The ADB command to execute
    Returns:
        str: The output of the ADB command
    """
def get_uilayout() -> str:
    """
    Retrieves information about clickable elements in the current UI.
    Returns a formatted string containing details about each clickable element,
    including their text, content description, bounds, and center coordinates.

    Returns:
        str: A formatted list of clickable elements with their properties
    """
def get_screenshot() -> Image:
    """
    Takes a screenshot of the device and returns it.
    Returns:
        Image: the screenshot
    """
def get_package_action_intents(package_name: str) -> list[str]:
    """
    Get all non-data actions from Activity Resolver Table for a package
    Args:
        package_name (str): The name of the package to get actions for
    Returns:
        list[str]: A list of all non-data actions from the Activity Resolver
        Table for the package
    """

Contributing

Contributions are welcome!

Acknowledgments

android-mcp-server FAQ

What prerequisites are needed to run the android-mcp-server?
You need Python 3.x, ADB installed and configured, and an Android device or emulator.
How does the android-mcp-server interact with Android devices?
It uses the Android Debug Bridge (ADB) to execute commands and manage devices programmatically.
Can the android-mcp-server capture screenshots from Android devices?
Yes, it supports device screenshot capture as one of its core features.
Is the android-mcp-server compatible with Android emulators?
It is designed for Android devices and has not been explicitly tested on emulators.
How do MCP clients use the android-mcp-server?
MCP clients connect to the server to send commands and receive device data for automation and control.
What types of device management can be performed?
You can execute ADB commands, analyze UI layouts, manage packages, and capture screenshots.
What programming language is the android-mcp-server implemented in?
It is implemented in Python 3.x.
How do I install the android-mcp-server?
Clone the GitHub repo, then install dependencies using the uv project management tool.