PluginBench
MCP Server
Active
Apache-2.0

io.github.MobAI-App/mobai-mcp MCP Server

io.github.MobAI-App/mobai-mcp

AI-powered mobile device automation for Android and iOS via MCP, controlled through a single DSL interface.

What is the io.github.MobAI-App/mobai-mcp MCP server?

The MobAI MCP server enables AI assistants to automate Android and iOS devices, emulators, and simulators through the Model Context Protocol. It provides a DSL-first interface for device control, app management, screenshots, and test execution, requiring the MobAI desktop app running locally.

MobAI MCP lets Claude, Cursor, and other MCP-compatible AI tools interact with mobile devices by executing batched automation scripts. Instead of fine-grained tools, it uses a single `execute_dsl` tool that accepts JSON scripts with actions (tap, swipe, type), predicates, assertions, waits, and conditional logic. This reduces round-trips and encodes retry strategies server-side. Use it to automate mobile testing, app interaction, UI verification, and mobile workflows.

How to install io.github.MobAI-App/mobai-mcp

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mobai-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mobai-mcp"
      ]
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "mobai-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mobai-mcp"
      ]
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mobai-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mobai-mcp"
      ]
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "mobai-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "mobai-mcp"
      ]
    }
  }
}
Claude Code
claude mcp add mobai-mcp -- npx -y mobai-mcp

Tools & capabilities

Tools this server exposes to the agent.

  • list_devicesList all connected Android and iOS devices
  • get_deviceGet details about a specific device
  • start_bridgeStart the automation bridge on a device (required before interaction)
  • stop_bridgeStop the automation bridge
  • get_screenshotFast, low-quality screenshot for LLM visual analysis (may be downscaled; response includes scale factor)
  • save_screenshotFull-quality PNG to disk for reporting, debugging, or sharing
  • list_appsList installed apps on the device
  • install_appInstall an .apk or .ipa from a local file path
  • uninstall_appUninstall an app by bundle ID / package name
  • debug_appLaunch an app in debug mode and write stdout/stderr to a log file
  • execute_dslPrimary tool. Execute a batch of DSL steps: tap, type, swipe, observe, assertions, web automation, metrics, screen recording, and more.
  • test_get_activeGet the active test project directory and its .mob cases
  • test_list_projectsList all known test project directories with their .mob cases
  • test_runRun a .mob test case on a device (project_dir + case_path + device_id, optional params for ${name} substitution)

Use cases

  • Automate mobile app testing workflows by executing batched DSL scripts with assertions and conditional logic
  • Control Android and iOS devices to perform UI interactions (tap, swipe, type) and verify app behavior
  • Manage mobile apps: install, uninstall, launch in debug mode, and capture screenshots for analysis
  • Run .mob test files on connected devices with parameter substitution and live test discovery
  • Verify mobile UI elements exist and match expected state using predicates and assertions

io.github.MobAI-App/mobai-mcp MCP server FAQ

What is the MobAI MCP server?

MobAI MCP is a server that lets AI assistants (Claude, Cursor, etc.) automate Android and iOS devices, emulators, and simulators. It uses a single DSL-based tool (`execute_dsl`) to batch mobile interactions, reducing round-trips and encoding retry logic server-side.

Is MobAI MCP free?

The MCP server itself is open-source (Apache 2.0). However, it requires the MobAI desktop app, which you can download from https://mobai.run/download. Check MobAI's pricing for desktop app usage.

How do I install MobAI MCP in Cursor?

Add to `.cursor/mcp.json`: {"mcpServers": {"mobai": {"command": "npx", "args": ["-y", "mobai-mcp"]}}}

How do I install MobAI MCP in Claude Code?

Run: `claude mcp add mobai -- npx -y mobai-mcp`

What are the prerequisites?

Node.js 18+, the MobAI desktop app running locally (HTTP API on 127.0.0.1:8686), and a connected Android or iOS device, emulator, or simulator.

Do I need authentication?

No API key is required. The server communicates with the MobAI desktop app via local HTTP (127.0.0.1:8686). You must have the desktop app installed and running.

README (reference)

Source of truth, from the repository.

MobAI MCP Server

npm version License

MCP (Model Context Protocol) server for MobAI — AI-powered mobile device automation. Lets AI assistants (Claude Code, Cursor, Windsurf, Cline, and other MCP-compatible tools) control Android and iOS devices, emulators, and simulators via a single DSL-first interface.

How it works

All device interaction is batched through one primary tool: execute_dsl. Instead of exposing dozens of fine-grained tools (tap, swipe, type…), the server accepts a JSON script describing a sequence of actions with predicates, assertions, waits, and conditional branches. This keeps round-trips low and encodes retry/failure strategies server-side.

