---
title: "Mobile MCP servers: set up Appium MCP, Maestro MCP and mobile-mcp"
description: "Set up Appium MCP, Maestro MCP and mobile-mcp in Claude Code, Cursor and Codex: install commands, config blocks and what each server can drive."
canonical: "https://momentic.ai/blog/mobile-mcp-server-setup"
last-updated: "2026-10-31T09:50:51Z"
---

# Mobile MCP servers: set up Appium MCP, Maestro MCP and mobile-mcp

URL: https://momentic.ai/blog/mobile-mcp-server-setup

[blog](/blog) [/ resources](/blog/category/resources)  / mobile-mcp-server-setup

Resources

Install and configure the three mobile MCP servers for your coding agent, compare what each one drives, and see where a repeatable test takes over.

Wei-Wei Wu

CEO, Momentic

## TL;DR

- **mobile-mcp** lets a coding agent inspect and control a mobile app during a live session. Reach for it when you need to explore the UI.
- **Appium MCP** gives the agent access through an Appium session. Reach for it when your mobile setup already uses Appium drivers.
- **Maestro MCP** lets the agent work with Maestro’s mobile testing tools. Reach for it when you already use Maestro flows.
- All three can help an agent inspect and drive an app, but an MCP session alone does not leave behind a test that runs in CI.
- For a versioned test, use Momentic’s MCP server to write and run YAML tests. Install the mobile skills with `npx momentic-mobile skills --yes`.

## Appium MCP, Maestro MCP and mobile-mcp compared

All three run as local stdio servers that your coding agent starts with one command. They differ in what they drive and what they leave behind.

| Server | Install | Platforms and targets | What the agent works with | Leaves a test behind? |
| --- | --- | --- | --- | --- |
| <a href="https://github.com/mobile-next/mobile-mcp">mobile-mcp</a> | npx -y @mobilenext/mobile-mcp@latest | iOS and Android: simulators, emulators and real devices | The native accessibility tree, with screenshots and coordinates as a fallback | No. The session lives in the agent's conversation |
| <a href="https://github.com/appium/appium-mcp">Appium MCP</a> | npx -y appium-mcp@latest | Android (UiAutomator2) and iOS (XCUITest): simulators, emulators and real devices | An Appium session: find elements, tap, type, gestures, screenshots | It can generate Java/TestNG test code from a description |
| <a href="https://docs.maestro.dev/getting-started/maestro-mcp">Maestro MCP</a> | maestro mcp (needs the Maestro CLI) | iOS and Android apps, plus web | Maestro commands, so the agent can write, run and debug flows | Yes, when the agent saves the flow as a YAML file |

Pick the one that matches the tooling you already run. If your team has Appium capabilities and drivers set up, Appium MCP reuses them. If you write Maestro flows, Maestro MCP lets the agent write more of them. If you want an agent to poke at an app with no framework at all, mobile-mcp has the least setup.

## Setting up mobile-mcp

Boot an iOS simulator (`xcrun simctl boot "iPhone 16"`) or start an Android emulator first. The project's installer finds the MCP clients on your machine and configures them:

`npx @mobilenext/mobile-mcp@latest install`

To configure each client by hand:

`# Claude Code claude mcp add mobile-mcp -- npx -y @mobilenext/mobile-mcp@latest  # Codex codex mcp add mobile-mcp npx "@mobilenext/mobile-mcp@latest"`

For Cursor, add the server to `~/.cursor/mcp.json` or a project-level `.cursor/mcp.json`:

`{  "mcpServers": {  "mobile-mcp": {  "command": "npx",  "args": ["-y", "@mobilenext/mobile-mcp@latest"]  }  } }`

mobile-mcp drives the app from the native accessibility tree first, so the agent reads element labels instead of spending image tokens on screenshots. It falls back to a screenshot and coordinate taps when an element has no accessible label. It also installs, launches and terminates apps, opens deep links and records the screen.

## Setting up Appium MCP

Appium MCP bundles the UiAutomator2 and XCUITest drivers for local sessions. You still need the platform toolchains: `ANDROID_HOME`, Java and the Android SDK tools for Android, and Xcode with an installed simulator for iOS (macOS only).

`# Claude Code claude mcp add appium-mcp -- npx -y appium-mcp@latest`

For Cursor, and for other clients that take a JSON config:

`{  "mcpServers": {  "appium-mcp": {  "type": "stdio",  "command": "npx",  "args": ["appium-mcp@latest"],  "env": {  "ANDROID_HOME": "/path/to/android/sdk",  "CAPABILITIES_CONFIG": "/path/to/your/capabilities.json"  }  }  } }`

For Codex, the same server goes in `~/.codex/config.toml`:

`[mcp_servers.appium-mcp] command = "npx" args = ["-y", "appium-mcp@latest"] env = { ANDROID_HOME = "/path/to/android/sdk" }`

`CAPABILITIES_CONFIG` points at a JSON file of Appium capabilities, such as `platformName`, `appium:deviceName` and `appium:app`. The agent opens a session with `appium_session_management`, then uses tools such as `appium_find_element`, `appium_gesture` and `appium_set_value`. For a device farm or CI, pass a `remoteServerUrl` and explicit capabilities when the session is created instead of using the local drivers.

