MCPcopy
hub / github.com/mobile-next/mobile-mcp

github.com/mobile-next/mobile-mcp @0.0.59 sqlite

repository ↗ · DeepWiki ↗ · release 0.0.59 ↗
273 symbols 641 edges 20 files 18 documented · 7%
README

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.

Mobile Next Stars npm Install in VS Code wiki join on Slack

https://github.com/user-attachments/assets/bb084777-beb3-4930-ae6f-8d3fe694ddde

<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>

🚀 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.

👉 Explore the Roadmap

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

📱 Click to expand tool list - List of Mobile MCP tools for automation and development

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 pixels
  • mobile_get_orientation - Get the current screen orientation of the device
  • mobile_set_orientation - Change the screen orientation (portrait/landscape)

App Management

  • mobile_list_apps - List all installed apps on the device
  • 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 using bundle ID or package name

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
  • mobile_double_tap_on_screen - Double-tap at specific coordinates
  • mobile_long_press_on_screen_at_coordinates - Long press at specific coordinates
  • mobile_swipe_on_screen - Swipe in any direction (up, down, left, right)

Input & Navigation

  • mobile_type_keys - Type text into focused elements with optional submit
  • mobile_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

<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>

📚 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"]
    }
  }
}

Amp

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@latest

Cline

To setup Cline, just add the json above to your MCP settings file.

More in our wiki

Claude Code

Use the Claude Code CLI to add the Mobile MCP server:

claude mcp add mobile-mcp -- npx -y @mobilenext/mobile-mcp@latest

Claude Desktop

Follow the MCP install guide, use json configuration above.

Codex

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.

Copilot

Use the Copilot CLI to interactively add the Mobile MCP server:

/mcp add

You 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.

Cursor

Click the button to install:

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.

Gemini CLI

Use the Gemini CLI to add the Mobile MCP server:

gemini mcp add mobile-mcp npx -y @mobilenext/mobile-mcp@latest

Goose

Click the button to install:

Install in Goose

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".

Kiro

Follow the MCP Servers documentation. For example in .kiro/settings/mcp.json:

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

opencode

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
    }
  }
}

Qodo Gen

Open Qodo Gen chat panel in VSCode or IntelliJ → Connect more tools → + Add new MCP → Paste the standard config above.

Click Save.

Windsurf

Open Windsurf settings, navigate to MCP servers, and add a new server using the command type with:

npx @mobilenext/mobile-mcp@latest

Or add the standard config under mcpServers in your settings as shown above.

Read more in our wiki! 🚀

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 3000

This binds to localhost:3000. To bind to a specific interface:

npx @mobilenext/mobile-mcp@latest --listen 0.0.0.0:3000

Then 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 3000

When set, all requests must include the header Authorization: Bearer my-secret-token.

🛠️ 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 intereactions, read information from screen, go through complex workflows. Be descriptive, straight to the point.

✨ Example Prompts

Workflows

You can specifiy detailed workflows in a single prompt, verify business logic, setup automations. You can go crazy:

Search for a video, comment, like and share it.

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

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

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

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

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 foreca

Extension points exported contracts — how you extend this code

Robot (Interface)
(no doc) [8 implementers]
src/robot.ts
MobilecliCrashEntry (Interface)
(no doc)
src/mobilecli.ts
Simulator (Interface)
(no doc)
src/iphone-simulator.ts
PngDimensions (Interface)
(no doc)
src/png.ts
ListCommandOutput (Interface)
(no doc)
src/ios.ts
InstalledAppsResponse (Interface)
(no doc)
src/mobile-device.ts
SourceTreeElementRect (Interface)
(no doc)
src/webdriver-agent.ts
AndroidDevice (Interface)
(no doc)
src/android.ts

Core symbols most depended-on inside this repo

adb
called by 31
src/android.ts
tool
called by 25
src/server.ts
getRobotFromDevice
called by 19
src/server.ts
trace
called by 18
src/logger.ts
getElementsOnScreen
called by 16
src/robot.ts
runCommand
called by 16
src/mobile-device.ts
wda
called by 13
src/iphone-simulator.ts
wda
called by 13
src/ios.ts

Shape

Method 184
Interface 34
Function 31
Class 24

Languages

TypeScript100%

Modules by API surface

src/android.ts46 symbols
src/ios.ts41 symbols
src/iphone-simulator.ts29 symbols
src/robot.ts27 symbols
src/mobile-device.ts27 symbols
src/webdriver-agent.ts26 symbols
src/mobilecli.ts23 symbols
src/image-utils.ts20 symbols
src/server.ts12 symbols
src/utils.ts7 symbols
src/png.ts5 symbols
test/iphone-simulator.ts3 symbols

Dependencies from manifests, versioned

@eslint/eslintrc3.2.0 · 1×
@eslint/js9.19.0 · 1×
@modelcontextprotocol/sdk1.26.0 · 1×
@playwright/test1.49.0 · 1×
@stylistic/eslint-plugin3.0.1 · 1×
@types/commander2.12.0 · 1×
@types/express5.0.3 · 1×
@types/node22.13.10 · 1×
@typescript-eslint/eslint-plugin8.28.0 · 1×
@typescript-eslint/parser8.26.1 · 1×
@typescript-eslint/utils8.26.1 · 1×
ajv8.18.0 · 1×

For agents

$ claude mcp add mobile-mcp \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact