Skip to content

perf(xcode-ide): switch MCP to gateway tools and unblock handshake#223

Merged
cameroncooke merged 8 commits intomainfrom
codex/xcode-ide-gateway-handshake
Feb 15, 2026
Merged

perf(xcode-ide): switch MCP to gateway tools and unblock handshake#223
cameroncooke merged 8 commits intomainfrom
codex/xcode-ide-gateway-handshake

Conversation

@cameroncooke
Copy link
Collaborator

Switches MCP xcode-ide integration from startup-time proxied tool merging to manifest-managed gateway tools, so server initialization no longer blocks on Xcode bridge tool discovery.

This change keeps runtime manifest loading intact, keeps CLI xcode-ide behavior unchanged, and introduces two MCP tools in the xcode-ide workflow:

  • xcode_ide_list_tools
  • xcode_ide_call_tool

Both tools are predicate-gated with xcodeToolsAvailable (same pattern as existing bridge debug tools), and execute bridge list/call at tool runtime with bounded timeout/error normalization instead of during MCP bootstrap.

To reduce handshake latency further without feature loss, bootstrap also defers non-contract-critical work (Xcode state watcher/sync and Sentry shell-heavy enrichment) until after connect. Startup profiling instrumentation and before/after reports were added, with docs/changelog/test updates reflecting the new MCP contract.

Alternatives considered:

  • Keep startup-time bridge tools/list merge: rejected because it can hang/fail handshake on Xcode approval/connect latency.
  • Aggressive startup timeout race for merge: rejected as nondeterministic and likely to hide proxied tools for many users.

Refs #210

@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 13, 2026

Open in StackBlitz

npm i https://pkg.pr.new/getsentry/XcodeBuildMCP/xcodebuildmcp@223

commit: d68c1c3

@cameroncooke cameroncooke marked this pull request as ready for review February 13, 2026 22:26
cameroncooke and others added 3 commits February 14, 2026 00:06
Add manifest-managed xcode_ide_list_tools and xcode_ide_call_tool for MCP xcode-ide access. Keep runtime manifest loading and CLI xcode-ide behavior unchanged.

Remove handshake-time bridge tool sync from MCP startup and defer non-critical Xcode state and Sentry enrichment work until after connect to reduce startup latency.

Include before/after profiling reports and startup stage instrumentation to measure handshake-path costs and validate improvements.

Fixes #210

Co-Authored-By: Claude <noreply@anthropic.com>
Ignore the .claude directory and remove tracked .claude files from the repository index so local agent config is no longer versioned.

Refs #210

Co-Authored-By: Claude <noreply@anthropic.com>
@cameroncooke cameroncooke force-pushed the codex/xcode-ide-gateway-handshake branch from edc2527 to cdd4141 Compare February 14, 2026 00:07
De-duplicates nearly identical error classification logic from
StandaloneXcodeToolsBridge and XcodeToolsBridgeManager into a single
exported function in core.ts with an optional connected parameter.
cameroncooke and others added 2 commits February 15, 2026 20:27
Remove xcodeToolsActive/xcodeToolsAvailable from predicate context and
remove the unused requiresXcodeTools/xcodeToolsAvailable predicates.

This simplifies runtime visibility evaluation and avoids carrying bridge
availability state in the core exposure path. Update tests and manifest
docs to match the active predicate surface.

Co-Authored-By: Claude <noreply@anthropic.com>
Serialize bridge tools through an explicit allowlist in standalone mode
to match manager output and avoid leaking new enumerable SDK fields
if the Tool type changes.

Co-Authored-By: Claude <noreply@anthropic.com>
Copy link
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Extract shared bridge handler lookup so xcode-ide tools follow one path\nfor bridge availability and fallback behavior.\n\nExtract shared remote tool serialization used by both manager and\nstandalone bridge implementations to reduce duplication and drift.\n\nUpdate bridge tool tests/mocks to align with shared exports and keep\ncoverage around standalone fallback behavior.

Co-Authored-By: Claude <noreply@anthropic.com>
@cameroncooke cameroncooke merged commit 174725a into main Feb 15, 2026
11 checks passed
@cameroncooke cameroncooke deleted the codex/xcode-ide-gateway-handshake branch February 15, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant