Xcode-Studio-MCP

Servidor MCP unificado para Xcode + iOS Simulator: compila, despliega, captura pantallas e interactúa con tu app iOS desde Claude Code, Cursor o cualquier cliente MCP. Construido en Swift. Binario único. No requiere runtime de Node/Python.

Documentación

xcode-studio-mcp

Servidor MCP unificado para Xcode + iOS Simulator — compila, despliega, captura pantallas e interactúa con tu app iOS desde Claude Code, Codex, Cursor, o cualquier cliente MCP.

Construido en Swift. Binario único. Sin necesidad de runtime de Node/Python.

License: MIT Swift 6.0+ MCP

Por Qué Existe

Hoy necesitas 2-3 herramientas separadas para completar el ciclo completo de desarrollo iOS con un agente de IA. xcode-studio-mcp las combina en una sola:

Write code → Build → Deploy to Simulator → Screenshot → Tap/Type → Verify

Herramientas

HerramientaDescripción
xcode_buildCompila un proyecto Xcode con salida de errores estructurada (archivo, línea, columna, severidad, mensaje)
xcode_runCompila y lanza una app en el iOS Simulator
simulator_screenshotCaptura la pantalla del Simulator como imagen PNG
simulator_tapToca en las coordenadas x,y de la pantalla del Simulator
simulator_typeEscribe texto en el campo actualmente enfocado
simulator_describeObtiene el árbol de accesibilidad de la pantalla actual (JSON)

Parámetros de las Herramientas

xcode_build

ParámetroRequeridoDescripción
project_pathRuta al directorio del proyecto Xcode, .xcodeproj, o .xcworkspace
schemeNoEsquema de compilación (se detecta automáticamente si se omite)
configurationNoDebug (por defecto) o Release
destinationNoDestino de compilación (por defecto, el simulador iniciado)

xcode_run

ParámetroRequeridoDescripción
project_pathRuta al proyecto Xcode
bundle_identifierID del bundle de la app (p. ej. com.example.MyApp)
schemeNoEsquema de compilación (se detecta automáticamente)
simulator_udidNoSimulador de destino (por defecto, el iniciado)

simulator_screenshot

ParámetroRequeridoDescripción
simulator_udidNoSimulador de destino (por defecto, el iniciado)

simulator_tap

ParámetroRequeridoDescripción
xCoordenada X
yCoordenada Y
durationNoDuración de la pulsación en segundos (para pulsación larga)
simulator_udidNoSimulador de destino

simulator_type

ParámetroRequeridoDescripción
textTexto a escribir
simulator_udidNoSimulador de destino

simulator_describe

ParámetroRequeridoDescripción
simulator_udidNoSimulador de destino

Inicio Rápido

Requisitos Previos

  • macOS con Xcode instalado
  • Para las herramientas de interacción de UI (tap, type, describe):
    brew tap facebook/fb && brew install idb-companion
    pip3 install fb-idb
    

Compilación

git clone https://github.com/kevinswint/xcode-studio-mcp.git
cd xcode-studio-mcp
swift build -c release

Configurar Claude Code

Añade a tu configuración MCP de Claude Code:

{
  "mcpServers": {
    "xcode-studio-mcp": {
      "command": "/path/to/xcode-studio-mcp/.build/release/XcodeStudioMCP"
    }
  }
}

Flujo de Trabajo de Ejemplo

You: Build and run my app at ~/Projects/MyApp
Claude: [calls xcode_build] Build succeeded with 0 errors
        [calls xcode_run] App launched (PID 12345)
        [calls simulator_screenshot] Here's what the app looks like...
        [calls simulator_describe] I can see a "Sign In" button and email/password fields
        [calls simulator_tap] Tapped the email field
        [calls simulator_type] Typed "test@example.com"
        [calls simulator_screenshot] Here's the current state...

Arquitectura

┌─────────────────────────────┐
│     MCP Protocol Layer      │  stdio transport (Swift MCP SDK)
├─────────────────────────────┤
│   Tool Implementations      │  6 tools, structured error output
├──────────┬──────────────────┤
│ xcodebuild│  simctl  │  idb │  native process calls
│  wrapper  │  wrapper │ CLI  │
└──────────┴──────────┴──────┘

Construido en Swift con cero dependencias de runtime de Node/Python (la CLI de idb solo se necesita para las herramientas de interacción de UI).

Hoja de Ruta

  • v0.1 (actual): Herramientas principales de compilación + simulador
  • v1.0: Navegación semántica de UI ("toca el botón Iniciar sesión"), diff visual, manipulación de archivos de proyecto Xcode, operaciones compuestas, captura de vista previa de SwiftUI

Proyectos Relacionados

ProyectoQué HaceDiferencia
XcodeBuildMCPSolo compilación + pruebasSin interacción de UI con el simulador
mobile-mcpUI de simulador multiplataformaSin soporte de compilación de Xcode
ios-simulator-mcpSimulador vía IDBSin compilación, depende de IDB para todo

xcode-studio-mcp combina compilación e interacción en un solo servidor.

Contribuciones

Se aceptan PRs. El código base tiene ~750 líneas de Swift organizadas en Tools, Services y Models.

Licencia

MIT