Mobile Next - MCP server for Mobile Development and Automation | iOS, Android, Simulator, Emulator, and Real Devices
This is a Model Context Protocol (MCP) server that enables scalable mobile automation, development through a platform-agnostic interface, eliminating the need for distinct iOS or Android knowledge. You can run it on emulators, simulators, and real devices (iOS and Android). This server allows Agents and LLMs to interact with native iOS/Android applications and devices through structured accessibility snapshots or coordinate-based taps based on screenshots.
<h4 align="center"> <a href="https://github.com/mobile-next/mobile-mcp"> <img src="https://img.shields.io/github/stars/mobile-next/mobile-mcp" alt="Mobile Next Stars" /> </a> <a href="https://www.npmjs.com/package/@mobilenext/mobile-mcp"> <img src="https://img.shields.io/npm/dm/@mobilenext/mobile-mcp?logo=npm&style=flat&color=red" alt="npm" /> </a> <a href="https://github.com/mobile-next/mobile-mcp/releases"> <img src="https://img.shields.io/github/release/mobile-next/mobile-mcp" /> </a> <a href="https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%7B%22name%22%3A%22mobile-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40mobilenext%2Fmobile-mcp%40latest%22%5D%7D"> <img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="Install in VS Code" /> </a> <a href="https://github.com/mobile-next/mobile-mcp/wiki"> <img src="https://img.shields.io/badge/documentation-wiki-blue" alt="wiki" /> </a> <a href="https://mobilenexthq.com/join-slack"> <img src="https://img.shields.io/badge/join-Slack-blueviolet?logo=slack&style=flat" alt="join on Slack" /> </a> </h4>https://github.com/user-attachments/assets/bb084777-beb3-4930-ae6f-8d3fe694ddde
<p align="center"> <a href="https://github.com/mobile-next/"> <img alt="mobile-mcp" src="https://raw.githubusercontent.com/mobile-next/mobile-next-assets/refs/heads/main/mobile-mcp-banner.png" width="600" /> </a> </p>🚀 Mobile MCP Roadmap: Building the Future of Mobile
Join us on our journey as we continuously enhance Mobile MCP! Check out our detailed roadmap to see upcoming features, improvements, and milestones. Your feedback is invaluable in shaping the future of mobile automation.
Main use cases
How we help to scale mobile automation:
- 📲 Native app automation (iOS and Android) for testing or data-entry scenarios.
- 📝 Scripted flows and form interactions without manually controlling simulators/emulators or real devices (iPhone, Samsung, Google Pixel etc)
- 🧭 Automating multi-step user journeys driven by an LLM
- 👆 General-purpose mobile application interaction for agent-based frameworks
- 🤖 Enables agent-to-agent communication for mobile automation usecases, data extraction
Main Features
- 🚀 Fast and lightweight: Uses native accessibility trees for most interactions, or screenshot based coordinates where a11y labels are not available.
- 🤖 LLM-friendly: No computer vision model required in Accessibility (Snapshot).
- 🧿 Visual Sense: Evaluates and analyses what's actually rendered on screen to decide the next action. If accessibility data or view-hierarchy coordinates are unavailable, it falls back to screenshot-based analysis.
- 📊 Deterministic tool application: Reduces ambiguity found in purely screenshot-based approaches by relying on structured data whenever possible.
- 📺 Extract structured data: Enables you to extract structred data from anything visible on screen.
🎯 Platform Support
| Platform | Supported |
|---|---|
| iOS Real Device | ✅ |
| iOS Simulator | ✅ |
| Android Real Device | ✅ |
| Android Emulator | ✅ |
🔧 Available MCP Tools
<details> <summary>📱 <strong>Click to expand tool list</strong> - List of Mobile MCP tools for automation and development</summary>For detailed implementation and parameter specifications, see
src/server.ts
Device Management
mobile_list_available_devices- List all available devices (simulators, emulators, and real devices)mobile_get_screen_size- Get the screen size of the mobile device in pixelsmobile_get_orientation- Get the current screen orientation of the devicemobile_set_orientation- Change the screen orientation (portrait/landscape)
App Management
mobile_list_apps- List all installed apps on the devicemobile_launch_app- Launch an app using its package namemobile_terminate_app- Stop and terminate a running appmobile_install_app- Install an app from file (.apk, .ipa, .app, .zip)mobile_uninstall_app- Uninstall an app using bundle ID or package name
Screen Interaction
mobile_take_screenshot- Take a screenshot to understand what's on screenmobile_save_screenshot- Save a screenshot to a filemobile_list_elements_on_screen- List UI elements with their coordinates and propertiesmobile_click_on_screen_at_coordinates- Click at specific x,y coordinatesmobile_double_tap_on_screen- Double-tap at specific coordinatesmobile_long_press_on_screen_at_coordinates- Long press at specific coordinatesmobile_swipe_on_screen- Swipe in any direction (up, down, left, right)
Input & Navigation
mobile_type_keys- Type text into focused elements with optional submitmobile_press_button- Press device buttons (HOME, BACK, VOLUME_UP/DOWN, ENTER, etc.)mobile_open_url- Open URLs in the device browser
Platform Support
- iOS: Simulators and real devices via native accessibility and WebDriverAgent
- Android: Emulators and real devices via ADB and UI Automator
- Cross-platform: Unified API works across both iOS and Android
🏗️ Mobile MCP Architecture
<p align="center"> <a href="https://raw.githubusercontent.com/mobile-next/mobile-next-assets/refs/heads/main/mobile-mcp-arch-1.png"> <img alt="mobile-mcp" src="https://raw.githubusercontent.com/mobile-next/mobile-next-assets/refs/heads/main/mobile-mcp-arch-1.png" width="600"> </a> </p>📚 Wiki page
More details in our wiki page for setup, configuration and debugging related questions.
Installation and configuration
Standard config works in most of the tools:
{
"mcpServers": {
"mobile-mcp": {
"command": "npx",
"args": ["-y", "@mobilenext/mobile-mcp@latest"]
}
}
}Add via the Amp VS Code extension settings screen or by updating your settings.json file:
"amp.mcpServers": {
"mobile-mcp": {
"command": "npx",
"args": [
"@mobilenext/mobile-mcp@latest"
]
}
}Amp CLI:
Run the following command in your terminal:
amp mcp add mobile-mcp -- npx @mobilenext/mobile-mcp@latestTo setup Cline, just add the json above to your MCP settings file.
</details> <details> <summary>Claude Code</summary>Use the Claude Code CLI to add the Mobile MCP server:
claude mcp add mobile-mcp -- npx -y @mobilenext/mobile-mcp@latestFollow the MCP install guide, use json configuration above.
</details> <details> <summary>Codex</summary>Use the Codex CLI to add the Mobile MCP server:
codex mcp add mobile-mcp npx "@mobilenext/mobile-mcp@latest"Alternatively, create or edit the configuration file ~/.codex/config.toml and add:
[mcp_servers.mobile-mcp]
command = "npx"
args = ["@mobilenext/mobile-mcp@latest"]For more information, see the Codex MCP documentation.
</details> <details> <summary>Copilot</summary>Use the Copilot CLI to interactively add the Mobile MCP server:
/mcp addYou can edit the configuration file ~/.copilot/mcp-config.json and add:
{
"mcpServers": {
"mobile-mcp": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@mobilenext/mobile-mcp@latest"
]
}
}
}For more information, see the Copilot CLI documentation.
</details> <details> <summary>Cursor</summary>Click the button to install:
<img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="Install in Cursor">
Or install manually:
Go to Cursor Settings -> MCP -> Add new MCP Server. Name to your liking, use command type with the command npx -y @mobilenext/mobile-mcp@latest. You can also verify config or add command like arguments via clicking Edit.
Use the Gemini CLI to add the Mobile MCP server:
gemini mcp add mobile-mcp npx -y @mobilenext/mobile-mcp@latestClick the button to install:
Or install manually:
Go to Advanced settings -> Extensions -> Add custom extension. Name to your liking, use type STDIO, and set the command to npx -y @mobilenext/mobile-mcp@latest. Click "Add Extension".
Follow the MCP Servers documentation. For example in .kiro/settings/mcp.json:
{
"mcpServers": {
"mobile-mcp": {
"command": "npx",
"args": [
"@mobilenext/mobile-mcp@latest"
]
}
}
}Follow the MCP Servers documentation. For example in ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mobile-mcp": {
"type": "local",
"command": [
"npx",
"@mobilenext/mobile-mcp@latest"
],
"enabled": true
}
}
}Open Qodo Gen chat panel in VSCode or IntelliJ → Connect more tools → + Add new MCP → Paste the standard config above.
Click <code>Save</code>.
</details> <details> <summary>Windsurf</summary>Open Windsurf settings, navigate to MCP servers, and add a new server using the command type with:
npx @mobilenext/mobile-mcp@latestOr add the standard config under mcpServers in your settings as shown above.
SSE Server Mode
By default, Mobile MCP runs over stdio. To start an SSE server instead, use the --listen flag:
npx @mobilenext/mobile-mcp@latest --listen 3000This binds to localhost:3000. To bind to a specific interface:
npx @mobilenext/mobile-mcp@latest --listen 0.0.0.0:3000Then configure your MCP client to connect to http://<host>:3000/mcp.
Authorization
To require Bearer token authorization on the SSE server, set the MOBILEMCP_AUTH environment variable:
MOBILEMCP_AUTH=my-secret-token npx @mobilenext/mobile-mcp@latest --listen 3000When set, all requests must include the header `Authorization: Bearer my-secret-token
…