# Android Control

> Universal Android phone/device control through the android-control MCP server. Lists, connects, and drives Android devices — taps, swipes, typing, keys, screenshots, screen recording, UI hierarchy, apps, files, intents, shell, messaging, multi-device fleets, recovery, and the remote-touchpad companion. Use for ANY request about an Android phone, tablet, emulator, or adb device.

- Skill: `samraddhashrivastavatech/android-control` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add samraddhashrivastavatech/android-control`
- Raw SKILL.md: https://api.skillmd.com/api/skills/samraddhashrivastavatech/android-control/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: SAMRADDHASHRIVASTAVATECH (https://skillmd.com/u/samraddhashrivastavatech)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/samraddhashrivastavatech/android-control

---


# android-control — drive any Android device with the MCP

The `android-control` MCP server exposes every Android capability as plain
tools over stdio. This one skill shows a small model exactly how to use them.
There are no hidden steps: list devices, pick one by serial, act, verify.

## The complete tool reference

Every tool below exists on the `android-control` MCP server. `device` is
optional everywhere: leave it out (or use `"all"`) to act on every connected
device; or pass a serial / model / group name to target exactly one.

### 1. Discovery and connection

| Tool | What it does | Params |
|------|--------------|--------|
| `list_devices` | List every discovered Android device (add `include_all=true` for offline sessions) | `include_all` (bool) |
| `discover` | Register currently attached devices — the FIRST call always |
| `status` | Get status/profile (default: all connected) | `device` |
| `connect` | Connect/reconnect one device | `device` (required), `confirm=true` |
| `disconnect` | Disconnect one device | `device` (required) |
| `reconnect` | Recover/reconnect device(s) | `device` |

### 2. Screen

| Tool | What it does | Params |
|------|--------------|--------|
| `take_screenshot` | Capture a screenshot of device(s) | `device` |
| `screen_record` | Record the screen and pull the mp4 | `seconds` (number, default 8), `device` |
| `screen_info` | Display/resolution/orientation info | `device` |

### 3. Touch / mouse

| Tool | What it does | Params |
|------|--------------|--------|
| `tap` | Tap/click at a point | `x`, `y` (ints, required), `device`, `confirm=true` |
| `long_press` | Long-press at a point | `x`, `y`, `duration_ms` (default 600), `device`, `confirm=true` |
| `swipe` | Swipe/drag between two points | `x1`, `y1`, `x2`, `y2`, `duration_ms` (default 300), `device`, `confirm=true` |
| `scroll` | Scroll a direction | `direction` (up/down/left/right, default down), `steps`, `device`, `confirm=true` |

### 4. Keyboard

| Tool | What it does | Params |
|------|--------------|--------|
| `type` | Type text into the focused field | `text` (required), `device`, `confirm=true` |
| `key` | Send a key press (`home`, `back`, `enter`, `volume_up`, ...) | `keycode` (required), `device`, `confirm=true` |
| `back` | Press Back | `device`, `confirm=true` |
| `home` | Press Home | `device`, `confirm=true` |
| `recents` | Open Recents | `device`, `confirm=true` |

### 5. Semantic UI

| Tool | What it does | Params |
|------|--------------|--------|
| `ui_tree` | Dump the semantic UI hierarchy (all widgets + text) | `device` |
| `ui_find` | Find nodes matching criteria | `text`, `text_contains`, `resource_id`, `content_desc`, `cls` (any), `device` |
| `ui_click` | Click the first node matching criteria | same matchers, `device`, `confirm=true` |
| `ui_type` | Type into a matched editable field | `text` (required), `text_contains`, `resource_id`, `device`, `confirm=true` |
| `ui_read` | Read all visible text of the current screen | `device` |

### 6. Apps and intents

| Tool | What it does | Params |
|------|--------------|--------|
| `apps_list` | List installed packages | `device` |
| `app_launch` | Launch an app by package | `package` (required), `device`, `confirm=true` |
| `app_stop` | Force-stop an app by package | `package` (required), `device`, `confirm=true` |
| `open_url` | Open a URL via intent | `url` (required), `device`, `confirm=true` |
| `open_settings` | Open Android Settings (optionally a named panel) | `panel` (string), `device`, `confirm=true` |

### 7. Files

| Tool | What it does | Params |
|------|--------------|--------|
| `files_list` | List files/folders in a directory | `path` (default `/sdcard/`), `device` |
| `send_file` | Send a file Windows -> Android | `local_path`, `remote_path` (required), `device`, `confirm=true` |
| `receive_file` | Receive a file Android -> Windows | `remote_path`, `local_path` (required), `device`, `confirm=true` |

### 8. Messaging (agent <-> device)

| Tool | What it does | Params |
|------|--------------|--------|
| `send_message` | Send a text/structured message agent -> device(s) | `message`, `structured` (object), `device`, `confirm=true` |
| `receive_messages` | Receive device(s) -> agent messages since last read | `device` |

### 9. Shell and diagnostics

| Tool | What it does | Params |
|------|--------------|--------|
| `shell` | Run a checked shell command | `command` (required), `device`, `confirm=true` |
| `device_info` | Full machine-readable device profile | `device` |
| `verify` | Health-check device(s) | `device` |

### 10. Remote Touchpad companion (phone -> this PC)

| Tool | What it does | Params |
|------|--------------|--------|
| `remote_touchpad` | Manage the phone-as-PC-input companion | `action` (status/start/stop/resolve), `bind`, `secret`; starting/stopping requires `confirm=true` |

### 11. Autonomy

| Tool | What it does | Params |
|------|--------------|--------|
| `run_goal` | Execute a natural-language goal across the fleet | `goal` (required) — it decomposes into the gated phases below |

### Resources and prompts the server also exposes

- Resources: `android://registry` (device registry), `android://skills` (skill catalogue), `android://capabilities` (capability vocabulary)
- Prompts: `control_device` (operate a specific device), `phone_touchpad` (phone as PC touchpad)