A small set of companion tools handles device discovery, screenshots, app management, and running .mob test files.

Prerequisites

  • Node.js 18+
  • MobAI desktop app running locally (HTTP API on 127.0.0.1:8686)
  • A connected Android or iOS device, emulator, or simulator

Installation

Claude Code

claude mcp add mobai -- npx -y mobai-mcp

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "mobai": {
      "command": "npx",
      "args": ["-y", "mobai-mcp"]
    }
  }
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "mobai": {
      "command": "npx",
      "args": ["-y", "mobai-mcp"]
    }
  }
}

Windsurf / Cline / other MCP clients

The server speaks stdio — use your client's generic MCP configuration:

{
  "command": "npx",
  "args": ["-y", "mobai-mcp"]
}

Tools

Device management

ToolDescription
list_devicesList all connected Android and iOS devices
get_deviceGet details about a specific device
start_bridgeStart the automation bridge on a device (required before interaction)
stop_bridgeStop the automation bridge

Screenshots

ToolDescription
get_screenshotFast, low-quality screenshot for LLM visual analysis (may be downscaled; response includes scale factor)
save_screenshotFull-quality PNG to disk for reporting, debugging, or sharing

Apps

ToolDescription
list_appsList installed apps on the device
install_appInstall an .apk or .ipa from a local file path
uninstall_appUninstall an app by bundle ID / package name
debug_appLaunch an app in debug mode and write stdout/stderr to a log file

Automation

ToolDescription
execute_dslPrimary tool. Execute a batch of DSL steps: tap, type, swipe, observe, assertions, web automation, metrics, screen recording, and more.

Test management

Tests are .mob files on disk inside project directories. You read, write, and edit them directly using your assistant's filesystem tools — MobAI watches for changes and updates the UI live. MCP is only needed to discover projects and run tests.

ToolDescription
test_get_activeGet the active test project directory and its .mob cases
test_list_projectsList all known test project directories with their .mob cases
test_runRun a .mob test case on a device (project_dir + case_path + device_id, optional params for ${name} substitution)

Resources

Read these before attempting any device interaction — they describe the DSL schema, action set, predicates, failure strategies, and .mob syntax.

URIPurpose
mobai://reference/device-automationHow to control devices — guide, all DSL actions, predicates, and failure strategies
mobai://reference/testingTesting workflow, rules, error fixes, and .mob script syntax

Example

Open the iOS Settings app, navigate to Wi-Fi, and verify the toggle exists:

{
  "version": "0.2",
  "steps": [
    {"action": "open_app", "bundle_id": "com.apple.Preferences"},
    {"action": "wait_for", "predicate": {"text": "Settings"}, "timeout_ms": 3000},
    {"action": "tap", "predicate": {"text_contains": "Wi-Fi"}},
    {"action": "wait_for", "predicate": {"type": "switch"}, "timeout_ms": 3000},
    {"action": "assert_exists", "predicate": {"type": "switch"}},
    {"action": "observe", "include": ["ui_tree"]}
  ]
}

Pass this as the commands argument (a JSON string) to execute_dsl along with a device_id from list_devices.

Troubleshooting

"Connection refused" / "Could not reach the MobAI desktop app" — Make sure the MobAI desktop app is installed and running, and the API is reachable at http://127.0.0.1:8686. If you don't have it yet, download and install it from https://mobai.run/download.

"Bridge not running" — Call start_bridge first. The iOS bridge can take up to a minute to come up.

Screenshots not visibleget_screenshot saves to /tmp/mobai/screenshots/ by default and returns the file path. Use your assistant's file-reading capability to view them. DSL observe screenshots are extracted from the response and saved to the same directory.

Development

git clone https://github.com/MobAI-App/mobai-mcp.git
cd mobai-mcp
npm install
npm run build
node dist/index.js

License

Apache 2.0 — see LICENSE.

Related MCP servers

Give your AI agent stealth web scraping with Cloudflare bypass and CSS selection, powered by Scrapling.

67k
Python
BSD-3-Clause
View repository →

Give your AI coding agent full control of a live Chrome browser for automation, debugging, and performance analysis.

45k
TypeScript
Apache-2.0
View repository →

Let AI agents manage your Puter files, websites, and serverless workers over MCP.

43k
TypeScript
AGPL-3.0
View repository →

Browser automation for AI agents via MCP, powering ByteDance's Agent TARS hybrid GUI/DOM browser control.

37k
TypeScript
Apache-2.0
View repository →

Run arbitrary shell commands from an MCP-connected AI agent.

37k
TypeScript
Apache-2.0
View repository →

Filesystem access MCP server from ByteDance's UI-TARS/Agent TARS ecosystem.

37k
TypeScript
Apache-2.0
View repository →