A side-by-side look at the Expo Android MCP and Mobile Device MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Expo Android MCP for os automation work as a local process; choose Mobile Device MCP for os automation as a local process. You can also run both side by side in one mcpServers block.
ADB_PATH, ADB_SERIAL, ADB_TIMEOUT_MS, ADB_MAX_BUFFER_MB, ADB_DEBUG, MCP_TRANSPORT, PORT.devices, doctor, setDevice.list_devices, screenshot, uitree.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | OS Automation | OS Automation |
| Quality signal | 52/100 · Good | 55/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | ADB_PATHADB_SERIALADB_TIMEOUT_MSADB_MAX_BUFFER_MBADB_DEBUGMCP_TRANSPORTPORT | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 4 | 48 |
| Directory activity | 0 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 17 | 14 |
| Full listing | View Expo Android MCP | View Mobile Device MCP |
deviceslist connected devices and emulators.doctorvalidate adb availability and show connected devices.setDeviceoverride the active device serial for this MCP process.inspectUI dump parsed into elements with a summary (screenshot optional).screenshotcapture a screenshot only (base64 or file path).findElementreturn elements that match search criteria.tapElementfind an element and tap its center.waitForElementwait until an element appears (optionally with state checks).assertElementverify element existence and state.taptap at x/y coordinates.swipeswipe between coordinates.longPresspress and hold at coordinates.list_devicesList available iOS and Android devicesscreenshotCapture the device screen (JPEG)uitreeGet the UI element tree as a flat list, with optional search and limit. Off-screen elements are excluded unless `include_invisible: truetapTap at screen coordinatesdouble_tapDouble-tap at screen coordinateslong_pressLong-press at screen coordinates (configurable duration)scrollSwipe from start to end coordinatestype_textType text into the focused elementpress_buttonPress a hardware/navigation button (home, back, enter, volumeUp/Down, dpadUp/Down/Left/Right/Center)launch_appLaunch an app by bundle ID / package nameterminate_appForce-stop an applist_appsList installed appsPaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"expo-android-mcp": {
"command": "npx",
"args": [
"-y",
"@fndchagas/expo-android"
],
"env": {
"ADB_PATH": "YOUR_ADB_PATH_HERE",
"ADB_SERIAL": "YOUR_ADB_SERIAL_HERE",
"ADB_TIMEOUT_MS": "YOUR_ADB_TIMEOUT_MS_HERE",
"ADB_MAX_BUFFER_MB": "YOUR_ADB_MAX_BUFFER_MB_HERE",
"ADB_DEBUG": "YOUR_ADB_DEBUG_HERE",
"MCP_TRANSPORT": "YOUR_MCP_TRANSPORT_HERE",
"PORT": "YOUR_PORT_HERE"
}
}
}
}
{
"mcpServers": {
"mobile-device-mcp": {
"command": "npx",
"args": [
"-y",
"@srmorete/mobile-device-mcp@latest"
]
}
}
}