Skip to content

Release v2.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Jul 14:07

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

After:

xcodebuildmcp simulator build \
  --scheme MyApp \
  --project-path ./MyApp.xcodeproj \
  --configuration Debug

For MCP calls, set configuration: "Debug" (#443, #460 by @hujunfeng).

Added

  • Added xcodebuildmcp purge to 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 extraArgs session defaults for build and test commands, so common xcodebuild flags and build settings can be configured once in project config or the active session. Per-call values override matching defaults, and extraArgs: [] 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 .xctestproducts package, and test tools can run it—or an advanced .xctestrun file—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 suppressWarnings so 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_app app-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 xcodebuildmcp

MCP config:

"XcodeBuildMCP": {
  "command": "xcodebuildmcp",
  "args": ["mcp"]
}

Option B — npm / npx (Node.js 18+)

Install:

npm install -g xcodebuildmcp@latest

MCP config:

"XcodeBuildMCP": {
  "command": "npx",
  "args": ["-y", "xcodebuildmcp@latest", "mcp"]
}

📦 NPM Package: https://www.npmjs.com/package/xcodebuildmcp/v/2.7.0