## Setting up Maestro MCP

Install the [Maestro CLI](https://docs.maestro.dev/getting-started/installing-maestro) first. The MCP server is a subcommand of it, so there is no separate package.

`# Claude Code claude mcp add maestro -- maestro mcp  # Codex codex mcp add maestro -- maestro mcp`

Or add it to `~/.codex/config.toml` by hand:

`[mcp_servers.maestro] command = "maestro" args = ["mcp"]`

For Cursor, merge this into `~/.cursor/mcp.json`:

`{  "mcpServers": {  "maestro": {  "command": "maestro",  "args": ["mcp"]  }  } }`

This assumes `maestro` is on your `PATH`. If the client starts from a minimal shell, use the full path from `which maestro`. Maestro MCP is the only one of the three that writes into a test format you already run: when the agent saves its work as a flow file, `maestro test` can run it again in CI.

## Where an MCP session stops and a repeatable test starts

A live MCP session can help a coding agent inspect a mobile app and try a user journey, but the session alone does not give CI a test to run. The agent’s observations and next steps remain in its conversation unless the agent writes them into a file. A PR cannot review or rerun a conversation as a test.

For example, an agent might open an order screen and confirm that the latest order appears. To check that behavior after every change, you need a saved test with an assertion and a repeatable run command. Appium and Maestro can support persistent tests, but access through their MCP servers does not, by itself, save the agent’s exploration as one.

Momentic’s [MCP server](/blog/how-to-set-up-momentic-mcp-server) gives a coding agent a way to write, run, and fix tests while keeping the test definition as YAML in your repository. Install the mobile skills and the MCP server for your agent:

`npx momentic-mobile skills --yes npx momentic-mobile install-mcp`

The command equips the agent to work on mobile tests. The agent still needs to turn the behavior it explored into a YAML test and run it. Once you commit that file, reviewers can diff the test in a PR, and CI can invoke it without asking the agent to explore the app again. The MCP server handles the agent interaction. The test file and CI invocation make the check repeatable.

## Running the resulting test in CI

Run `npx momentic-mobile skills --yes` in your project, then use your coding agent and the Momentic MCP server to write and run the mobile test. Review the resulting YAML test and commit it to your repository. CI needs that file, not the agent’s chat history.

Add a pull-request job that builds the app and runs the committed test with the Momentic CLI. Give the job the credentials and simulator or emulator access it needs, then make the job a required status check so a failed test blocks the merge. The CI job runs the committed tests with `npx momentic-mobile run --upload-results`, with `MOMENTIC_API_KEY` set as a CI secret. See the [CLI reference](/docs/cli-reference/momentic-mobile/commands/run) for device and sharding flags.

## Related reading

- How to set up the Momentic MCP server
- Best MCP servers for testing
- Playwright MCP vs. a testing MCP server
- Testing mobile apps in Cursor
- Appium vs. Maestro vs. AI testing

## Frequently asked questions

Can these servers use physical devices?    Appium can drive physical iOS and Android devices when you configure the appropriate drivers and devices. Maestro supports physical devices as well as simulators and emulators. Check the mobile-mcp project’s README before assuming its server supports your device setup. Momentic’s mobile testing uses simulators and emulators, not physical devices.    Can one MCP configuration drive both iOS and Android?    You can register one server, but that does not make both platforms ready to use. You still need the devices and platform-specific tooling that the server requires. With Appium, you also need the appropriate driver for each platform.    How is Momentic’s MCP server different?    The device-control servers let an agent interact with a running app. Momentic’s MCP server lets an agent write, run, and fix end-to-end tests that remain as YAML files in your repository. The separate npx momentic-mobile skills --yes command installs mobile testing skills. Check the [Momentic documentation](/docs) for the current setup.    Must I abandon an existing Appium or Maestro suite?    No. You can keep that suite in CI while adding Momentic tests for behavior you want to cover separately. Do not assume existing test files will run unchanged in Momentic.

Still have additional questions?

## Keep reading.

[Resources   Testing iOS and Android apps with Claude Code     Four ways to test iOS and Android apps with Claude Code, from simctl and adb to XCUITest, Espresso, mobile MCP servers and Momentic mobile tests.     Wei-Wei Wu     12 min read](/blog/claude-code-mobile-app-testing)[Resources   UI and end-to-end testing with OpenAI Codex     How far Codex gets on UI and end-to-end tests, and how AGENTS.md instructions plus a test runner over MCP turn its output into checks you can trust.     Wei-Wei Wu     8 min read](/blog/codex-ui-testing-guide)[Resources   Migrating from Appium to Maestro     How to move an Appium suite to Maestro flows, with a worked login example, a concept map and the cases where Appium is still the better fit.     Wei-Wei Wu     6 min read](/blog/migrate-appium-to-maestro)

## Close the feedback loop.

Point Momentic at your app. Free to start, no credit card.

[Try for free](https://app.momentic.ai/signup) [Contact sales](/sales)
