MCP server for iOS and Android Mobile Development, Automation and Testing
Mobile Next MCP Server (iOS & Android)
MCP server for iOS and Android Mobile Development, Automation and Testing. It provides a platform-agnostic interface for mobile automation and development, enabling interaction with mobile environments that include emulators, simulators, and real iOS/Android devices.
๐ ๏ธ Key Features
Mobile development, automation, and testing via an MCP server
Works with emulators and simulators as well as physical iOS and Android devices
Supports agent/LLM interaction with native iOS/Android applications through structured accessibility snapshots and/or coordinate-based taps
๐ Use Cases
Automating iOS and Android application interactions
Running tests on emulators, simulators, or real devices
Coordinating taps and accessibility snapshot-based workflows for mobile apps
โก Developer Benefits
Single interface targeted at both iOS and Android
Structured interaction mechanism for accessibility snapshots and coordinate-based taps
โ ๏ธ Limitations
Documentation provided only describes mobile automation interaction; other capabilities and tool coverage are not specified.
This is an 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.
Works with Claude Code, Codex, Gemini, GitHub Copilot, Antigravity โ or any MCP-compatible client.
Run it against devices on your own machine, or against real iOS and Android devices in the cloud with Mobile Next Cloud โ same tools, no local setup.
๐ฒ 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
๐ Accessibility-first โ fast and cheap: drives apps from the native accessibility tree (no vision model, no image tokens), falling back to screenshots + coordinates only when needed.
๐ฑ One API, every target: the same tools work across iOS and Android โ simulators, emulators, and real devices.
๐ง No platform expertise required: no XCUITest, no Espresso, no per-platform glue โ describe the goal and the agent does it.
๐งฐ Full device control: taps, swipes, and gestures; app install/launch/terminate; screen recording; hardware buttons; deep links; orientation.
๐ Structured, deterministic output: reads real UI elements and extracts structured data, cutting the ambiguity of screenshot-only approaches.
๐ช Device mirroring in Claude Code: for Claude Code running in Ghostty or kitty. Install the plugin and run /mobile-mirror to see the device's live screen in a side pane, then tap, type and press Home/Back without leaving the terminal.
๐ฏ Platform Support
Target
Supported
Setup
iOS Simulator
โ
Xcode + a booted simulator (xcrun simctl)
iOS Real Device
โ
Device connected over USB and trusted
Android Emulator
โ
Android SDK + running emulator (adb)
Android Real Device
โ
adb + USB debugging enabled & authorized
๐ง Available MCP Tools
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 pixels
mobile_get_orientation - Get the current screen orientation of the device
mobile_set_orientation - Change the screen orientation (portrait/landscape)
mobile_fold_device - Fold or unfold a foldable device (iPhone Duo simulators, foldable Android emulators)
mobile_set_location - Override the GPS location reported by the device, or clear the override
mobile_clipboard - Read or replace the device clipboard
Remote Devices (Mobile Next Cloud)
mobile_login_to_cloud_provider - Authenticate this machine with the cloud device provider (browser-based device-code login)
mobile_list_remote_devices - List device models available to reserve from the cloud fleet
mobile_allocate_remote_device - Reserve a physical cloud device for exclusive use
mobile_release_remote_device - Release a reserved cloud device back to the fleet
App Management
mobile_list_apps - List all installed apps on the device
mobile_get_foreground_app - Get the app currently in the foreground
mobile_launch_app - Launch an app using its package name
mobile_terminate_app - Stop and terminate a running app
mobile_install_app - Install an app from file (.apk, .ipa, .app, .zip)
mobile_uninstall_app - Uninstall an app by its package name or bundle ID
Screen Interaction
mobile_take_screenshot - Take a screenshot to understand what's on screen
mobile_save_screenshot - Save a screenshot to a file
mobile_list_elements_on_screen - List UI elements with their coordinates and properties
mobile_click_on_screen_at_coordinates - Click at specific x,y coordinates or on an element by its ref
mobile_double_tap_on_screen - Double-tap at specific coordinates or on an element by its ref
mobile_long_press_on_screen_at_coordinates - Long press at specific coordinates or on an element by its ref
mobile_swipe_on_screen - Swipe in any direction (up, down, left, right)
mobile_start_screen_recording - Start recording the device screen to a video file
mobile_stop_screen_recording - Stop the active screen recording and save the video
Input & Navigation
mobile_type_keys - Type text into focused elements with optional submit
/mobile-mirror [device-id] opens a pane with the device's live screen. Click the picture to tap, type to send keys, and use the Home, Back, App Switch and URL buttons above it. The picture needs a terminal with the kitty graphics protocol, such as kitty or Ghostty.
If you can't use plugins, add only the MCP server with the Claude Code CLI:
bash
claude mcp add mobile-mcp -- npx -y @mobilenext/mobile-mcp@latest
For more information, see the Copilot CLI documentation.
Cursor
Click the button to install:
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.
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".
Kiro
Follow the MCP Servers documentation. For example in .kiro/settings/mcp.json:
Once the server is configured, ask your agent to list devices:
list available devices
You should get back your running simulators, emulators, and connected devices. If you do, Mobile MCP is wired up correctly. If the list is empty, make sure a simulator or emulator is running (see Prerequisites) โ for more help, check the wiki.
โ๏ธ Scale up, use a cloud device
Want to scale to hundreds of devices? Use Mobile MCP in your CI/CD pipeline?
In your Agent, prompt:
text
log in to mobile next cloud and then show me which remote devices are available to me
Streamable HTTP Server Mode
By default, Mobile MCP runs over stdio. To start a Streamable HTTP server instead, use the --listen flag:
bash
npx @mobilenext/mobile-mcp@latest --listen 3000
This binds to localhost:3000. To bind to a specific interface:
Then configure your MCP client to connect to http://<host>:3000/mcp (or https://โฆ/mcp behind TLS). The endpoint accepts Streamable HTTP (POST on /mcp); remote mode is stateless (no session affinity required), which works well with Smithery and other horizontal hosts.
Migration note:--listen previously served the deprecated HTTP+SSE transport on /mcp. Clients must use Streamable HTTP against http(s)://host:port/mcp. The old pure-SSE flow on /mcp is no longer available.
When binding to localhost, Host-header DNS rebinding protection is enabled automatically.
Authorization
To require Bearer token authorization on the HTTP server, set the MOBILEMCP_AUTH environment variable:
When set, all requests must include the header Authorization: Bearer my-secret-token. When unset, the server accepts unauthenticated connections and logs a warning.
๐ ๏ธ How to Use
After adding the MCP server to your IDE/Client, you can instruct your AI assistant to use the available tools.
For example, in Cursor's agent mode, you could use the prompts below to quickly validate, test and iterate on UI interactions, read information from screen, go through complex workflows.
Be descriptive, straight to the point.
โจ Example Prompts
Workflows
You can specify detailed workflows in a single prompt, verify business logic, setup automations. You can go crazy:
Search for a video, comment, like and share it.
code
Find the video called " Beginner Recipe for Tonkotsu Ramen" by Way of
Ramen, click on like video, after liking write a comment " this was
delicious, will make it next Friday", share the video with the first
contact in your whatsapp list.
Download a successful step counter app, register, setup workout and 5-star the app
code
Find and Download a free "Pomodoro" app that has more than 1k stars.
Launch the app, register with my email, after registration find how to
start a pomodoro timer. When the pomodoro timer started, go back to the
app store and rate the app 5 stars, and leave a comment how useful the
app is.
Search in Substack, read, highlight, comment and save an article
code
Open Substack website, search for "Latest trends in AI automation 2025",
open the first article, highlight the section titled "Emerging AI trends",
and save article to reading list for later review, comment a random
paragraph summary.
Reserve a workout class, set timer
code
Open ClassPass, search for yoga classes tomorrow morning within 2 miles,
book the highest-rated class at 7 AM, confirm reservation,
setup a timer for the booked slot in the phone
Find a local event, setup calendar event
code
Open Eventbrite, search for AI startup meetup events happening this
weekend in "Austin, TX", select the most popular one, register and RSVP
yes to the event, setup a calendar event as a reminder.
Check weather forecast and send a Whatsapp/Telegram/Slack message
code
Open Weather app, check tomorrow's weather forecast for "Berlin", and
send the summary via Whatsapp/Telegram/Slack to contact "Lauren Trown",
thumbs up their response.
Schedule a meeting in Zoom and share invite via email
code
Open Zoom app, schedule a meeting titled "AI Hackathon" for tomorrow at
10AM with a duration of 1 hour, copy the invitation link, and send it via
Gmail to contacts "team@example.com".
Running & configuration
Environment variables
Variable
Description
Example
MOBILEMCP_AUTH
Require a Bearer token on the Streamable HTTP server (--listen) โ every request must then send Authorization: Bearer <token>.
MOBILEMCP_AUTH=my-secret-token
MOBILEMCP_DISABLE_TELEMETRY
Disable anonymous usage telemetry.
MOBILEMCP_DISABLE_TELEMETRY=1
MOBILEMCP_ALLOW_UNSAFE_URLS
Allow mobile_open_url to open non-standard URL schemes (blocked by default).
MOBILEMCP_ALLOW_UNSAFE_URLS=1
MOBILEMCP_LEGACY_ROBOT
Use the legacy platform-specific robots for Android devices and physical iOS devices. iOS simulators continue to use mobilecli.
MOBILEMCP_LEGACY_ROBOT=1
Simulators, Emulators, and Real Devices
When launched, Mobile MCP can connect to:
iOS Simulators on macOS/Linux
Android Emulators on Linux/Windows/macOS
iOS or Android real devices (requires proper platform tools and drivers)
Make sure you have your mobile platform SDKs (Xcode, Android SDK) installed and configured properly before running Mobile Next Mobile MCP.
Telemetry
Mobile MCP collects anonymous usage telemetry via PostHog and Scarf. To disable it, set the MOBILEMCP_DISABLE_TELEMETRY environment variable:
Running in "headless" mode on Simulators/Emulators
When you do not have a real device connected to your machine, you can run Mobile MCP with an emulator or simulator in the background.
For example, on Android:
Start an emulator (avdmanager / emulator command).
Run Mobile MCP with the desired flags
On iOS, you'll need Xcode and to run the Simulator before using Mobile MCP with that simulator instance.
xcrun simctl list
xcrun simctl boot "iPhone 16"
๐งฉ Part of Mobile Next
Mobile MCP is one piece of a toolkit for driving real mobile devices:
mobilewright โ "Playwright for mobile." When you're ready to turn agent-driven exploration into repeatable, deterministic tests for iOS and Android, graduate to mobilewright.
mobilecli โ the universal device CLI that Mobile MCP is built on: control devices, simulators, and emulators from the command line or a JSON-RPC API.
Mobile Next Cloud โ the same stack, rented: real iOS and Android devices on demand. Just prompt your agent: log in to mobile next cloud and then show me which remote devices are available to me to get started.
๐ Roadmap
We're continuously improving Mobile MCP. See what we're building next in ROADMAP.md โ priorities are shaped heavily by community feedback, so tell us what you'd like to see.
๐ค Contributing
Contributions are welcome โ code, docs, bug reports, and ideas.
โญ Star the repo โ the easiest way to help others discover Mobile MCP.
Read CONTRIBUTING.md for how to build, test, and open a pull request.
We appreciate everyone who has helped improve this project.
Privacy Policy
Mobile MCP runs locally and communicates only with the devices you connect.
See the Mobile Next privacy policy at https://mobilenext.ai/privacy for data
collection, usage, retention, and contact information.