Release v2.7.0
New! Xcode 27 Device Hub simulator support
UI automation tools now work fully with Xcode 27 simulators through Device Hub, including simulator window launching and keyboard controls. XcodeBuildMCP targets the selected simulator directly and uses locale-independent menu actions, while maintaining backward compatibility with Simulator.app on earlier Xcode versions.
Breaking
Build and test structured results now use schema version 3
Build and test tools now return schemaVersion: "3" so prepared-test paths can be included in structured results. This affects MCP and CLI JSON consumers that validate xcodebuildmcp.output.build-result or xcodebuildmcp.output.test-result against version 2; consumers that only display or pass through tool results are unaffected.
If no action is taken, validators pinned to version 2 will reject new build and test results. Update them to accept the version 3 schemas, while retaining version 2 support when older XcodeBuildMCP releases remain in use.
Before:
https://xcodebuildmcp.com/schemas/structured-output/xcodebuildmcp.output.build-result/2.schema.json
https://xcodebuildmcp.com/schemas/structured-output/xcodebuildmcp.output.test-result/2.schema.json
After:
https://xcodebuildmcp.com/schemas/structured-output/xcodebuildmcp.output.build-result/3.schema.json
https://xcodebuildmcp.com/schemas/structured-output/xcodebuildmcp.output.test-result/3.schema.json
Unspecified build configurations now follow the scheme
Build, test, clean, and app-path commands now honor the scheme action's configuration when configuration is omitted instead of always using Debug. This fixes incorrect build settings for schemes that use another configuration, but scripts or agents that relied on the implicit Debug selection must now request it explicitly.
Before:
xcodebuildmcp simulator build --scheme MyApp --project-path ./MyApp.xcodeprojAfter:
xcodebuildmcp simulator build \
--scheme MyApp \
--project-path ./MyApp.xcodeproj \
--configuration DebugFor MCP calls, set configuration: "Debug" (#443, #460 by @hujunfeng).
Added
- Added
xcodebuildmcp purgeto inspect and clean workspace storage managed by XcodeBuildMCP. It defaults to the current workspace, supports reports and dry runs, and requires explicit opt-in before removing DerivedData. - Added reusable
extraArgssession defaults for build and test commands, so commonxcodebuildflags and build settings can be configured once in project config or the active session. Per-call values override matching defaults, andextraArgs: []clears them for one call (#463 by @jknlsn). See config.example.yaml. - Added reusable test preparation to simulator, device, and macOS workflows. Build tools can produce a portable
.xctestproductspackage, and test tools can run it—or an advanced.xctestrunfile—without rebuilding while still producing a fresh.xcresult(#450). See CLI examples.
Fixed
- Fixed MCP clients waiting 10–17 seconds for tools to become available, which could make short health checks report a failed connection (#461, #468 by @Pitchfork-and-Torch).
- Fixed simulator commands selecting the wrong platform when a configured simulator is unavailable, especially for projects that support both iOS and visionOS. Setup now ignores unavailable simulators and records the selected platform.
- Fixed simulator and project discovery failures caused by malformed simulator data, projects with shared path prefixes, and compiler diagnostic filenames containing glob characters (#424).
- Fixed
suppressWarningsso warnings are omitted from final build, build-and-run, and test responses as well as live progress (#447, #470 by @JoshKappler). - Fixed multiple edge cases in iOS scaffolding, LLDB sessions, run-destination detection, concurrent operations, and physical-device name lookup that could produce incorrect project settings, mixed debugger output, missing destinations, or blocked responses (#459).
- Fixed
stop_mac_appapp-name targeting so it no longer terminates unrelated processes whose later command-line arguments contain the app name, and rejects unsafe process IDs before execution (#306). - Fixed incremental builds with absolute DerivedData paths, long configuration arguments, changed build settings, or updated project files so generated build data is reused only when it is still valid (#466).
- Fixed security risks by preventing environment-derived values from being interpreted as shell commands, verifying downloaded incremental-build tooling before execution, and restricting CI and release workflows to read-only repository access.
Various other internal improvements to stability, performance, and code quality.
Option A — Homebrew (no Node.js required)
Install:
brew tap getsentry/xcodebuildmcp
brew install xcodebuildmcpMCP config:
"XcodeBuildMCP": {
"command": "xcodebuildmcp",
"args": ["mcp"]
}Option B — npm / npx (Node.js 18+)
Install:
npm install -g xcodebuildmcp@latestMCP config:
"XcodeBuildMCP": {
"command": "npx",
"args": ["-y", "xcodebuildmcp@latest", "mcp"]
}📦 NPM Package: https://www.npmjs.com/package/xcodebuildmcp/v/2.7.0