Python wrapper that makes Xcode's MCP bridge compatible with strict MCP clients like Cursor
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
A Python wrapper that makes Xcode 26.3's MCP bridge compatible with Cursor and other strict MCP-spec-compliant clients.
Xcode's mcpbridge returns tool responses in the content field but omits the required structuredContent field when a tool declares an outputSchema. According to the MCP specification, when outputSchema is declared, responses must include structuredContent.
mcpbridge-wrapper intercepts responses from xcrun mcpbridge and copies the data from content into structuredContent, making Xcode's MCP tools fully compatible with all MCP clients.
β οΈ Important: You MUST enable Xcode Tools MCP in Xcode settings:
- Open Xcode > Settings (β,)
- Select Intelligence in the sidebar
- Under Model Context Protocol, toggle Xcode Tools ON
If you see "Found 0 tools" in your MCP client logs, this setting is not enabled.
If you use Cursor, no installation is needed β just add this to ~/.cursor/mcp.json:
Broker mode (Recommended):
With Web UI dashboard (optional β adds real-time monitoring at http://localhost:8080):
Direct mode (Alternative):
If you upgrade and want to confirm the currently running dashboard process version:
If needed, do a one-time refresh start:
Restart Cursor and you're done. For other clients or installation methods, read on.
Broker mode lets multiple short-lived MCP client sessions share one persistent upstream bridge session.
170721057). Reusing one long-lived upstream session via broker mode can reduce reconnect churn that surfaces this prompt pattern. See Apple's official Xcode 26.4 release notes.--broker to auto-detect β connect if daemon is alive, spawn otherwise (recommended).--web-ui (plus optional --web-ui-config) when you want the spawned or daemon host to own one shared dashboard endpoint.--broker-daemon --web-ui once, keep clients on --broker, and attach the browser dashboard and/or --tui to that host.Quick migration examples:
After upgrading, stop the old singleton daemon once so the next --broker client
starts the new package version:
For full start/stop/status commands, Cursor JSON snippets, troubleshooting, and rollback to direct mode, see Broker Mode Guide.
When you run multiple MCP client processes at the same time:
--broker-daemon --web-ui process, keep every editor/client on --broker, and attach the browser dashboard and/or mcpbridge-wrapper --tui to the same host.--broker --web-ui --web-ui-config <shared-path> when you want less setup and can accept implicit host ownership.host:port (for example 127.0.0.1:8080).--broker reuses it and does not retrofit dashboard settings onto that existing host.mcpbridge-wrapper --broker-status, the files under ~/.mcpbridge_wrapper/, and the shared dashboard/TUI state to verify that both editors are attached to one daemon.See Broker Mode Guide, Web UI Setup Guide, and Troubleshooting.
If you plan to run make install, pytest, or other development commands, create and activate a virtual environment first. This avoids Homebrew Python's externally-managed-environment (PEP 668) error.
Quick checks:
Both should point to .venv/bin/... while the environment is active.
The fastest way to install is using uvx (requires uv to be installed):
Or add to your MCP client configuration directly (see configuration sections below).
If your MCP client supports the MCP Registry:
Server name: io.github.SoundBlaster/xcode-mcpbridge-wrapper
Then use mcpbridge-wrapper or xcodemcpwrapper command.
The install script creates a virtual environment, installs the package, and places a wrapper at ~/bin/xcodemcpwrapper.
If you plan to use --web-ui MCP args, install Web UI extras explicitly:
Add the following to your ~/.bashrc or ~/.zshrc:
Then reload:
For development or if you want to run directly from the cloned repository:
The entry point is .venv/bin/mcpbridge-wrapper. Use the full absolute path when configuring MCP clients (see configuration sections below).
To remove xcodemcpwrapper from your system:
Options:
--dry-run or -n: Show what would be removed without removing--yes or -y: Skip confirmation promptBroker setup examples are listed first.
Using uvx in broker mode (Recommended):
Using uvx in broker mode with Web UI (Optional):
Using uvx in direct mode:
Using uvx in direct mode with Web UI (Optional):
Using manual installation (Direct mode):
Using manual installation with Web UI (Direct mode, optional):
Requires installing with
./scripts/install.sh --webui(or equivalent.[webui]dependencies).
Using local development (venv, direct mode):
Using local development with Web UI (Direct mode, optional):
Broker setup examples are listed first.
Using uvx in broker mode (Recommended):
Using uvx in broker mode with Web UI (Optional):
Using uvx in direct mode:
Using uvx in direct mode with Web UI (Optional):
Using manual installation (Direct mode):
Using manual installation with Web UI (Direct mode, optional):
Requires installing with ./scripts/install.sh --webui (or equivalent .[webui] dependencies).
Using local development (venv, direct mode):
Using local development with Web UI (Direct mode, optional):
Broker setup examples are listed first.
Using uvx in broker mode (Recommended):
Using uvx in broker mode with Web UI (Optional):
Using uvx in direct mode:
Using uvx in direct mode with Web UI (Optional):
Using manual installation (Direct mode):
Using manual installation with Web UI (Direct mode, optional):
Requires installing with ./scripts/install.sh --webui (or equivalent .[webui] dependencies).
Using local development (venv, direct mode):
Using local development with Web UI (Direct mode, optional):
Using uvx (Recommended):
Edit ~/.zed/settings.json:
Using uvx with Web UI (Optional):
Using manual installation:
Using manual installation with Web UI (Optional):
Requires installing with ./scripts/install.sh --webui (or equivalent .[webui] dependencies).
Using local development (venv, direct mode):
Using local development with Web UI (Direct mode, optional):
Using uvx (Recommended):
Edit ~/.kimi/mcp.json:
Using manual installation:
Once configured, ask your AI assistant to use Xcode tools:
The wrapper includes an optional Web UI dashboard for real-time monitoring and audit logging:
Features:
Open http://localhost:8080 in your browser to view the dashboard.
Important for multi-agent setups:
mcpbridge.host:port can have only one listener; additional processes on the same port skip dashboard startup and continue MCP traffic.--broker-daemon --web-ui, then monitor that same host from the browser dashboard and/or mcpbridge-wrapper --tui.See Web UI Setup Guide for detailed configuration.
xcrun mcpbridge process (on first launch or after a daemon restart), Xcode shows a per-process "Allow Connection?" dialog. If your MCP client sends tools/list before Xcode grants approval, it receives an empty list and caches it permanently β showing 0 tools with a green connected indicator and no error message. Each unique binary path (direct wrapper vs broker daemon) triggers a separate dialog. After approval the permission persists β no re-approval is needed on subsequent sessions. Workaround: watch for the Xcode dialog immediately after enabling broker mode; after clicking Allow, reload the MCP connection in your client (disable β re-enable in settings). See Troubleshooting: 0 tools after first broker connection for client-specific recovery steps and the diagnostic command.--broker reuses one live daemon per local user, including uvx --from mcpbridge-wrapper mcpbridge-wrapper --broker clients. The first client that auto-spawns the daemon determines the Python host identity Xcode sees; for the most stable permission identity, start a dedicated broker host from a fixed path or set MCPBRIDGE_WRAPPER_BROKER_HOST_CMD before auto-spawn.structuredContent expectations in strict MCP clients.--web-ui-port (for example 8080), producing address already in use.resources/list and resources/templates/list probing may return non-standard error shapes in some client paths.resources/list and resources/templates/list; -32601 ("unknown method") on those two calls does not mean tool connectivity is broken. Validate health with an actual Xcode tool call (for example XcodeListWindows).--broker) and validate with XcodeListWindows.mcpbridge-wrapper normalizes Xcode MCP responses, but it does not control Codex App internals. Codex App transport/session behavior may change independently from Codex CLI and from this wrapper. If App and CLI differ, treat that as client-specific behavior first and verify with exact versions, config, and logs.
See CONTRIBUTING.md for development setup and contribution guidelines.
Quick quality gate check:
Or run all gates:
MIT License - see LICENSE for details.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/xcode-mcp-bridge-wrapper)<a href="https://allmcps.com/mcp/xcode-mcp-bridge-wrapper"><img src="https://allmcps.com/api/badge/xcode-mcp-bridge-wrapper?style=directory" alt="Xcode MCP Bridge Wrapper on AllMCPs" /></a>