RunCue
Provides tools for navigating and inspecting the UI of iOS apps on simulators or physical devices using WebDriverAgent. Enables AI agents to perform actions like typing, tapping, and verifying UI state through natural language tasks.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RunCueOpen Maps and search for coffee"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RunCue is a developer UI navigation tool for iOS apps. It uses natural-language tasks to navigate, type, inspect, and verify app UI through WebDriverAgent, with MCP tools designed to work alongside build tools such as XcodeBuildMCP.
RunCue is intentionally scoped: it does not build, install, or debug your app. Use XcodeBuildMCP or your normal Xcode workflow for build, launch, screenshots, and logs. Use RunCue when you need an agent to reach a specific UI state.
Demo
Click the screenshot to open the demo recording.
Related MCP server: app-screen-mcp
Features
WDA-only iOS automation for simulators and physical devices.
MCP tools for coding agents:
runcue_run,runcue_check,runcue_devices, andruncue_doctor.View-tree-first observation with screenshot fallback for WebView, SwiftUI, custom UI, and sparse accessibility trees.
Direct WDA text input through
/keys, avoiding paste-menu workarounds.Planner, locator, executor, and verifier loop for more stable multi-step navigation.
Requirements
macOS with Xcode installed.
Node.js 20 or newer.
A visible iOS Simulator or trusted physical iOS device.
An OpenAI-compatible vision-language model (VLM) API key.
For physical devices, you also need:
Device trust enabled.
Developer Mode enabled.
The device unlocked while running tasks.
WebDriverAgent signing configured through
RUNCUE_WDA_TEAM_IDor RunCue config.
Install
npm install -g runcueFor local development from this repository:
npm install
npm run build
node dist/cli.js --helpConfigure Models
RunCue needs a vision-language model, not a text-only LLM. The provider must be OpenAI-compatible and support image input for visual fallback, visual grounding, and screenshot checks.
Supported wire APIs:
chatusingchat.completionswith text andimage_urlcontent parts. This is the default.responsesusing the OpenAI Responses API withinput_textandinput_image.
The local config file is:
~/.runcue/config.jsonRunCue uses built-in defaults when this file does not exist. The file is created when you run runcue config set ..., or you can create it manually.
Inspect the effective config:
runcue config listSet the default provider:
runcue config set provider my-vlEnvironment variable references such as ${MY_VL_API_KEY} are resolved at runtime. A minimal custom provider looks like this:
{
"vlm": {
"default": "my-vl",
"providers": {
"my-vl": {
"baseUrl": "https://api.example.com/v1",
"model": "your-vl-model",
"apiKey": "${MY_VL_API_KEY}",
"wireApi": "chat",
"inputMode": "viewtree"
}
}
}
}Provider fields:
Field | Required | Meaning |
| Yes | OpenAI-compatible API base URL. |
| Yes | VLM model name accepted by that provider. |
| Yes | API key value or environment reference such as |
| No |
|
| No |
|
| No | Extra HTTP headers to pass to the provider. |
RunCue ships with several built-in provider examples, including DashScope/Qwen VL. They are examples, not a requirement. For example:
export DASHSCOPE_API_KEY="your-dashscope-api-key"
runcue config set provider dashscope-vl-plusQuick Start
List devices:
runcue devicesCheck WDA readiness:
runcue doctor --device "iPhone 17 Pro Simulator" --platform ios-simulatorRun a navigation task:
runcue run "Open Maps, search for the nearest Walmart, and start navigation" \
--device "iPhone 17 Pro Simulator" \
--platform ios-simulator \
--bundle-id com.apple.Maps \
--fresh-app \
--max-steps 10 \
--timeout 120For complex or non-standard app flows, include product-specific UI knowledge in the task or hints, for example:
runcue run "Open Maps, search for the nearest Walmart, and start navigation. In Apple Maps, if there is no normal Start Navigation button, tap the Route Steps item in the route card list to enter navigation." \
--device "iPhone 17 Pro Simulator" \
--platform ios-simulator \
--bundle-id com.apple.Maps \
--fresh-appXcodeBuildMCP + RunCue Workflow
RunCue is designed to cooperate with XcodeBuildMCP instead of replacing it. XcodeBuildMCP owns build, install, launch, screenshots, logs, and Xcode project state. RunCue owns UI navigation and state checks on the same device.
Coding Agent
|
| 1. Build, install, and launch the app
v
XcodeBuildMCP
|
| build_run_sim / launch_app_sim
| returns simulator name or UDID
v
iOS Simulator or Device
|
| 2. Navigate to the target UI state on that same device
v
RunCue MCP / CLI
|
| observe -> plan -> locate -> execute -> verify
| through WebDriverAgent
v
Target App UI State
|
| 3. Capture final evidence when needed
v
XcodeBuildMCP
|
| screenshot / logs / test output
v
Coding AgentPractical rules:
Use XcodeBuildMCP first to prepare the app state.
Pass the exact simulator name or UDID from that build/run flow to RunCue.
Let RunCue perform UI actions while it is running.
Use XcodeBuildMCP again after RunCue finishes for screenshots, logs, or build diagnostics.
MCP Usage
RunCue exposes an MCP server over stdio:
runcue mcpExample Codex MCP configuration:
[mcp_servers.RunCue]
type = "stdio"
command = "runcue"
args = ["mcp"]For a local checkout:
[mcp_servers.RunCue]
type = "stdio"
command = "node"
args = ["/absolute/path/to/RunCue/dist/cli.js", "mcp"]MCP Tools
runcue_run: autonomously navigate a UI flow.runcue_check: inspect the current UI state with a question.runcue_devices: list iOS devices and simulators visible to Xcode.runcue_doctor: diagnose WDA setup and signing issues.
Architecture

The current architecture is WDA-only:
Coding Agent
-> RunCue MCP / CLI
-> Agent loop: planner -> locator -> executor -> verifier
-> WebDriverAgent HTTP API
-> iOS Simulator or physical iOS deviceSee docs/architecture.md for the current architecture and docs/tech-solution-v2.md for the longer design record.
Documentation
Development
npm install
npm run build
npm test
npm_config_cache=/private/tmp/runcue-npm-cache npm pack --dry-runThird-Party Code
RunCue vendors appium-webdriveragent so the CLI can bootstrap WDA without asking users to manually clone a separate project. See THIRD_PARTY_NOTICES.md.
License
RunCue is licensed under the MIT License. See LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/lihei12345/RunCue'
If you have feedback or need assistance with the MCP directory API, please join our Discord server