Skip to main content
Glama

Xcode MCP Server

Servidor del Model Context Protocol para el ecosistema Apple

Conecta OpenCode, Codex y Claude Code con Xcode — 43 herramientas profesionales en un único index.js

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

🌐 Idioma: Inglés | Español

InstalaciónHerramientasOpenCodeCodexClaude CodeDocumentación


¿Qué es esto?

Xcode MCP Server es un puente serio y listo para producción entre tu IDE de IA (OpenCode / Codex / Claude Code) y Xcode + herramientas de desarrollo de Apple.

Un LLM ya no solo escribe Swift: compila, prueba, perfila, gestiona simuladores, dispositivos físicos, firma e incluso abre Xcode en la línea exacta, todo mediante MCP stdio sin servidor HTTP.

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

  • Archivo único index.js (2250 líneas) — sin paso de compilación, sin compilar, auditable en un solo archivo. Shebang #!/usr/bin/env node, listo para node, yarn start o npx.

  • 43 herramientas con esquema JSON estricto (additionalProperties:false) + try/catch global. Cada herramienta devuelve content: [{type:"text"}] e isError:true en caso de error — sin // TODO.

  • Cobertura completa de Apple: xcodebuild, simctl (9), devicectl (2), xctrace (5 plantillas), agvtool, security, osascript/xed.

  • DX moderna: Yarn 4 incluido (.yarn/releases), Makefile autodocumentado con help, docs/ modular, CI de macOS + prueba de humo make test.

  • Multicliente: el mismo index.js funciona con OpenCode, Codex y Claude Code sin cambios.


Related MCP server: Xcode MCP Server

✨ Características

Categoría

Herramientas

Descripción

Compilación

6

xcode_build, xcode_clean (+ purgar DerivedData), xcode_list_schemes, xcode_analyze, xcode_archive_export (.ipa), swift_format_lint

Pruebas

2

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

Simuladores

9

simctl_list, lifecycle (iniciar/apagar/borrar), install_launch, media_capture, push_notification, location_mock, privacy_control, ui_appearance, open_url

Dispositivos

2

devicectl_list, devicectl_logs (streaming de N segundos)

Perfilado

1

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

Versiones

2

agvtool_version_bump, xcode_certificates_check

Editor

2

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

Localización

1

xcode_sync_strings (.xcstrings → faltantes/pendientes/vacíos)

Recursos

6

asset_list_contents, asset_manage_color (Claro/Oscuro), asset_manage_image (1x/2x/3x/vector), asset_read_info, asset_delete, asset_validate_actool (actool)

AppIcon

1

asset_generate_appicon (todos los SO de Apple: iOS, macOS, watchOS, tvOS, visionOS + redimensionado con sips)

Paquete / 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


📋 Tabla de contenidos

  1. Requisitos

  2. Instalación paso a paso

  3. Verificación

  4. Uso con OpenCode / Codex / Claude Code

  5. Herramientas (43)

  6. Comandos de Make

  7. Documentación

  8. Arquitectura

  9. Contribuir


📦 Requisitos

Dependencia

Versión

Instalación

Obligatorio

macOS

13+ (14+ recomendado)

✅ para 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 (incluye make)

swift-format

última

brew install swift-format

◻️ opcional

swiftlint

última

brew install swiftlint

◻️ opcional

Linux/Windows: solo funciona make lint (no hay Xcode). CI ejecuta un trabajo syntax-linux para eso.


🚀 Instalación paso a paso

Sigue exactamente este orden. Copia y pega bloque a bloque.

Paso 0 — Verificar Xcode y Node

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

Paso 1 — Clonar el repositorio

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

Paso 2 — Instalar dependencias

Opción A — con Make (recomendada, moderna):

make install

Qué hace make install:

  1. Detecta yarn, lo instala vía corepack si falta

  2. Ejecuta yarn install (lee yarn.lock, instala @modelcontextprotocol/sdk)

  3. Ejecuta chmod +x index.js

Salida esperada:

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

