Skip to main content
Glama

Android MCP Server

A lightweight MCP (Model Context Protocol) server for Android operating system automation. This server provides tools to interact directly with Android devices, enabling automated testing, app interaction, and device control.

Features

  • Device Control: Click, long click, swipe, drag, and type on Android devices

  • State Management: Get device state with optional visual screenshots

  • Navigation: Press hardware buttons and access notifications

  • Automation: Wait functionality for timing control

  • Emulator Support: Works with both physical devices and Android emulators

Related MCP server: DroidMind

Prerequisites

  • Python 3.13 or higher

  • uv package manager

  • Android device or emulator with USB debugging enabled

  • ADB (Android Debug Bridge) installed and accessible

Installation

1. Install uv (if not already installed)

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# Alternative: using pip
pip install uv

2. Set up the project

# Navigate to the android MCP directory
cd mcp/android

# Install dependencies
uv sync

# Activate the virtual environment (optional, uv run handles this automatically)
source .venv/bin/activate

3. Verify installation

# Test the server
uv run main.py --help

Usage

Running the server

For physical devices:

uv run main.py

For Android emulator:

uv run main.py --emulator

Device Setup

  1. Enable Developer Options on your Android device:

    • Go to Settings > About phone

    • Tap "Build number" 7 times

  2. Enable USB Debugging:

    • Go to Settings > Developer options

    • Enable "USB debugging"

  3. Connect device and verify ADB connection:

    adb devices

MCP Server Configuration

Add the following configuration to your MCP client settings (e.g., Claude Desktop, Cline, etc.):

{
  "mcpServers": {
    "android-mcp": {
      "type": "stdio",
      "command": "bash",
      "args": [
        "-c",
        "cd /path/to/agent/mcp/android && source .venv/bin/activate && uv run main.py --emulator"
      ],
      "alwaysAllow": [
        "State-Tool",
        "Click-Tool",
        "Type-Tool",
        "Swipe-Tool"
      ]
    }
  }
}

Note: Update the path in the configuration to match your actual project location.

Configuration Options

  • For physical devices: Remove the --emulator flag from the args

  • Custom device: Add --device <device_id> to specify a particular device

  • alwaysAllow: Pre-approve specific tools to avoid repeated permission prompts

Available Tools

Tool

Description

Parameters

Click-Tool

Click on specific coordinates

x: int, y: int

State-Tool

Get device state with optional screenshot

use_vision: bool = false

Long-Click-Tool

Long press on coordinates

x: int, y: int, duration: int

Swipe-Tool

Swipe between coordinates

x1: int, y1: int, x2: int, y2: int

Type-Tool

Type text at coordinates

text: str, x: int, y: int, clear: bool = false

Drag-Tool

Drag and drop between coordinates

x1: int, y1: int, x2: int, y2: int

Press-Tool

Press hardware buttons

button: str

Notification-Tool

Access notification panel

None

Wait-Tool

Wait for specified duration

duration: int

Troubleshooting

Common Issues

  1. Device not found:

    • Ensure USB debugging is enabled

    • Check adb devices output

    • Try different USB cables/ports

  2. Permission denied:

    • Allow USB debugging permission on device

    • Check device authorization in adb devices

  3. Connection timeout:

    • Restart ADB: adb kill-server && adb start-server

    • Reconnect device

  4. Python version issues:

    • Ensure Python 3.13+ is installed

    • Use uv python install 3.13 if needed

Emulator Setup

If using Android emulator:

  1. Start Android emulator (usually accessible as emulator-5554)

  2. Verify connection: adb connect emulator-5554

  3. Use --emulator flag when running the server

Development

Project Structure

mcp/android/
├── README.md
├── pyproject.toml
├── main.py           # MCP server entry point
├── src/
│   ├── mobile/       # Device interaction logic
│   └── tree/         # UI tree parsing and state management
└── .venv/           # Virtual environment

Dependencies

  • mcp: Model Context Protocol framework

  • uiautomator2: Android device automation

  • pillow: Image processing for screenshots

  • ipykernel: Jupyter kernel support

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomdwipo/agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server