open-mobile-mcp
Automates Android devices: capture screenshots, UI hierarchy, OCR, perform taps, swipes, typing, read logs, manage app lifecycle, and more.
Manages Expo dependencies by running npx expo install and provides bundler management for React Native/Expo projects.
Automates iOS devices via Maestro: perception (screenshots, UI hierarchy), interaction (tap, swipe, type), logging, and app lifecycle management.
Manages the Metro JavaScript bundler: start, stop, and restart Metro for React Native app development.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@open-mobile-mcptake a screenshot of the current screen"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Open Mobile MCP Server 📱
An open-source Model Context Protocol (MCP) server for mobile automation. Give any LLM eyes and hands on a real Android or iOS device — screenshot, tap, swipe, read logs, and verify your app without writing test code.
Works with Claude Code, Claude Desktop, Cursor, and any other MCP-compatible client.
Features
Perception: Screenshots, semantic UI hierarchy, OCR, element finder, layout health analysis.
Interaction: Tap, swipe, type, pinch, rotate, long-press, hardware key presses.
Logging: Per-app Android log filtering via PID (pass
deviceId+packageIdto eliminate system noise). Background log watching viawait_for_log.Environment: Metro bundler management, app lifecycle, deep links, screen recording, locale switching.
Text Input: Unicode/Cyrillic/CJK/Emoji support via ADB Keyboard with automatic keyboard restore.
Related MCP server: airi-android
Prerequisites
Node.js (v18+)
ADB installed and in PATH (for Android).
Maestro (required for iOS; fallback for Android input).
Mac/Linux:
curl -Ls "https://get.maestro.mobile.dev" | bashWindows:
powershell -Command "iwr -useb https://get.maestro.mobile.dev | iex"
(Optional) ADB Keyboard — only needed for non-ASCII input (Unicode, Cyrillic, Emoji).
Download from GitHub and install:
adb install ADBKeyboard.apk.
Configuration
macOS / Linux
{
"mcpServers": {
"open-mobile-mcp": {
"command": "npx",
"args": ["open-mobile-mcp"]
}
}
}Windows
{
"mcpServers": {
"open-mobile-mcp": {
"command": "npx",
"args": ["open-mobile-mcp"],
"env": {
"MAESTRO_HOME": "C:\\Users\\YOUR_USER\\.maestro",
"PATH": "C:\\Users\\YOUR_USER\\.maestro\\maestro\\bin;C:\\Windows\\system32;C:\\Windows;..."
}
}
}
}Note: On Windows, explicitly setting
MAESTRO_HOMEandPATHis often required formaestroto be found.
git clone https://github.com/xzaleksey/open-mobile-mcp.git
cd open-mobile-mcp
npm install && npm run buildThen use "command": "node", "args": ["/path/to/open-mobile-mcp/build/index.js"] in your MCP config.
Tools
Perception
Tool | Platform | Description |
| Android/iOS | List connected emulators and simulators |
| Android/iOS | Screenshot (~800px wide). Use |
| Android/iOS | Pruned UI tree as JSON |
| Android/iOS | OCR via Tesseract.js (default |
| Android/iOS | Set default OCR language (e.g. |
| Android/iOS | Find elements by |
| Android/iOS | Poll until element appears (default 20s) |
| Android/iOS | Cropped screenshot of a specific element |
| — | Compare two base64 screenshots, returns diff % |
| Android/iOS | Detect deep nesting and layout performance issues |
Interaction
Tool | Platform | Description |
| Android/iOS | Recommended — find + tap by selector. Note: text matching is exact; emoji prefixes (e.g. |
| Android/iOS | Raw coordinate tap. Must use original device pixels, not screenshot pixels. |
| Android/iOS | Swipe by coordinates |
| Android/iOS | Type text (handles Unicode) |
| Android | Two-finger pinch/zoom |
| Android | Two-finger rotation |
| Android/iOS | Hardware keys: |
Environment & Logs
Tool | Platform | Description |
| Android/iOS | Start/stop/restart Metro. Pass |
| Android/iOS | Manual control over |
| Android/iOS | Recent Metro/Android/iOS logs. Returns |
| Android/iOS | Recent error/exception lines across all sources |
| Android/iOS | Network logcat lines. For iOS, filters the internal log capture buffer (enable via |
| Android/iOS | Block until a log pattern matches. See subagent pattern below. |
| Android/iOS | Launch, stop, install, or uninstall apps |
| Android/iOS | Open a URL or deep link |
| Android/iOS | Reset app to fresh-install state |
| Android | Version, permissions, install date |
| Android/iOS | Screen recording to |
| Android/iOS | Run a Maestro YAML flow |
| — | Run |
| — | Run |
wait_for_log — Background Subagent Pattern
wait_for_log blocks until a pattern appears in the log buffer. Calling it directly in the main agent freezes the conversation. Always delegate it to a background subagent in Claude Code:
// Step 1 — spawn the watcher BEFORE the action that will trigger the log
// (In Claude Code, use Agent tool with run_in_background: true)
// Subagent prompt: "Call wait_for_log with pattern 'route: /home', timeout 60000. Report the result."
// Step 2 — perform the action in the main agent
tap_on_element({ selector: "Home", strategy: "text" });
// Step 3 — main agent continues freely; gets notified when subagent finishesLicense
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP-Native LLM Orchestration Agent
Melaya is a remote MCP server. It gives an assistant hands on your own Android phone and browser: it reads the screen through the accessibility tree, then taps, types and navigates inside the apps and sites you allow-list, with no per-app API. It also builds, schedules and runs agent pipelines across 6k+ connected tools. OAuth 2.1, nothing to install.
Related MCP Servers
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables scalable mobile automation for iOS and Android through a platform-agnostic interface, allowing LLMs to interact with mobile applications via accessibility snapshots or screenshot-based inputs.1923,436 npm2Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA MCP server that enables LLMs to control Android devices via ADB, supporting input, UI hierarchy, device management, and shell commands.14MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that enables LLMs to control Android devices via ADB, providing tools for screen interaction and UI inspection.1MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server for ad-hoc UI testing of Android and iOS apps, enabling LLM agents to interact with mobile app UIs and react to observations.4011 npm3MIT