Source Code
Xcodebuildmcp
Overview
Use the xcodebuildmcp toolset to build/run/test apps, manage simulators/devices, automate UI, and capture logs/screen media. Default to a safe, repeatable flow: discover β set defaults β execute β verify.
Prereqs & MCP Setup
This skill assumes the XcodeBuildMCP server is installed and exposed to your MCP client so the tools appear (e.g., mcp__xcodebuildmcp__build_run_sim). If the tools are missing, follow the setup steps in:
references/mcp-setup.md(requirements + MCP client config examples)
Example Requests
- "Build and run the iOS app on the latest simulator and take a screenshot."
- "Run unit tests on the simulator and share the failing test logs."
- "Open the simulator, navigate to Settings, and toggle Dark Mode."
- "Install and launch the app on my connected iPhone."
Quick Start (common flow)
Discover the project/workspace and schemes:
mcp__xcodebuildmcp__discover_projsmcp__xcodebuildmcp__list_schemes
Set session defaults (so subsequent tools donβt need repeated params):
mcp__xcodebuildmcp__session-set-defaults(workspacePath/projectPath, scheme, simulatorId/deviceId)
Run the task:
- Build/run:
mcp__xcodebuildmcp__build_run_simormcp__xcodebuildmcp__build_run_macos - Tests:
mcp__xcodebuildmcp__test_sim/mcp__xcodebuildmcp__test_macos/mcp__xcodebuildmcp__test_device
- Build/run:
Verify and gather evidence:
mcp__xcodebuildmcp__screenshot(sim)mcp__xcodebuildmcp__start_sim_log_capβmcp__xcodebuildmcp__stop_sim_log_cap
Task Index
- Build/Run: iOS simulator, macOS, device installs
- Testing: simulator/macOS/device
- Simulator management: list/boot/erase/appearance/location/gestures
- UI automation: describe UI β tap/type/swipe/gesture
- Logs & debugging: sim logs, device logs, LLDB attach/breakpoints
- Media: screenshots, screen recording
Load references/workflows.md for detailed step-by-step sequences and command patterns.
Operating Rules
- Always call
mcp__xcodebuildmcp__describe_uibefore coordinate-based taps/swipes/long-press. - Prefer
mcp__xcodebuildmcp__session-set-defaultsearly to reduce parameter noise. - If user didnβt specify target device/simulator, list options and ask (or pick a sensible default with
useLatestOS). - Avoid destructive actions (erase sims, clean) unless the user asked for them.