Track MCP LogoTrack MCP
Track MCP LogoTrack MCP

The world's largest repository of Model Context Protocol servers. Discover, explore, and submit MCP tools.

Product

  • Categories
  • Top MCP
  • New & Updated
  • Submit MCP

Company

  • About

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2026 TrackMCP. All rights reserved.

Built with ❤️ by Krishna Goyal

    Android Mcp Server

    An MCP server that provides control over Android devices via adb Python-based implementation. Trusted by 500+ developers.

    563 stars
    Python
    Updated Oct 19, 2025

    Table of Contents

    • Features
    • Prerequisites
    • Installation
    • Configuration
    • Device Selection Modes
    • Configuration File (Optional)
    • For Automatic Selection
    • For Manual Selection
    • Finding Your Device Serial
    • Usage Scenarios
    • Usage
    • Available Tools
    • Contributing
    • Acknowledgments

    Table of Contents

    • Features
    • Prerequisites
    • Installation
    • Configuration
    • Device Selection Modes
    • Configuration File (Optional)
    • For Automatic Selection
    • For Manual Selection
    • Finding Your Device Serial
    • Usage Scenarios
    • Usage
    • Available Tools
    • Contributing
    • Acknowledgments

    Documentation

    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:

    bash
    git clone https://github.com/minhalvp/android-mcp-server.git
    cd android-mcp-server

    2. Install dependencies:

    This project uses uv for project

    management via various methods of

    installation.

    bash
    uv python install 3.11
    uv sync

    Configuration

    The server supports flexible device configuration with multiple usage scenarios.

    Device Selection Modes

    1. Automatic Selection (Recommended for single device)

    • No configuration file needed
    • Automatically connects to the only connected device
    • Perfect for development with a single test device

    2. Manual Device Selection

    • Use when you have multiple devices connected
    • Specify exact device in configuration file

    Configuration File (Optional)

    The configuration file (config.yaml) is optional. If not present, the server will automatically select the device if only one is connected.

    For Automatic Selection

    Simply ensure only one device is connected and run the server - no configuration needed!

    For Manual Selection

    1. Create a configuration file:

    bash
    cp config.yaml.example config.yaml

    2. Edit config.yaml and specify your device:

    yaml
    device:
      name: "your-device-serial-here" # Device identifier from 'adb devices'

    For auto-selection, you can use any of these methods:

    yaml
    device:
      name: null              # Explicit null (recommended)
      # name: ""              # Empty string  
      # name:                 # Or leave empty/comment out

    Finding Your Device Serial

    To find your device identifier, run:

    bash
    adb devices

    Example output:

    code
    List of devices attached
    13b22d7f        device
    emulator-5554   device

    Use the first column value (e.g., 13b22d7f or emulator-5554) as the device name.

    Usage Scenarios

    ScenarioConfiguration RequiredBehavior
    Single device connectedNone✅ Auto-connects to the device
    Multiple devices, want specific oneconfig.yaml with device.name✅ Connects to specified device
    Multiple devices, no configNone❌ Shows error with available devices
    No devices connectedN/A❌ Shows "no devices" error

    Note: If you have multiple devices connected and don't specify which one to use, the server will show an error message listing all available 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:

    json
    {
      "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

    Available Tools

    The server exposes the following tools:

    python
    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
        """
    python
    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
        """
    python
    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
        """
    python
    def get_screenshot() -> Image:
        """
        Takes a screenshot of the device and returns it.
        Returns:
            Image: the screenshot
        """
    python
    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

    • Built with

    Model Context Protocol (MCP)

    Similar MCP

    Based on tags & features

    • MA

      Manim Mcp Server

      Python·
      490
    • DA

      Davinci Resolve Mcp

      Python·
      327
    • BI

      Biomcp

      Python·
      327
    • CH

      Chuk Mcp Linkedin

      Python00

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k
    View All MCP Servers

    Similar MCP

    Based on tags & features

    • MA

      Manim Mcp Server

      Python·
      490
    • DA

      Davinci Resolve Mcp

      Python·
      327
    • BI

      Biomcp

      Python·
      327
    • CH

      Chuk Mcp Linkedin

      Python00

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k