Skip to main content

An MCP server for android automation

Project description

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

https://github.com/user-attachments/assets/c45bbc17-f698-43e7-85b4-f1b39b8326a8

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mseep_android_mcp-0.1.1.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mseep_android_mcp-0.1.1-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file mseep_android_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: mseep_android_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for mseep_android_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 dd6c3dddb8600c60e4175878c59daa53045bd7057943baf116eae18b5b69ab58
MD5 2576f5b54b2fdc9d6c004846ed7de323
BLAKE2b-256 46fc4846b1535861902c353c66f0a08cf27002eb9daba1de09ddff04fa29b1f9

See more details on using hashes here.

File details

Details for the file mseep_android_mcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mseep_android_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 69fb959d3fdd7921042aefff518fb1cbf98dbd7ce048a7499e0c9d729cc8a856
MD5 0e7f987c0f71813e9ccd704a1a46b1fe
BLAKE2b-256 544193b2dd98602df5303d14828c5c70a3af677fc05dcdb85f98d17375d205ec

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page