Android MCP
An MCP server that provides control over Android devices through ADB. Offers device screenshot capture, UI layout analysis, package management, and ADB command execution capabilities.
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
- Clone the repository:
git clone https://github.com/minhalvp/android-mcp-server.git
cd android-mcp-server
- Install dependencies: This project uses uv for project management via various methods of installation.
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
- Create a configuration file:
cp config.yaml.example config.yaml
- Edit
config.yamland specify your device:
device:
name: "your-device-serial-here" # Device identifier from 'adb devices'
For auto-selection, you can use any of these methods:
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:
adb devices
Example output:
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
| Scenario | Configuration Required | Behavior |
|---|---|---|
| Single device connected | None | ✅ Auto-connects to the device |
| Multiple devices, want specific one | config.yaml with device.name | ✅ Connects to specified device |
| Multiple devices, no config | None | ❌ Shows error with available devices |
| No devices connected | N/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:
-
Locate your Claude Desktop configuration file:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
-
Add the Android MCP server configuration to the
mcpServerssection:
{
"mcpServers": {
"android": {
"command": "path/to/uv",
"args": ["--directory", "path/to/android-mcp-server", "run", "server.py"]
}
}
}
Replace:
path/to/uvwith the actual path to youruvexecutablepath/to/android-mcp-serverwith 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
- Built with Model Context Protocol (MCP)
관련 서버
Scout Monitoring MCP
스폰서Put performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
스폰서Access financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Sleep MCP Server
Pauses the execution of an agent for a specified duration.
DevServer MCP
Manages development servers for LLM-assisted workflows, offering programmatic control through a unified TUI and experimental browser automation via Playwright.
Zen MCP
Orchestrates multiple AI models like Claude and Gemini for enhanced code analysis, problem-solving, and collaborative development.
Streamable HTTP Server Example
An example MCP server demonstrating streamable HTTP responses using Node.js.
Context 7
Up-to-date Docs For Any Cursor Prompt
Complex plan
Enhance development AI workflows with advanced planning and sequential thinking capabilities.
Trustwise
Advanced evaluation tools for AI safety, alignment, and performance using the Trustwise API.
Floyd
Scheduling and booking engine for AI agents. Check availability, hold slots, and confirm appointments with two-phase booking and conflict-free resource management.
openEuler MCP Servers
A collection of MCP servers designed to enhance the interaction experience with the openEuler operating system.
Animated video MCP Server
Executes Manim Python animation scripts to generate and return videos.