# 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:
```bash
python -m venv venv
.\venv\Scripts\activate
```
2. Install dependencies:
```bash
pip install -r requirements.txt
```
## Usage
To run the server:
```bash
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`):
```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.