android-mcp
# android-mcp
<!-- mcp-name: io.github.ouchi-dev/android-mcp -->
Let Claude, or any [MCP](https://modelcontextprotocol.io) assistant, see an Android
phone's screen and use it, over plain `adb`. No app to install on the phone, no root.
*Laisser Claude voir l'écran d'un téléphone Android et s'en servir, par adb, sans rien
installer sur le téléphone.*
What it is good for:
- **Testing your own app** like a user would: *"open my app, create an account, tell me
where it breaks"*, then read the crash in `logcat`.
- **Repetitive phone chores**: *"go through my notifications settings and turn off every
shopping app"*.
- **Accessibility**: describing a screen and acting on it by voice through the assistant.
## How it sees the screen
`screen_elements` turns the phone's accessibility tree into a short list: every visible
text and every touchable element, with its centre, type, id and state (checked, disabled,
editable...). The assistant then taps by name with `tap_element("Wi-Fi")`. That is
cheaper and much more reliable than guessing coordinates on a screenshot; `screenshot`
is there for layout, images and games.
## Tools
| Tool | |
|---|---|
| `devices` | Phones and emulators adb can see |
| `screen_elements`, `screenshot`, `current_app` | Read the screen |
| `tap_element`, `tap`, `swipe`, `type_text`, `press_key` | Act on it |
| `list_apps`, `launch_app`, `install_apk` | Apps |
| `logcat` | Recent log, per app, errors only if wanted |
There is deliberately **no free shell tool**: every action is named and bounded, and the
server's instructions ask the assistant to check with you before sending messages,
paying or deleting anything.
## Install
1. On the phone: *Settings > About > tap Build number 7 times*, then *Developer options >
USB debugging* (or *Wireless debugging*). Plug it in and accept the prompt.
2. On the computer, with [platform-tools](https://developer.android.com/tools/releases/platform-tools)
installed (`adb devices` should list the phone):
With [uv](https://docs.astral.sh/uv/) installed, nothing else is needed:
```bash
claude mcp add android -- uvx android-mcp-lite
```
Or with pip: `pip install android-mcp-lite`, then `claude mcp add android -- android-mcp`.
With several devices, pass `serial` (from `devices`) to each tool. Set `ADB` if adb is
not on the PATH or in `~/Android/Sdk/platform-tools`.
## Status
Version 0.1, tested on an Android 14 emulator: reading the screen, screenshots, launching
apps, tapping by name, scrolling, typing and keys. `install_apk` and `logcat` are written
but not yet exercised on a device.
- [x] Screen as a list of elements, tap by name
- [x] Retries while the screen is still animating
- [ ] Unicode typing (accents, emoji) through a clipboard helper
- [ ] Wait for an element to appear
- [ ] Record a session and replay it as a test
- [ ] Notifications: read and act on them
## License
MIT
TDQS
Scored across 13 tools
Each tool maps to a distinct action or resource: element-targeted tap vs coordinate tap, swipe vs press_key vs type_text are clearly separated, and observation tools (screenshot, screen_elements, current_app, logcat, devices) each return different data. Descriptions reinforce the boundaries (e.g. screen_elements is explicitly framed as a cheaper alternative to screenshot for tapping).
Action tools follow a consistent verb_noun pattern (tap_element, type_text, press_key, list_apps, launch_app, install_apk), while read-only/inspection tools use bare nouns (devices, screenshot, logcat, current_app, screen_elements) and two are bare verbs (tap, swipe). The split is readable and roughly correlated with purpose, but it is not a single uniform convention.
13 tools is well within the ideal range and each earns its place: input, navigation, app lifecycle, device discovery, and diagnostics are all represented without redundancy.
Covers the core device-control lifecycle (inspect screen, tap/type/swipe/key, launch/install/list apps, logs, screenshot, device list). Minor gaps remain: no long-press or drag gesture, no way to clear an input field, and no keyevent beyond the enumerated set, but agents can work around most of these.