LabscoMCP early access ↗
kevinswintMCP SERVER

Xcode-Studio-MCP

Builds an Xcode project, launches it on the Simulator, and taps and types through the running app.

by kevinswint ↗Mobile & App Store ReleaseCommunity

LABSCO 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.

Setup effort

Build from source — git clone https://github.com/kevinswint/xcode-studio-mcp.git