Skip to main content
Glama

Xcode MCP Server

Model Context Protocol Server für das Apple-Ökosystem

Verbinde OpenCode, Codex und Claude Code mit Xcode — 43 professionelle Tools in einer einzigen index.js

CI Node >=18 Yarn 4 MCP License: MIT Version

🌐 Sprache: Deutsch | Español

InstallationToolsOpenCodeCodexClaude CodeDokumentation


Was ist das?

Xcode MCP Server ist eine ernsthafte, produktionsreife Brücke zwischen deiner KI-IDE (OpenCode / Codex / Claude Code) und Xcode + Apple Dev Tools.

Ein LLM schreibt nicht mehr nur Swift: Es baut, testet, profiliert, verwaltet Simulatoren, physische Geräte, Signierung und öffnet Xcode sogar an der exakten Zeile – alles über MCP stdio ohne HTTP-Server.

Stack: ES Modules · @modelcontextprotocol/sdk@1.30 · StdioServerTransport · promisify(exec) · Yarn 4 Berry · Make

  • Einzeldatei index.js (2250 Zeilen) – kein Build-Schritt, kein Kompilieren, in einer Datei prüfbar. Shebang #!/usr/bin/env node, bereit für node, yarn start oder npx.

  • 43 Tools mit striktem JSON-Schema (additionalProperties:false) + globales try/catch. Jedes Tool gibt content: [{type:"text"}] und isError:true bei Fehlern zurück – kein // TODO.

  • Volle Apple-Abdeckung: xcodebuild, simctl (9), devicectl (2), xctrace (5 Vorlagen), agvtool, security, osascript/xed.

  • Moderne DX: Gebündeltes Yarn 4 (.yarn/releases), selbst dokumentierendes Makefile mit help, modulare docs/, macOS-CI + make test als Smoke-Test.

  • Multi-Client: Dieselbe index.js funktioniert ohne Änderungen mit OpenCode, Codex und Claude Code.


Related MCP server: Xcode MCP Server

✨ Funktionen

Kategorie

Tools

Beschreibung

Build

6

xcode_build, xcode_clean (+ löscht DerivedData), xcode_list_schemes, xcode_analyze, xcode_archive_export (.ipa), swift_format_lint

Tests

2

xcode_run_tests (onlyTesting-Filter), xcode_test_coverage (xccov --json)

Simulatoren

9

simctl_list, lifecycle (boot/herunterfahren/löschen), install_launch, media_capture, push_notification, location_mock, privacy_control, ui_appearance, open_url

Geräte

2

devicectl_list, devicectl_logs (N-Sekunden-Streaming)

Profilierung

1

xctrace_profile (Time Profiler, Allocations, Leaks, System Trace…)

Versionen

2

agvtool_version_bump, xcode_certificates_check

Editor

2