## Workflow for a small model

Follow this exact order. Do not skip to an action tool before step 3.

1. **LIST** — call `list_devices` (and `discover` if it is empty). NEVER guess a
   serial from context; require it from the listing.
2. **PICK** — if more than one device is returned, name the serials and ask the
   user (or use the one they specified). Save the serial.
3. **CHECK** — call `status` with that serial, then `verify`. It must report
   connected/healthy before you act on it.
4. **ACT** — pick the row from the tables above that matches the request and
   call exactly that tool. Add `confirm=true` on every mutating tool.
5. **CLOSE** — after mutating, re-check with `status` or `ui_read`/screenshot so
   the result is evidence-backed. Report what changed.

## If something fails

- Offline / unknown device -> `discover` again, then `reconnect` with the serial.
- Still stuck -> `device_info` + `shell` (`getprop ro.build.version.release`,
  `pm list packages` are safe probes) to diagnose before retrying.
- Do NOT retry a mutating tool with different parameters after a refusal.
  Report the refusal and ask what to do instead.

## Load the detail skills

Each area has a deeper skill with worked examples. Load the matching one when
you need detail, otherwise the tables above are enough:

- `android-adb` — ADB server/version/connect/pair
- `android-apps` — apps
- `android-discovery` — discovering devices
- `android-input` — taps, swipes, keys, text
- `android-screen` — screenshots, recording
- `android-ui` — semantic UI find/click/type
- `android-files` — file transfer
- `android-intents` — intents, URLs, settings
- `android-messaging` — agent<->device messages
- `android-device-info` — full device profile
- `android-shell` — checked shell commands
- `android-vision` — visual fallback observation
- `android-multi-device` — fleets, groups, parallel control
- `android-recovery` — reconnect and self-heal
- `android-remote-touchpad` — phone as PC touchpad
