/ Directorio / Playground / XcodeBuild
● Oficial getsentry ⚡ Instantáneo

XcodeBuild

por getsentry · getsentry/XcodeBuildMCP

Cierra el bucle en desarrollo AI para iOS/macOS — compila, prueba, ejecuta en simulador, captura logs y capturas de pantalla, todo desde el chat.

XcodeBuildMCP (de Sentry, ex-miembro de la org getsentry Cameron) envuelve xcodebuild, xcrun simctl y el runtime del simulador. Permite que un agente compile un proyecto, ejecute pruebas, arranque un simulador, instale la app, la controle y lea logs o capturas de pantalla — el bucle de retroalimentación que faltaba para código iOS escrito por IA.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

xcodebuild.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "xcodebuild": {
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "xcodebuild",
      "command": "npx",
      "args": [
        "-y",
        "xcodebuildmcp@latest"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "xcodebuild": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "xcodebuildmcp@latest"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add xcodebuild -- npx -y xcodebuildmcp@latest

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: XcodeBuild

Verifica que el código iOS generado por IA se compile y ejecute correctamente en un simulador

👤 Desarrolladores iOS que usan Claude para desarrollo de funcionalidades, prototipado en SwiftUI ⏱ ~15 min intermediate

Cuándo usarlo: Claude acaba de escribir o editar vistas de SwiftUI. Antes de decir 'hecho', quieres compilar, ejecutar en simulador y capturar pantalla.

Requisitos previos
  • Xcode instalado — Xcode 15+ desde la Mac App Store; confirma con xcodebuild -version
  • Un simulador arrancable — Xcode → Settings → Platforms → descargar iOS Simulator
Flujo
  1. Descubre el proyecto y compila
    Busca el proyecto Xcode en /Users/me/Projects/MyApp. Compila el esquema 'MyApp' para el destino simulador de iOS 'iPhone 16'. Reporta cualquier error o advertencia.✓ Copiado
    → La compilación es exitosa, o errores específicos con archivo:línea
  2. Arranca simulador, instala, lanza
    Arranca un simulador iPhone 16 si no está ya arrancado. Instala la app compilada y lánzala. Captura una pantalla después de 3 segundos.✓ Copiado
    → App en ejecución; pantalla capturada
  3. Controla la funcionalidad
    Toca el botón 'Sign Up', escribe '[email protected]' en el campo de correo, toca Submit. Captura pantalla después de cada paso.✓ Copiado
    → Secuencia de capturas de pantalla mostrando el flujo; o un error claro de tap fallido

Resultado: Capturas de pantalla antes/después que prueben que la funcionalidad funciona, confirmadas junto al código.

Errores comunes
  • Tocar por coordenada es frágil entre tamaños de dispositivo — Prefiere taps basados en etiqueta de accesibilidad cuando el MCP los soporta; usa coordenadas solo como fallback
  • La compilación de simulador usa una arquitectura diferente a un dispositivo real — Para código sensible a arquitectura, también compila para un dispositivo físico al menos una vez antes de mergear
Combinar con: filesystem · github

Ejecuta tus pruebas unitarias y UI de Xcode desde el chat y triagea fallos

👤 Desarrolladores iOS que quieren retroalimentación rápida de pruebas sin cambiar a Xcode ⏱ ~10 min beginner

Cuándo usarlo: Has hecho un cambio, quieres ejecutar el equivalente a ⌘U, y que Claude analice los fallos.

Flujo
  1. Ejecuta pruebas
    Ejecuta todas las pruebas para el esquema 'MyApp' en destino 'iPhone 16'. Muéstrame cualquier fallo con archivo, línea y expectativa.✓ Copiado
    → Contador de pases más lista de fallos con ubicaciones
  2. Enfócate en un fallo
    Para el primer fallo, lee el archivo fuente y dime si la prueba está mal o el código está mal. Sé específico.✓ Copiado
    → Diagnóstico claro, no 'podría ser cualquiera'
  3. Corrige y ejecuta de nuevo
    Aplica la corrección. Ejecuta de nuevo solo la prueba que falla para confirmar que está verde.✓ Copiado
    → Ejecución verde

Resultado: Pruebas de nuevo verdes con una ejecución enfocada, no una ejecución de suite completa.

Errores comunes
  • xcodebuild test es lento en cachés fríos — Usa la bandera -only-testing: para acotar; el MCP expone esto vía test-by-identifier
Combinar con: github

Diagnostica un error de compilación críptico de Xcode

👤 Desarrolladores iOS que chocan con un muro de 'error del enlazador / framework faltante / firma' ⏱ ~20 min intermediate

Cuándo usarlo: xcodebuild falla y la salida de error es 4000 líneas de ruido.

Flujo
  1. Compila y captura el fallo raw
    Compila el esquema 'MyApp' y devuelve solo las líneas que contienen 'error:' o 'warning:', más 3 líneas de contexto alrededor de cada una.✓ Copiado
    → Lista de errores enfocada sin ruido
  2. Explica el primer error
    Explica el primer error en términos humanos. ¿De qué se está quejando realmente Xcode, y cuáles son las 3 causas principales?✓ Copiado
    → Diagnóstico en inglés plano con causas probables
  3. Aplica corrección y recompila
    Aplica la corrección más probable (verifica Info.plist/entitlements/Package.swift según sea necesario), recompila y confirma que el error se fue.✓ Copiado
    → Compilación limpia

Resultado: Desatascado del muro de compilación sin un agujero de conejo de Stack Overflow de 2 horas.

Errores comunes
  • Algunos errores son por DerivedData obsoleto — Cuando todo lo demás falla: limpia DerivedData vía la herramienta clean del MCP, luego recompila
Combinar con: filesystem

Captura un crash de app en simulador y encuentra la causa raíz

👤 Desarrolladores iOS buscando un crash reproducible ⏱ ~20 min advanced

Cuándo usarlo: Tu app se bloquea en un flujo específico en simulador, y quieres que Claude lea el log de crash.

Flujo
  1. Reproduce con captura de log
    Lanza MyApp en simulador iPhone 16. Inicia captura de log. Realiza este flujo: abre Settings, toca 'Clear Cache'. Detén captura de log cuando la app se bloquea.✓ Copiado
    → Crash reproducido, logs guardados
  2. Analiza el crash
    Encuentra el crash en los logs capturados. Simboliza si es necesario. Dime el hilo que falla, los 5 frames de stack superiores, y la línea probable en nuestro código.✓ Copiado
    → Stack trace simbolizado apuntando a un archivo fuente específico
  3. Propón la corrección
    Basado en el stack trace y el código circundante, ¿cuál es el cambio mínimo para arreglarlo? Aplícalo.✓ Copiado
    → Corrección enfocada, no un refactor grande

Resultado: Un crash arreglado con evidencia simbolizada que puedas pegar en el PR.

Errores comunes
  • Los crashes en configuración Release no se simbolizan sin dSYMs — Usa configuración Debug para reproducir; prueba Release por separado para confirmar la corrección
Combinar con: sentry · github

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

xcodebuild + filesystem

Edita Swift → compila → captura → itera, completamente en un chat

Edita ContentView.swift para agregar un toggle de modo oscuro. Compila MyApp para iPhone 16, ejecútalo, captura pantalla en modo claro y oscuro.✓ Copiado
xcodebuild + github

Arregla un problema, verifica en simulador, abre PR con una captura

Issue #42 dice que el botón de login está desalineado en landscape. Reproduce en simulador iPad, corrige el layout de SwiftUI, adjunta capturas antes/después al PR.✓ Copiado
xcodebuild + sentry

Reproduce un crash reportado por Sentry en simulador con condiciones idénticas

Crash Sentry iOS-113 ocurrió en iOS 18.1 con localización de usuario fr-FR. Arranca un simulador coincidente, reproduce y corrige.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
discover_projects directorio: str Encuentra qué compilar en un repo sin escribir rutas free
build_project proyecto: str, esquema: str, destino: str, configuración?: 'Debug'|'Release' Compila un .xcodeproj o .xcworkspace para un destino free
build_spm_package ruta: str Compila un Swift Package (sin .xcodeproj) free
test_project proyecto, esquema, destino, solo_prueba?: str[] Ejecuta la suite de pruebas; usa solo_prueba para acotar free
list_simulators ninguno Ve qué simuladores existen y cuáles están arrancados free
boot_simulator id_simulador o nombre: str Arranca un simulador antes de instalar apps free
install_app id_simulador: str, ruta_app: str Instala el .app compilado en un simulador arrancado free
launch_app id_simulador: str, id_paquete: str Inicia la app instalada free
tap_at / type_text / send_url parámetros de simulador Controla la UI free
screenshot id_simulador: str, ruta?: str Captura estado visual free
start_log_capture / stop_log_capture id_simulador Captura logs de consola/sistema para una sesión free
clean proyecto, esquema? Borra DerivedData para ese proyecto cuando las compilaciones se comportan raro free

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Ninguna — todo corre localmente vía xcodebuild/simctl
Tokens por llamada
Los logs de compilación pueden ser enormes. Prefiere filtrar a errores/advertencias en lugar de volcados de log completos
Monetario
Gratuito (requiere una Mac con Xcode, que tiene su propio costo)
Consejo
Ejecuta compilaciones incrementales, no compilaciones limpias, por defecto. Solo limpia cuando DerivedData se comporta raro.

Seguridad

Permisos, secretos, alcance

Almacenamiento de credenciales: Sin credenciales en la capa MCP. Las credenciales de firma de código viven en el Keychain de tu Mac como siempre.
Salida de datos: Ninguna desde el MCP. xcodebuild puede descargar dependencias (SPM, CocoaPods) desde sus fuentes habituales.
No conceder nunca: no dejes que el agente altere identidades de codesign o perfiles de provisioning sin confirmación

Resolución de problemas

Errores comunes y soluciones

xcodebuild: comando no encontrado

Herramientas de línea de comandos de Xcode faltantes o no seleccionadas. Ejecuta xcode-select --install luego sudo xcode-select -s /Applications/Xcode.app/Contents/Developer.

Verificar: xcodebuild -version
No hay tal destino 'iPhone 16'

El simulador con ese nombre no está descargado para el Xcode activo. Abre Xcode → Settings → Platforms → descarga iOS runtime. O usa list_simulators y elige uno existente.

Verificar: xcrun simctl list devices
La compilación es exitosa pero la app no se lanza — 'NSException'

Verifica los logs de la app vía start_log_capture justo antes de lanzar. A menudo Info.plist con clave faltante, o desajuste de entitlements.

Las pruebas se cuelgan en una vista previa de SwiftUI

Las vistas previas de SwiftUI pueden causar deadlock en xcodebuild test en casos raros. Deshabilita ayudantes de vista previa en esquemas de prueba, o ejecuta con -disable-concurrent-testing.

Alternativas

XcodeBuild vs otros

AlternativaCuándo usarlaContrapartida
MCP de shell directo ejecutando xcodebuildQuieres máxima flexibilidad y aceptas el tradeoff de seguridad de un MCP de shell rawSin ergonomía; Claude tiene que conocer cada bandera de xcodebuild
MCP de JetBrains (AppCode está EOL)Estás en JetBrains IDE — ya no se aplica a iOSNo es una alternativa de iOS hoy
Fastlane vía shellNecesitas compilaciones firmadas y subidas a TestFlight, no solo verificación de simuladorMucho más pesado; fuera de alcance para desarrollo inner-loop

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills