MobAI MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List all connected Android and iOS devices |
| get_deviceB | Get details about a specific device |
| start_bridgeA | Start the automation bridge on a device. Required before interacting with the device. |
| stop_bridgeC | Stop the automation bridge on a device |
| get_screenshotA | Capture a fast, low-quality screenshot for LLM visual analysis. Returns the file path to the saved image. The image may be downscaled by an integer factor so its long edge stays ≤ 2000px; when that happens the response includes a scale factor — multiply any coordinates you read off the image by that factor before using them in device actions (tap, swipe, drag, long-press, etc.). UI tree coordinates are already in device pixels, do not scale those. Use this for AI/LLM processing only — for full-quality screenshots use save_screenshot instead. |
| save_screenshotA | Save a full-quality PNG screenshot to disk. Use this when you need a high-quality image for reporting, debugging, or sharing — not for LLM processing (use get_screenshot instead). |
| debug_appA | Launch an app in debug mode and write logs to a file. Returns the log file path — use Read/Grep to inspect logs. Use kill_app to stop. |
| list_appsA | List installed apps on the device |
| install_appA | Install an app on the device from a local file path (.apk for Android, .ipa for iOS) |
| uninstall_appB | Uninstall an app from the device |
| execute_dslA | Execute a batch of DSL commands on a device. This is the primary tool for all device interaction — tap, type, swipe, observe, launch apps, assertions, web automation, and more. You MUST read the MCP resource mobai://reference/device-automation to learn how to control devices before using this tool. Input: JSON string with "version": "0.2" and "steps" array. Example: {"version":"0.2","steps":[ {"action":"open_app","bundle_id":"com.apple.Preferences"}, {"action":"tap","predicate":{"text_contains":"Wi-Fi"}}, {"action":"wait_for","predicate":{"type":"switch"},"timeout_ms":3000} ]} |
| test_get_activeA | Get the currently active test project directory and its .mob test cases. Use this to discover the project path and available tests. The agent can then read/write/create/delete .mob files directly in the returned directory. |
| test_list_projectsA | List all known test project directories with their .mob test cases. Each project is a directory containing .mob script files. |
| test_runB | Run a .mob test case on a device. The case_path is relative to the project directory. Pass params to supply values for ${name} substitution in the script. |
| debug_attachA | Start a debug session for an iOS app. Provide either bundle_id (launches and attaches) or pid (attaches to a running process). Optional breakpoints[] are armed before the target resumes. Read mobai://reference/debugging first. |
| debug_stateA | Query the current debug session. Returns {state, breakpoints} by default. Set include_stack=true to also fetch the stack of the stopped thread; include_vars=true to also fetch frame[0] locals; include_threads=true to enumerate all threads. |
| debug_breakpointA | Add or remove a breakpoint in the active debug session. For action=add provide spec; for action=remove provide id. |
| debug_evalA | Evaluate a Swift/ObjC expression at the current pause. Session must be paused. Examples: "p defaultPrivate", "po self.viewModel.user.email", "frame variable". |
| debug_stepA | Advance the target. "in" — step into next call (blocks ~ms, returns {state, breakpoints, stack, frame0_locals}) "over" — step over next call (same shape) "out" — run until current frame returns (same shape) "continue" — resume until next breakpoint (fire-and-forget; returns just {state, breakpoints} — poll debug_state for next stop) |
| debug_detachA | End the debug session. Pass kill=true to terminate the debuggee; otherwise it keeps running. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Device Automation Reference | How to control Android and iOS devices — guide, all actions, predicates, and failure strategies |
| Testing Reference | Testing workflow, rules, error fixes, and .mob script syntax for test generation |
| Claude Code Preview Setup | How to preview a MobAI device's control UI inside Claude Code's preview panel |
| App Debugging Reference | How to attach lldb, set breakpoints, inspect stack/variables, evaluate Swift/ObjC expressions — read before any debug_* tool |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MobAI-App/mobai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server