# Expo Android MCP [Health: Active]

**Category:** 🖥️ OS Automation  
**Repository:** https://github.com/frndchagas/expo-android  
**GitHub Stars:** 4  
**npm Downloads (last month):** 175  
**Views:** 2  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/expo-android-mcp

## Description
MCP server for Android emulator automation via ADB.

## Tools
Capabilities this server exposes over MCP:

- **devices** — list connected devices and emulators.
- **doctor** — validate adb availability and show connected devices.
- **setDevice** — override the active device serial for this MCP process.
- **inspect** — UI dump parsed into elements with a summary (screenshot optional).
- **screenshot** — capture a screenshot only (base64 or file path).
- **findElement** — return elements that match search criteria.
- **tapElement** — find an element and tap its center.
- **waitForElement** — wait until an element appears (optionally with state checks).
- **assertElement** — verify element existence and state.
- **tap** — tap at x/y coordinates.
- **swipe** — swipe between coordinates.
- **longPress** — press and hold at coordinates.
- **inputText** — type text in the focused field.
- **keyEvent** — send Android key events (e.g., BACK, HOME).
- **openApp** — launch an app by package name.
- **listPackages** — list installed package names.
- **installExpoGo** — download the pinned Expo Go APK and install it via `adb install -r` (the `url` override only accepts official `github.com/expo/expo-go-releases` URLs).

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "expo-android-mcp": {
    "command": "npx",
    "args": ["-y","@fndchagas/expo-android"],
    "env": {
      "ADB_PATH": "",
      "ADB_SERIAL": "",
      "ADB_TIMEOUT_MS": "",
      "ADB_MAX_BUFFER_MB": "",
      "ADB_DEBUG": "",
      "MCP_TRANSPORT": "",
      "PORT": ""
    }
  }
}
```

**Requires environment variables:** `ADB_PATH`, `ADB_SERIAL`, `ADB_TIMEOUT_MS`, `ADB_MAX_BUFFER_MB`, `ADB_DEBUG`, `MCP_TRANSPORT`, `PORT` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What Expo Android MCP MCP server does

Expo Android MCP MCP server exposes Android automation through the Model Context Protocol. It communicates with an emulator or physical device using the Android Debug Bridge, or ADB, and lets an MCP client inspect visible UI, perform input actions, and check device state.

The server supports both semantic and coordinate-based interaction. An agent can search UI elements by text, content description, resource ID, class, and related matching options, then tap or validate the result. It can also tap coordinates directly, swipe, long-press, type into the focused field, send Android key events, and wait for UI conditions.

Additional tools cover screenshots, installed package names, app launching by package name, and installation of the pinned Expo Go APK. The Expo Go URL override is restricted to official `github.com/expo/expo-go-releases` URLs.

## How it works

The MCP client starts the package as a local process by default. The server runs ADB commands against the selected device and returns structured tool results. `inspect` obtains a UI dump and parses it into elements, with options for a summary, element limits, and an optional screenshot returned as base64 or written to a path. `screenshot` captures an image without performing a UI dump.

Device selection follows a defined order: a `serial` supplied to an individual tool call takes precedence, followed by the runtime `setDevice` override, the `ADB_SERIAL` environment variable, and automatic selection when only one device is connected. `devices` lists available targets, while `doctor` checks ADB availability and reports connected devices.

## Setup and configuration

Expo Android MCP MCP server requires Node 18 or newer, Android SDK platform-tools with `adb` available, and a connected Android device or running emulator. Verify connectivity with `adb devices` before using the automation tools.

Install it globally with `npm install -g @fndchagas/expo-android`, or run it through `npx -y @fndchagas/expo-android`. Claude Desktop also has a release package that can be added through Settings → Extensions; with one connected device, the default configuration can be left empty.

`ADB_PATH` changes the executable location, and `ADB_SERIAL` selects a target or uses `auto` for automatic selection. `ADB_TIMEOUT_MS` and `ADB_MAX_BUFFER_MB` control command limits, while `ADB_DEBUG=1` writes ADB diagnostics to standard error. `MCP_TRANSPORT` accepts `stdio`, `http`, or `both`; `PORT` sets the HTTP port and defaults to 7332.

Claude Code can register the server with `claude mcp add`, and Codex CLI can register it with `codex mcp add`. Both examples can pass ADB settings as environment variables.

## Tools and capabilities

- Check ADB and device availability with `doctor` and enumerate targets with `devices`.
- Select a process-wide device with `setDevice` or target a device per call with `serial`.
- Parse the Android UI with `inspect`, search with `findElement`, and capture images with `screenshot`.
- Tap, wait for, or assert matching elements with `tapElement`, `waitForElement`, and `assertElement`.
- Drive coordinates using `tap`, `swipe`, and `longPress`.
- Enter text and system actions with `inputText` and `keyEvent`.
- Launch packages, list installed packages, and install Expo Go with `openApp`, `listPackages`, and `installExpoGo`.

## Limitations and notes

The server does not bundle ADB or an Android emulator. If ADB is missing, the process can still start, but tool calls report that the executable cannot be found until the path is corrected. If several devices are connected, configure `ADB_SERIAL` or select a target with `setDevice`.

Changing PATH or SDK-related environment settings requires restarting the MCP process. The server marks tools with MCP read-only or destructive annotations, allowing compatible clients to apply different approval behavior to inspection and device-control operations.

_Full upstream README: https://allmcps.com/mcp/expo-android-mcp/readme_

