Skip to content

Xcode Integration

Use Apple Text inside Xcode 26.3+ with Claude Agent or Codex via MCP.

This is the same Apple Text collection you use from the Claude Code plugin or other MCP clients. The difference in Xcode is only the transport: MCP instead of /plugin commands.

Apple Text and Xcode Tools solve different problems:

  • apple-text is a read-only knowledge server for Apple text systems
  • xcode via xcrun mcpbridge exposes Xcode actions like build, test, and project access

Use them together when you want both guidance and Xcode execution.

The same Apple Text catalog available to other MCP clients, with the same route-first MCP workflow:

  • 39 skills for Apple text systems
  • 1 command as prompt entry points
  • 5 read-only MCP tools including apple_text_route as the front door for natural-language questions
  • Xcode 26.3+ with Claude Agent or Codex enabled
  • Xcode Tools enabled in Xcode > Settings > Intelligence
  • Node.js 18+
  • A local Apple Text checkout built with npm run mcp:bundle

Build the server before configuring Xcode:

Terminal window
git clone https://github.com/sitapix/apple-text
cd apple-text
npm run setup:all
npm run mcp:bundle

If you want Xcode actions in addition to Apple Text guidance, add Apple’s Xcode MCP bridge too:

Terminal window
codex mcp add xcode -- xcrun mcpbridge

Xcode’s Claude Agent uses its own config directory and does not read your normal Claude Desktop config.

Terminal window
mkdir -p ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig

Xcode does not inherit your shell setup, so use an absolute path:

Terminal window
which node

Create ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/.claude.json:

{
"projects": {
"*": {
"mcpServers": {
"apple-text": {
"type": "stdio",
"command": "/absolute/path/to/node",
"args": ["/absolute/path/to/apple-text/mcp-server/dist/index.js"],
"env": {
"PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
}
}

Replace the node path with the result of which node. Replace "*" with a specific project path if you want narrower scope.

Close and reopen Xcode completely for the config to take effect.

Type /context in the Claude Agent panel. You should see Apple Text listed as a connected MCP server.

For normal questions, start from apple_text_route rather than manually browsing the catalog.

Codex uses .codex/config.toml in your project root, or ~/.codex/config.toml for global config.

[mcp_servers.apple-text]
command = "/absolute/path/to/node"
args = ["/absolute/path/to/apple-text/mcp-server/dist/index.js"]
env = { "PATH" = "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" }

Close and reopen Xcode for the config to take effect.

After setup, use the same MCP flow as other clients: apple_text_route first, then apple_text_read_skill.

  • Absolute paths are safer. Xcode’s MCP environment is more restricted than your terminal.
  • Restart Xcode after config changes. Editing the file while Xcode is open usually has no effect.
  • Apple Text does not replace xcrun mcpbridge. Run both if you want Xcode actions plus Apple Text guidance.
  • This is different from the Claude Code plugin path. In Xcode you get the MCP surface, not the /plugin menu or hooks.

If you are contributing and want live skill edits without rebundling, add these env values to the MCP config:

{
"APPLE_TEXT_MCP_MODE": "development",
"APPLE_TEXT_DEV_PATH": "/absolute/path/to/apple-text",
"APPLE_TEXT_APPLE_DOCS": "true"
}
  • Check that the config file exists at the correct path
  • Verify the node path is absolute and correct by running it in Terminal
  • Confirm mcp-server/dist/index.js exists and you already ran npm run mcp:bundle

Enable debug logging and run the server directly:

Terminal window
APPLE_TEXT_MCP_LOG_LEVEL=debug /absolute/path/to/node /absolute/path/to/apple-text/mcp-server/dist/index.js 2>&1 | head -20

If the server starts and reports resources, the issue is usually in Xcode’s MCP connection rather than Apple Text itself.