Opción B — con Yarn directamente:

yarn install
chmod +x index.js

Si vienes de npm:

rm -f package-lock.json
yarn install

Paso 3 — Verificar el entorno

make doctor

Debería mostrar:

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

Si ves xcodebuild: command not found:

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

Paso 4 — Validar el servidor MCP

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

O manualmente:

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

Paso 5 — Configurar tu cliente de IA

Elige uno (o los tres: el mismo index.js funciona en todos):

Cliente

Archivo de configuración

Comando

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 o .mcp.json

Paso a paso completo con JSON/TOML para copiar y pegar:

Paso 6 — Reiniciar y probar

Reinicia OpenCode / Codex / Claude Code y escribe:

list the xcode tools

Deberías ver 43 herramientas y en el log:

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

¡Hecho! Ahora puedes decir:

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

✅ Verificación

# 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

🔧 Uso con 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

O por proyecto con .mcp.json:

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

Ejemplos de prompts para cada cliente → docs/opencode.md · docs/codex.md · docs/claude-code.md · Plantillas: .mcp.json.example · .codex-config.toml.example


🛠️ Herramientas (43)

1. Compilación, diagnóstico y limpieza

Herramienta

xcrun / xcodebuild

Argumentos clave

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. Pruebas y cobertura

Herramienta

xcodebuild

Argumentos clave

xcode_run_tests

xcodebuild test

scheme*, destination*, onlyTesting, enableCodeCoverage

xcode_test_coverage

xcrun xccov view --report --json

xcresultPath (se localiza automáticamente en DerivedData)

3. Simuladores xcrun simctl (9)

simctl_list (filtro 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. Dispositivos físicos xcrun devicectl (2)

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

5. Perfilado xcrun xctrace (1)

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

6. Versiones y seguridad (2)

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

7. Editor GUI de Xcode (2)

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

8. Localización (1)

xcode_sync_strings (.xcstringsmissing / pendingTranslation / emptyValues)

9. Assets Assets.xcassets + actool (6)

asset_list_contents (lista *.colorset/*.imageset), asset_manage_color (#RRGGBB Claro + Oscuro), asset_manage_image (escalas/vector + preserves-vector-representation), asset_read_info (Contents.json), asset_delete (seguro), asset_validate_actool (xcrun actool --compile)

10. AppIcon para todos los SO de Apple (1)

asset_generate_appicon (iOS, macOS, watchOS, tvOS, visionOS — 42 posiciones, sips -z si baseImagePath)

11. Paquetes 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)

Referencia completa con JSON Schema y ejemplos de copiar y pegar → docs/tools.md


📖 Comandos Make

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

Detalles → docs/development.md


📚 Documentación

Documento

Audiencia

Contenido

installation.md

Todos

Yarn Berry, Corepack, yarnPath incluido, solución de problemas

tools.md

LLM / Dev

Las 43 herramientas, JSON Schema, ejemplos JSON de copiar y pegar

opencode.md

OpenCode

opencode.json global/local, prompts, variable de entorno DEVELOPER_DIR

codex.md

Codex

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

claude-code.md

Claude Code

claude mcp add / .mcp.json, permisos, confianza

development.md

Colaboradores

Estructura, añadir una herramienta, CI, lanzamiento

architecture.md

Curiosos

Por qué un único archivo, helpers, dispatcher, flujo stdio


🧪 Prueba de humo manual

# 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

🏗️ Arquitectura

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)

Consulta docs/architecture.md para conocer la decisión de usar un único archivo y el flujo OpenCode → stdin → handler → xcrun → stdout.


🤝 Contribuir

# 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

Incidencias: Informe de error · Solicitud de función · Plantilla de PR

CI se ejecuta en macos-14 y ubuntu-latest — tu PR se prueba automáticamente.


📄 Licencia

MIT © YanxReal — consulta LICENSE.


🔗 Enlaces

Hecho con ❤️ para el ecosistema Apple · Yarn 4 + Make + CI + Docs

Si te resulta útil, deja una ⭐ en 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