Summary
One server for the whole iOS loop.
Build errors come back as structured fields rather than a wall of xcodebuild output, and the accessibility tree means a control can be found by name instead of by guessing pixels from a screenshot. What a change looks like on screen is checkable in the same session that compiled it.
What it is
A Swift MCP server, shipped as a single binary, covering the iOS loop end to end: build, run on the Simulator, screenshot, and interact with what is on screen.
What you get
- An Xcode project, workspace or directory built with structured errors carrying file, line, column, severity and message (xcode_build)
- The app built and launched on the iOS Simulator by bundle identifier (xcode_run)
- The Simulator screen captured as a PNG (simulator_screenshot)
- Taps at x,y coordinates with an optional hold duration for long presses, and text typed into the focused field (simulator_tap, simulator_type)
- The current screen's accessibility tree returned as JSON (simulator_describe)
- Scheme and target simulator auto-detected when you leave them out
Requirements
macOS with Xcode and the iOS Simulator. A single Swift binary, so no Node or Python runtime is involved.
