Android MCP Server

$python -m venv venv .\venv\Scripts\activate pip install -r requirements.txt python main.py
README.md

Model Context Protocol (MCP) server that enables control of Android devices using uiautomator2.

Android MCP Server

This is a Model Context Protocol (MCP) server that enables control of Android devices using uiautomator2.

Prerequisites

  • Python 3.10+
  • ADB installed and added to PATH
  • An Android device connected via USB or WiFi (with ADB debugging enabled)

Installation

  1. Create a virtual environment:
    python -m venv venv
    .\venv\Scripts\activate
    
  2. Install dependencies:
    pip install -r requirements.txt
    

Usage

To run the server:

python main.py

Tools Available

  • connect_device(serial): Connect to a device.
  • device_info(): Get device status.
  • dump_hierarchy(): View UI XML.
  • click_element(text, resource_id, description): Click UI elements.
  • wait_for_element(text, resource_id, description, timeout): Wait for element to appear.
  • click_point(x, y): Click at coordinates.
  • swipe(sx, sy, ex, ey): Swipe gesture.
  • input_text(text, clear): Type text.
  • press_key(key): Press physical keys (home, back, etc.).
  • open_app(package_name): Launch an app.
  • stop_app(package_name): Stop an app.
  • install_app(url_or_path): Install APK.
  • uninstall_app(package_name): Uninstall app.
  • shell_command(command): Run ADB shell command.
  • take_screenshot(): Capture screen.

Configuration

Ensure your device is visible via adb devices before connecting.

Gemini MCP Configuration

To use this server with Gemini CLI or compatible MCP clients, add the following to your MCP configuration file (e.g., ~/.gemini/settings.json):

"android": {
  "command": "d:\\src\\android-mcp\\venv\\Scripts\\python.exe",
  "args": [
    "d:\\src\\android-mcp\\main.py"
  ]
}

Replace the paths with the actual absolute paths to your project if they differ.

Tools (15)

connect_deviceConnect to a device.
device_infoGet device status.
dump_hierarchyView UI XML.
click_elementClick UI elements.
wait_for_elementWait for element to appear.
click_pointClick at coordinates.
swipeSwipe gesture.
input_textType text.
press_keyPress physical keys (home, back, etc.).
open_appLaunch an app.
stop_appStop an app.
install_appInstall APK.
uninstall_appUninstall app.
shell_commandRun ADB shell command.
take_screenshotCapture screen.

Configuration

claude_desktop_config.json
{"android":{"command":"d:\\src\\android-mcp\\venv\\Scripts\\python.exe","args":["d:\\src\\android-mcp\\main.py"]}}

Try it

Connect to Android device with serial 'emulator-5554' and get device info.
Dump the current UI hierarchy and click the element with text 'Settings'.
Open the Camera app, take a screenshot, and swipe from (100,500) to (100,200).
Install APK from 'https://example.com/app.apk' then run shell command 'pm list packages'.
Press home key, wait for launcher, and input text 'hello' into search.

Frequently Asked Questions

How do I install Android MCP Server?

Install Android MCP Server by running: python -m venv venv .\venv\Scripts\activate pip install -r requirements.txt python main.py

What MCP clients work with Android MCP Server?

Android MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Use Android MCP Server with Conare

Manage MCP servers visually, upload persistent context, and never start from zero with Claude Code & Codex.

Try Free