xcode_get_active_file (AppleScript), xcode_open_at_line (xedxcode://)

Lokalisierung

1

xcode_sync_strings (.xcstrings → fehlend/ausstehend/leer)

Assets

6

asset_list_contents, asset_manage_color (Hell/Dunkel), asset_manage_image (1x/2x/3x/Vektor), asset_read_info, asset_delete, asset_validate_actool (actool)

AppIcon

1

asset_generate_appicon (ALLE Apple-Betriebssysteme: iOS, macOS, watchOS, tvOS, visionOS + sips-Größenänderung)

Paket / SPM

11

package_resolve, package_update, package_list_dependencies, package_read_resolved, package_reset_cache, package_compute_checksum, spm_add_dependency, spm_remove_dependency, cocoapods_manage, carthage_manage, cocoapods_to_spm_migrate


📋 Inhaltsverzeichnis

  1. Voraussetzungen

  2. Schritt-für-Schritt-Installation

  3. Überprüfung

  4. Verwendung mit OpenCode / Codex / Claude Code

  5. Tools (43)

  6. Make-Befehle

  7. Dokumentation

  8. Architektur

  9. Mitwirken


📦 Voraussetzungen

Abhängigkeit

Version

Installation

Erforderlich

macOS

13+ (14+ empfohlen)

✅ für xcodebuild/simctl

Xcode

15+

App Store → xcode-select --install

Node.js

≥ 18

brew install nodenode --version

Yarn

4.x Berry

corepack enable && corepack prepare yarn@stable --activate

make

3.81+

xcode-select --install (enthält make)

swift-format

aktuell

brew install swift-format

◻️ optional

swiftlint

aktuell

brew install swiftlint

◻️ optional

Linux/Windows: Nur make lint funktioniert (kein Xcode). Die CI führt dafür einen syntax-linux-Job aus.


🚀 Schritt-für-Schritt-Installation

Befolge genau diese Reihenfolge. Kopiere und füge Block für Block ein.

Schritt 0 — Xcode und Node überprüfen

xcodebuild -version
# Xcode 15.4  Build version 15F31d

node --version
# v20.11.0 (or newer)

yarn --version
# 4.18.0 — if "command not found", run:
corepack enable
corepack prepare yarn@stable --activate
yarn --version

Schritt 1 — Das Repository klonen

git clone https://github.com/YanxReal/Xcode-MPC.git
cd Xcode-MPC

Schritt 2 — Abhängigkeiten installieren

Option A — mit Make (empfohlen, modern):

make install

Was make install macht:

  1. Erkennt yarn, installiert es bei Bedarf über corepack

  2. Führt yarn install aus (liest yarn.lock, installiert @modelcontextprotocol/sdk)

  3. Führt chmod +x index.js aus

Erwartete Ausgabe:

➤ YN0000: · Yarn 4.18.0
➤ YN0000: ┌ Resolution step
➤ YN0000: └ Completed
➤ YN0000: · Done with warnings in 3s
✓ dependencies installed

Option B — direkt mit Yarn:

yarn install
chmod +x index.js

Wenn du von npm kommst:

rm -f package-lock.json
yarn install

Schritt 3 — Umgebung überprüfen

make doctor

Es sollte Folgendes angezeigt werden:

Node: v20.x
Yarn: 4.18.0
Xcode: Xcode 15.x
xcrun: xcrun version 70
...
✓ doctor complete

Falls du xcodebuild: command not found siehst:

sudo xcode-select -s /Applications/Xcode.app

Schritt 4 — Den MCP-Server validieren

make lint
# ➜ node --check index.js
# ✓ lint ok

make test
# ➜ smoke test MCP...
# ✓ tools/list: 43 tools
# ✓ xcode_sync_strings OK
# ✓ xcode_certificates_check OK
# ✓ smoke test PASSED

Oder manuell:

python3 scripts/smoke_test.py
# or
node scripts/smoke_test.mjs

Schritt 5 — Deinen KI-Client konfigurieren

Wähle einen (oder alle drei – dieselbe index.js funktioniert überall):

Client

Konfigurationsdatei

Befehl

OpenCode

~/.config/opencode/opencode.json

node /.../Xcode-MPC/index.js

Codex

~/.codex/config.toml

[mcp_servers.xcode] command="node"

Claude Code

claude mcp add xcode -- node ...

CLI oder .mcp.json

Vollständige Schritt-für-Schritt-Anleitung mit Copy-and-Paste-JSON/TOML:

Schritt 6 — Neu starten und testen

Starte OpenCode / Codex / Claude Code neu und tippe:

list the xcode tools

Du solltest 43 Tools sehen und im Log:

✅ Xcode MCP Server started (stdio) — 43 tools registered

Fertig! Jetzt kannst du sagen:

Build MyApp with xcode_build scheme MyApp destination "platform=iOS Simulator,name=iPhone 15"

✅ Überprüfung

# 1. Syntax
make lint

# 2. Smoke MCP (no Xcode needed, just Node)
make test

# 3. Apple environment
make doctor
# Checks: node, yarn, xcodebuild, xcrun, simctl, swiftlint, security, osascript

# 4. Visual inspector (optional)
make inspect
# or
yarn inspect
# Open http://localhost:6274 → tools/list → tools/call

🔧 Verwendung mit OpenCode / Codex / Claude Code

OpenCode

~/.config/opencode/opencode.json:

{
  "mcpServers": {
    "xcode": {
      "command": "node",
      "args": ["/Users/YanxReal/Dev/Tools/Xcode-MPC/index.js"],
      "env": {}
    }
  }
}

Codex (OpenAI)

~/.codex/config.toml:

[mcp_servers.xcode]
command = "node"
args = ["/Users/YanxReal/Dev/Tools/Xcode-MPC/index.js"]

Claude Code (Anthropic)

claude mcp add xcode -- node /Users/YanxReal/Dev/Tools/Xcode-MPC/index.js
# verify
claude mcp list
# xcode: connected — 43 tools

Oder pro Projekt mit .mcp.json:

{
  "mcpServers": {
    "xcode": {
      "command": "node",
      "args": ["/Users/YanxReal/Dev/Tools/Xcode-MPC/index.js"]
    }
  }
}

Prompt-Beispiele für jeden Client → docs/opencode.md · docs/codex.md · docs/claude-code.md · Vorlagen: .mcp.json.example · .codex-config.toml.example


🛠️ Tools (43)

1. Build, Diagnose & Bereinigen

Tool

xcrun / xcodebuild

Wichtige Argumente

xcode_build

xcodebuild build

scheme*, workspace, project, destination, configuration

xcode_clean

xcodebuild clean + rm -rf DerivedData

purgeDerivedData:boolean

xcode_list_schemes

xcodebuild -list -json

workspace, project, directory

xcode_analyze

xcodebuild analyze

scheme, workspace, project

xcode_archive_export

archive + -exportArchive

scheme*, exportOptionsPlist*, archivePath, exportPath

swift_format_lint

swift-formatswiftlint

path, `mode: lint

format, tool: auto`

2. Tests & Abdeckung

Werkzeug

xcodebuild

Wichtige Argumente

xcode_run_tests

xcodebuild test

scheme*, destination*, onlyTesting, enableCodeCoverage

xcode_test_coverage

xcrun xccov view --report --json

xcresultPath (findet automatisch in DerivedData)

3. Simulatoren xcrun simctl (9)

simctl_list (Filter: booted), simctl_lifecycle (boot|shutdown|erase), simctl_install_launch, simctl_media_capture (screenshot|record), simctl_push_notification, simctl_location_mock, simctl_privacy_control, simctl_ui_appearance (light|dark), simctl_open_url

4. Physische Geräte xcrun devicectl (2)

devicectl_list (--json), devicectl_logs (deviceUdid*, durationSeconds)

5. Profiling xcrun xctrace (1)

xctrace_profile (template: Time Profiler|Allocations|Leaks|System Trace, timeLimitSeconds, outputFilePath*)

6. Versionen & Sicherheit (2)

agvtool_version_bump (bump_build|set_version|set_build), xcode_certificates_check (security find-identity)

7. Xcode-GUI-Editor (2)

xcode_get_active_file (AppleScript osascript), xcode_open_at_line (filePath*, line*, columnxedxcode://)

8. Lokalisierung (1)

xcode_sync_strings (.xcstringsmissing / pendingTranslation / emptyValues)

9. Assets Assets.xcassets + actool (6)

asset_list_contents (listet *.colorset/*.imageset), asset_manage_color (#RRGGBB Hell + Dunkel), asset_manage_image (Skalierungen/Vektor + preserves-vector-representation), asset_read_info (Contents.json), asset_delete (sicher), asset_validate_actool (xcrun actool --compile)

10. AppIcon für alle Apple-Betriebssysteme (1)

asset_generate_appicon (iOS, macOS, watchOS, tvOS, visionOS — 42 Slots, sips -z falls baseImagePath)

11. Paketverwaltung SPM / CocoaPods / Carthage (11)

package_resolve/update/list/read_resolved/reset_cache/compute_checksum, spm_add/remove_dependency, cocoapods_manage, carthage_manage, cocoapods_to_spm_migrate (Podfile→Package.swift)

Vollständige Referenz mit JSON-Schema + Copy-and-Paste-Beispielen → docs/tools.md


📖 Make-Befehle

make help          # Show this pretty help (colors)
make install       # yarn install + chmod +x
make reinstall     # clean + install (from scratch)
make lint          # node --check index.js
make doctor        # Check Node/Yarn/Xcode/simctl/swiftlint/osascript
make test          # Smoke test MCP (43 tools + 2 calls)
make start         # yarn start (stdio)
make dev           # yarn dev (--watch)
make inspect       # MCP Inspector at http://localhost:6274
make clean         # Remove node_modules/.yarn/cache/build
make fmt           # prettier if available
make release VERSION=1.0.1  # bump + tag + push

Details → docs/development.md


📚 Dokumentation

Dokument

Zielgruppe

Inhalt

installation.md

Alle

Yarn Berry, Corepack, yarnPath mitgeliefert, Fehlerbehebung

tools.md

LLM / Dev

Alle 43 Werkzeuge, JSON-Schema, Copy-and-Paste-JSON-Beispiele

opencode.md

OpenCode

opencode.json global/lokal, Prompts, DEVELOPER_DIR-Umgebungsvariable

codex.md

Codex

config.toml (mcp_servers.xcode), codex mcp list

claude-code.md

Claude Code

claude mcp add / .mcp.json, Berechtigungen, Vertrauen

development.md

Mitwirkende

Struktur, Hinzufügen eines Werkzeugs, CI, Release

architecture.md

Interessierte

Warum Single-File, Helfer, Dispatcher, Stdio-Ablauf


🧪 Manueller Smoke-Test

# Without Make:
python3 scripts/smoke_test.py
# STDERR: ✅ Xcode MCP Server started — 43 tools
# ✓ tools/list: 43 tools
# ✓ xcode_sync_strings OK
# ✓ smoke test PASSED

# With Make:
make test

🏗️ Architektur

index.js (2250 lines, 1 file)
├── Shebang + Imports (MCP SDK, promisify(exec), fs, path, os)
├── Helpers: shellEscape, expandTilde, runCommand (try/catch + 10MB buffer), formatResult
├── TOOLS[43]: Strict JSON Schema (additionalProperties:false)
├── Handlers[43]: async handle_* with validation + fallbacks (xed→xcode://, swift-format→swiftlint)
├── Dispatcher: HANDLERS map + ListTools/CallTool (try/catch → isError:true)
└── Server: StdioServerTransport (stdin JSON-RPC, stdout JSON-RPC, stderr logs)

Siehe docs/architecture.md für die Single-File-Entscheidung und den Ablauf OpenCode → stdin → handler → xcrun → stdout.

🤝 Mitwirken

# 1. Fork and branch
git checkout -b feat/my-tool

# 2. Develop: add to TOOLS + Handler + HANDLERS in index.js
make install && make lint && make test

# 3. Document in docs/tools.md + README.md

# 4. PR

Issues: Fehlerbericht · Feature-Anfrage · PR-Vorlage

CI läuft auf macos-14 und ubuntu-latest — dein PR wird automatisch getestet.

📄 Lizenz

MIT © YanxReal — siehe LICENSE.

Mit ❤️ gemacht für das Apple-Ökosystem · Yarn 4 + Make + CI + Doku

Falls es dir hilft, hinterlasse einen ⭐ auf GitHub

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A server that acts as a bridge between Claude and local Xcode projects, enabling AI-powered code assistance, project management, and automated development tasks without exposing your code to the internet.
  • A
    license
    B
    quality
    C
    maintenance
    Provides programmatic access to Xcode functionality, enabling AI assistants to create, build, test, and manage iOS/macOS projects directly.
    33
    8
    5
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enable Claude Code, Cursor, or your favorite LLM to interact with Xcode, building your projects the same way you do, and seeing the same errors. Greatly increases productivity when working on iOS, iPadOS, macOS, visionOS, tvOS projects & Swift packages - or any time you might use Xcode.
    29
    5
    MIT

View all related MCP servers

Related MCP Connectors

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YanxReal/Xcode-MPC'

If you have feedback or need assistance with the MCP directory API, please join our Discord server