Connects external MCP clients like Cursor and Claude Code to Xcode tools through Apple's xcrun mcpbridge, repairing malformed tool responses.
Also known as SoundBlaster/XcodeMCPWrapper, xcodemcpwrapper, mcpbridge-wrapper
- Stars
- 20
- Tools
- —
- Downloads, 30 days
- 344
- Latest version
- 0.1.6
- Last commit
- Sep 25, 2026
- License
- MIT
What is Xcode MCP?
Xcode connects external MCP clients like Cursor and Claude Code to Xcode tools through Apple's xcrun mcpbridge, repairing malformed tool responses.
Summary generated from the project's README
About Xcode MCP server
Connecting external AI agents like Cursor, Claude Code, or Zed to Apple's development tools is what this wrapper enables. It acts as a bridge between MCP clients and Xcode through the xcrun mcpbridge utility. By sitting between the client and the developer tools, it fixes malformed responses where an outputSchema is present but structuredContent is missing, ensuring more reliable interactions during coding tasks.
Developers can choose between direct mode or a broker mode that allows multiple clients to share a single persistent Xcode connection. This shared connection helps reduce the frequency of connection prompts. The server uses uvx to manage its environment and requires Xcode 26.3 or newer, with verified support for Xcode 27.0. It does not bundle tools itself but instead exposes the existing catalog of tools installed on your macOS system, such as those for building projects, managing workspaces, or interacting with simulators.
What you can do with it
- 1Fixing malformed tool responsesUse the wrapper to repair Xcode tool responses that declare an outputSchema but omit structuredContent.
- 2Sharing a single Xcode connectionConnect multiple AI clients to one persistent Xcode connection using broker mode to avoid repeated prompts.
- 3Managing Xcode projects via AIInstruct an AI client to perform tasks like creating new projects, switching schemes, or running tests.
Written from the project's README. Every use case is checked against a quote from it.
How to install Xcode MCP
Formats verified 10 Nov 2026Install Xcode MCP in Claude Code
$ claude mcp add xcodemcpwrapper -- uvx mcpbridge-wrapperInstall Xcode MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"xcodemcpwrapper": {
"command": "uvx",
"args": [
"mcpbridge-wrapper"
]
}
}
}Install Xcode MCP in VS Code
.vscode/mcp.json
{
"servers": {
"xcodemcpwrapper": {
"type": "stdio",
"command": "uvx",
"args": [
"mcpbridge-wrapper"
]
}
}
}Install Xcode MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"xcodemcpwrapper": {
"command": "uvx",
"args": [
"mcpbridge-wrapper"
]
}
}
}Install Xcode MCP in Codex
~/.codex/config.toml
[mcp_servers.xcodemcpwrapper] command = "uvx" args = ["mcpbridge-wrapper"]
Install Xcode MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"xcodemcpwrapper": {
"command": "uvx",
"args": [
"mcpbridge-wrapper"
]
}
}
}Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablesoundblaster/xcodemcpwrapper is public and reachablegithub.com/soundblaster/xcodemcpwrapper ↗Pass
- Package names this repository as its sourcemcpbridge-wrapper names https://github.com/mcpbridge-wrapper/mcpbridge-wrapper as its sourcepypi.org/project/mcpbridge-wrapper/ ↗Finding
- Build provenance (Sigstore attestation)Sigstore attestation for mcpbridge-wrapperpypi.org/project/mcpbridge-wrapper/ ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-09-25github.com/soundblaster/xcodemcpwrapper ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from mcpbridge-wrapperPass
- No critical advisory in the package or its dependencies1 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubXcode MCP Bridge Wrapper
mcpbridge-wrapper connects external MCP clients to Xcode through Apple's
xcrun mcpbridge. It repairs Xcode tool responses that declare an
outputSchema but omit structuredContent. The repair works in both direct
and broker modes. Broker mode also lets several clients share one persistent
Xcode connection, reducing repeated connection prompts.
Compatibility
| Component | Support in 0.5.0 |
|---|---|
| Xcode | 26.3+ and 27.0 on macOS; Xcode 27.0 handshake and tool discovery verified |
| MCP clients | Clients using the initialize lifecycle; check the protocol used by your client version |
| MCP 2026-07-28 | Not supported by 0.5.0; the sessionless implementation remains experimental on a separate branch |
| Python | 3.9-3.12; uvx manages its own environment |
The wrapper does not bundle Xcode tools. It exposes the catalog returned by
the installed Xcode, so tool names and availability can change with Xcode
updates and permissions. The Xcode 27.0 catalog observed with build 27A266a
is listed below.
Quick Start
- Install uv and Xcode 26.3 or newer. Xcode 27.0 is supported.
- In Xcode > Settings > Intelligence > Model Context Protocol, enable Allow external agents to use Xcode tools. Open the project you want to use in Xcode. See Apple's setup guide.
- Add one of the client configurations below. Pin
0.5.0to keep the legacy MCP contract when a future major release becomes available. - Start the client and approve the Xcode access prompt if shown. After
approval, reload or reconnect the MCP server in the client so it fetches
tools/listagain, then verify with a real Xcode tool call. A green MCP indicator alone only confirms the handshake.
Broker mode is recommended for multiple clients. All examples use the same per-user daemon. The first client starts it; subsequent clients reuse it.
Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"xcode-tools": {
"command": "uvx",
"args": ["--from", "mcpbridge-wrapper==0.5.0", "mcpbridge-wrapper", "--broker"]
}
}
}
Codex
Add to ~/.codex/config.toml and restart Codex:
[mcp_servers.xcode-tools]
command = "uvx"
args = ["--from", "mcpbridge-wrapper==0.5.0", "mcpbridge-wrapper", "--broker"]
Zed
Add inside ~/.config/zed/settings.json under the top-level
context_servers key, then disable and re-enable the server in
Settings > AI > MCP Servers:
{
"context_servers": {
"xcode-tools": {
"command": "uvx",
"args": ["--from", "mcpbridge-wrapper==0.5.0", "mcpbridge-wrapper", "--broker"],
"env": {}
}
}
}
See Zed's MCP configuration guide for the settings UI and server status indicator.
Claude Code
claude mcp add --transport stdio xcode -- uvx --from 'mcpbridge-wrapper==0.5.0' mcpbridge-wrapper --broker
For a single client that does not need the shared daemon, remove --broker
from its command to use direct mode. Manual installation and Web UI options
are covered in the installation,
broker, and Web UI guides.
Xcode 27.0 Approval and Verification
Xcode 27.0 may ask for permission for the broker host process and for the
project folder. The prompt identifies the Python executable and PID, not the
editor name. A new uvx host identity may need a fresh approval even if an
older Python installation was already permitted. Approve access only when the
path and project are expected.
If a tool reports that the agent is not approved, use XcodeOpenWorkspace
with the absolute path of an existing .xcodeproj or .xcworkspace to
request access, approve the prompt in Xcode, then retry the read-only tool.
Do not treat a successful tools/list or a green client status dot as proof
that Xcode tool calls are authorized. Check Xcode's state with:
xcrun mcp-server status
uvx --from 'mcpbridge-wrapper==0.5.0' mcpbridge-wrapper --broker-status
The second command should show Proxy version: 0.5.0 and Daemon version: 0.5.0. If an older daemon is still running, stop it once and reconnect the
clients:
uvx --from 'mcpbridge-wrapper==0.5.0' mcpbridge-wrapper --broker-stop
Stopping the singleton temporarily disconnects every client using it. The
next --broker connection starts a new daemon. For a stable long-lived host
identity, see the dedicated broker host.
Xcode 27.0 Tools
tools/list exposed 54 tools on Xcode 27.0 build 27A266a during a
local smoke test. This is an observed catalog, not a hard-coded wrapper API.
Xcode 27 adds workspace creation/opening, simulator interaction, run and
debugger control, build configuration, localization, and crash/field insight
tools. See Apple's Xcode 27 release notes.
- Workspaces and targets:
XcodeListWorkspaces,XcodeOpenWorkspace,XcodeCloseWorkspace,XcodeNewProject,XcodeNewTarget,XcodeListTargets,XcodeListTemplates,XcodeListSchemes,XcodeSwitchScheme,XcodeListRunDestinations,XcodeSwitchRunDestination,XcodeListTestPlans,XcodeSwitchTestPlan. - Files and diagnostics:
XcodeRead,XcodeWrite,XcodeUpdate,XcodeLS,XcodeGlob,XcodeGrep,XcodeMakeDir,XcodeMV,XcodeRM,XcodeRefreshCodeIssuesInFile. - Build, test, run, and debug:
BuildProject,GetBuildLog,GetTestList,RunAllTests,RunSomeTests,RunProject,StopProject,GetConsoleOutput,InvokeDebuggerCommand,GetFileCompilerFlags,UpdateFileCompilerFlags,GetTargetBuildSettings,UpdateTargetBuildSetting. - Device interaction:
DeviceInteractionStartSession,DeviceInteractionStartWorkspaceSession,DeviceInteractionInstallAndRun,DeviceInteractionSynthesize,DeviceInteractionEndSession. - Localization:
LocalizationPlanner,StringCatalogContext,StringCatalogRead,StringCatalogEdit. - Crash and field insights:
GetTopCrashIssues,GetCrashIssueLogs,GetTopFieldPerformanceIssues,GetFieldPerformanceIssueLogs. - Previews and reference:
RenderPreview,DocumentationSearch,RunCodeSnippet. - Project metadata:
AddEntitlement,AddInfoPlist.
In this catalog, the older XcodeListWindows name is absent; use
XcodeListWorkspaces to inspect workspaces after Xcode approval. Tool calls
such as builds, file edits, and device interaction can change project or
device state. Start with read-only calls when validating a new setup.
Development
For source installation and quality gates, see Contributing. The package is also available on PyPI and in the MCP Registry.
Licensed under the MIT License.
Xcode MCP questions
How do I add Xcode MCP to Claude Code?
Run claude mcp add xcodemcpwrapper -- uvx mcpbridge-wrapper in your terminal. Add --scope user to make it available in every project.
How do I add Xcode MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What does the Xcode MCP bridge wrapper do?
It connects external MCP clients to Xcode through Apple's xcrun mcpbridge and repairs tool responses that declare an outputSchema but omit structuredContent.
Which Xcode versions are supported?
Xcode 26.3 or newer on macOS, with Xcode 27.0 handshake and tool discovery verified.
How do I add the Xcode MCP server to Cursor?
Add an entry to ~/.cursor/mcp.json using uvx with the mcpbridge-wrapper package and the --broker flag.
What is broker mode?
Broker mode runs a shared per-user daemon so several clients reuse one persistent Xcode connection, reducing repeated connection prompts.
Why does an Xcode tool call say the agent is not approved?
Use XcodeOpenWorkspace with the path of an existing project or workspace to request access, approve the prompt in Xcode, then retry.