Skip to main content
Glama
README.md
# Android MCP — Hermes Agent Bridge

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

Android device automation MCP server for [Hermes Agent](https://hermes-agent.nousresearch.com). Provides ADB-based tools for controlling Android devices — tap, swipe, text input, screenshot, UI dump, app management, and more.

Built for AI agents that need to interact with Android devices programmatically.

## Features

- **Device Management** — list, connect, disconnect devices; check connection state
- **Gestures** — tap, swipe, long press, pinch, multi-touch
- **Input** — text typing, key events, clipboard
- **Screenshots** — capture device screen as PNG
- **UI Analysis** — dump view hierarchy via `uiautomator`
- **App Control** — launch, stop, list installed apps
- **Password Manager** — store and retrieve app credentials locally
- **System Actions** — unlock, lock, volume, power, airplane mode

## Prerequisites

- [Node.js](https://nodejs.org) 18+
- [ADB](https://developer.android.com/studio/command-line/adb) — Android Debug Bridge
- Android device with USB debugging enabled

## Installation

```bash
# Clone the repository
git clone git@github.com:AsmanovLev/android-mcp.git
cd android-mcp

# Install dependencies
npm install

# Build
npm run build
```

## Configuration

Add to your `~/.hermes/config.yaml`:

```yaml
mcp_servers:
  android:
    command: node
    args:
      - /path/to/android-mcp/build/index.js
```

Then restart Hermes Agent. The tools will be available with the `mcp_android_*` prefix.

## Usage

### List connected devices

```json
{
  "tool": "mcp_android_list_devices"
}
```

### Take a screenshot

```json
{
  "tool": "mcp_android_screenshot",
  "arguments": { "save_to": "/tmp/screen.png" }
}
```

### Tap on screen

```json
{
  "tool": "mcp_android_tap",
  "arguments": { "x": 500, "y": 800 }
}
```

### Unlock device

```json
{
  "tool": "mcp_android_unlock",
  "arguments": { "pin": "1234" }
}
```

## Tools

| Tool | Description |
|---|---|
| `list_devices` | List connected ADB devices |
| `screenshot` | Capture device screen |
| `dump_uiautomator` | Dump UI hierarchy via uiautomator |
| `tap` | Tap at coordinates |
| `swipe` | Swipe from (x1,y1) to (x2,y2) |
| `type_text` | Type text via ADB |
| `press_key` | Send key event |
| `unlock` | Wake + swipe up + enter PIN |
| `launch_app` | Launch app by package name |
| `force_stop` | Force stop app |
| `list_apps` | List installed packages |
| `password_manager` | Store/retrieve app credentials |

## Development

```bash
# Watch mode
npm run dev

# Run tests
npm test
```

## Author

**Deepagent** — AI agent by Hermes Agent

## License

MIT

TDQS

B3.3/5.0

Scored across 19 tools

Disambiguation5/5

Each tool targets a distinct function: gestures, buttons, app management, F-Droid/RuStore search/download, password management, device state, etc. Even gesture tools are differentiated by single, combo, and macro operations.

Naming Consistency2/5

Naming is inconsistent: some tools have 'mobile_' prefix while others (fdroid_download, rustore_search) do not. Verb-noun combinations vary (e.g., 'mobile_power', 'mobile_activity_manager', 'mobile_device_list'), and some names are vague.

Tool Count4/5

19 tools is on the higher side but justified given the breadth of Android device control. A few tools (e.g., three gesture tools) could potentially be consolidated, but overall count is reasonable.

Completeness4/5

Covers core device interaction, app lifecycle, and app store search/download. Missing advanced debugging (logcat), file operations, or notification management, but sufficient for common automation tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues