Xcode MCP Server

MIT License
43
  • Apple

Integrations

  • Supports app archiving and IPA export for App Store distribution through export options plist integration

  • Enables iOS app deployment, testing on iOS simulators, and launching apps on physical iOS devices with log streaming capabilities

  • Provides macOS-specific tooling for Xcode project management and iOS development workflows

xcode-mcp

Un servidor MCP (Protocolo de Contexto de Modelo) que proporciona herramientas para operaciones relacionadas con Xcode, lo que facilita el trabajo con proyectos Xcode desde clientes MCP como Claude Desktop. El servidor ofrece diversas utilidades para la gestión de proyectos Xcode, la creación, las pruebas, el archivado, la firma de código y otras herramientas de desarrollo para iOS.

Características

  • Recuperación de información del proyecto Xcode y listado de esquemas
  • Capacidades de compilación mejoradas con opciones de salida limpias y personalizadas
  • Ejecución de pruebas integral con control granular
  • Archivado de aplicaciones y exportación de IPA para distribución
  • Gestión de perfiles de aprovisionamiento y firma de código
  • Integración de Swift Package Manager
  • Gestión del simulador de iOS mediante simctl
  • NUEVO: Implementación y lanzamiento de aplicaciones en dispositivos reales con detección automática de instalación de Xcode y administración mejorada de dispositivos
  • Manejo inteligente de errores de instalación de aplicaciones con reintento automático
  • Almacenamiento en caché inteligente de información del dispositivo y de Xcode para un mejor rendimiento

Instalación

npm install @devyhan/xcode-mcp

Uso

Uso con Claude Desktop

  1. Abra el archivo de configuración de Claude Desktop:
    # macOS open ~/Library/Application\ Support/Claude/claude_desktop_config.json
  2. Agregue o modifique la siguiente configuración:
    { "mcpServers": { "xcode-mcp": { "command": "npx", "args": [ "@devyhan/xcode-mcp", "-y" ] } } }
  3. Reinicie Claude Desktop.

Herramientas disponibles

1. información del proyecto xcode

Recupera información detallada sobre un proyecto o espacio de trabajo de Xcode, incluidos objetivos, configuraciones y esquemas.

Parámetros :

  • projectPath (obligatorio): ruta al proyecto Xcode (.xcodeproj) o al espacio de trabajo (.xcworkspace)

Ejemplo :

Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj

Salida de muestra :

{ "project": { "name": "MyApp", "targets": ["MyApp", "MyAppTests", "MyAppUITests"], "configurations": ["Debug", "Release"], "schemes": ["MyApp"] } }

2. esquemas de lista de xcode

Proporciona una lista completa de todos los esquemas, objetivos y configuraciones disponibles en un proyecto o espacio de trabajo de Xcode.

Parámetros :

  • projectPath (obligatorio): ruta al proyecto Xcode (.xcodeproj) o al espacio de trabajo (.xcworkspace)

Ejemplo :

Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj

Salida de muestra :

Information about project "MyApp": Targets: MyApp MyAppTests MyAppUITests Build Configurations: Debug Release Schemes: MyApp MyAppTests

3. xcode-build

Crea un proyecto o espacio de trabajo de Xcode con opciones mejoradas. Admite compilaciones de proyectos y espacios de trabajo, compilaciones limpias y directorios de salida personalizados.

Parámetros :

  • projectPath (obligatorio): ruta al proyecto Xcode (.xcodeproj) o al espacio de trabajo (.xcworkspace)
  • scheme (obligatorio): El esquema para construir
  • configuration (opcional): Configuración de compilación (por ejemplo, Depuración, Versión)
  • destination (opcional): destino de compilación (por ejemplo, 'plataforma=iOS Simulator,nombre=iPhone 14')
  • extraArgs (opcional): argumentos adicionales de xcodebuild como una matriz de cadenas
  • outputDir (opcional): directorio de salida de compilación personalizado (SYMROOT)
  • clean (opcional): si se debe realizar una compilación limpia (predeterminado: falso)

Ejemplo :

Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: MyAppScheme Configuration: Debug Destination: platform=iOS Simulator,name=iPhone 14 Clean: true OutputDir: /Users/username/Desktop/build

Comando generado :

xcodebuild -project "/Users/username/Projects/MyApp/MyApp.xcodeproj" -scheme "MyAppScheme" clean build -configuration "Debug" -destination "platform=iOS Simulator,name=iPhone 14" SYMROOT="/Users/username/Desktop/build"

4. prueba de xcode

Ejecuta pruebas para un proyecto o espacio de trabajo de Xcode con amplias opciones. Proporciona un control preciso sobre la ejecución de pruebas, incluyendo la ejecución de pruebas específicas, planes de prueba y diversos modos de prueba.

Parámetros :

  • projectPath (obligatorio): ruta al proyecto Xcode (.xcodeproj) o al espacio de trabajo (.xcworkspace)
  • scheme (obligatorio): El esquema a probar
  • destination (obligatorio): destino de la prueba (p. ej., 'plataforma=iOS Simulator,nombre=iPhone 14')
  • testPlan (opcional): Nombre del plan de prueba a utilizar
  • onlyTesting (opcional): Matriz de identificadores de prueba específicos para ejecutar
  • skipTesting (opcional): Matriz de identificadores de prueba para omitir
  • resultBundlePath (opcional): Ruta para guardar el paquete de resultados de la prueba
  • buildForTesting (opcional): compilar solo para probar sin ejecutar pruebas
  • testWithoutBuilding (opcional): ejecuta pruebas sin compilar

Ejemplo :

Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: MyAppScheme Destination: platform=iOS Simulator,name=iPhone 14 OnlyTesting: ["MyAppTests/LoginTests"] ResultBundlePath: /Users/username/Desktop/TestResults

Comando generado :

xcodebuild -project "/Users/username/Projects/MyApp/MyApp.xcodeproj" -scheme "MyAppScheme" -destination "platform=iOS Simulator,name=iPhone 14" test -only-testing:"MyAppTests/LoginTests" -resultBundlePath "/Users/username/Desktop/TestResults"

5. archivo xcode

Crea un archivo (.xcarchive) de un proyecto de Xcode y, opcionalmente, lo exporta a un archivo IPA para su distribución. Compatible con los métodos de distribución de App Store, ad-hoc y empresariales mediante la opción de exportación plist.

Parámetros :

  • projectPath (obligatorio): ruta al proyecto Xcode (.xcodeproj) o al espacio de trabajo (.xcworkspace)
  • scheme (obligatorio): El esquema a archivar
  • configuration (opcional): Configuración de compilación (por ejemplo, versión)
  • archivePath (obligatorio): Ruta para guardar el archivo .xcarchive
  • exportPath (opcional): Ruta para exportar el archivo (por ejemplo, archivo IPA)
  • exportOptionsPlist (opcional): Ruta al archivo exportOptions.plist

Ejemplo :

Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: MyAppScheme Configuration: Release ArchivePath: /Users/username/Desktop/MyApp.xcarchive ExportPath: /Users/username/Desktop/Export ExportOptionsPlist: /Users/username/Projects/MyApp/exportOptions.plist

Comandos generados :

# Archive command xcodebuild -project "/Users/username/Projects/MyApp/MyApp.xcodeproj" -scheme "MyAppScheme" -configuration "Release" archive -archivePath "/Users/username/Desktop/MyApp.xcarchive" # Export command (if exportPath and exportOptionsPlist are provided) xcodebuild -exportArchive -archivePath "/Users/username/Desktop/MyApp.xcarchive" -exportPath "/Users/username/Desktop/Export" -exportOptionsPlist "/Users/username/Projects/MyApp/exportOptions.plist"

6. información de diseño de código de xcode

Recupera información completa sobre la firma de código y los perfiles de aprovisionamiento de un proyecto de Xcode. Muestra las identidades de firma de código instaladas, la configuración de firma de código del proyecto y los perfiles de aprovisionamiento en el sistema.

Parámetros :

  • projectPath (obligatorio): ruta al proyecto Xcode (.xcodeproj) o al espacio de trabajo (.xcworkspace)
  • target (opcional): nombre del objetivo específico

Ejemplo :

Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Target: MyAppTarget

Salida de muestra :

코드 서명 인증서 목록: 1) 01AB2345CD6789EF0123456789ABCDEF01234567 "Apple Development: John Doe (ABC12DEF34)" 2) 9876543210FEDCBA98765432109876543210FEDC "Apple Distribution: Example Corp (XYZ12ABC3)" 프로젝트 코드 서명 설정: CODE_SIGN_IDENTITY = Apple Development CODE_SIGN_STYLE = Automatic DEVELOPMENT_TEAM = ABC123DEF4 PROVISIONING_PROFILE_SPECIFIER = 설치된 프로비저닝 프로파일: -rw-r--r-- 1 username staff 12345 Feb 1 12:34 01234567-89ab-cdef-0123-456789abcdef.mobileprovision -rw-r--r-- 1 username staff 23456 Mar 15 09:12 fedcba98-7654-3210-fedc-ba9876543210.mobileprovision

7. administrador de paquetes swift

Proporciona acceso a la funcionalidad del Gestor de Paquetes Swift (SPM) para gestionar paquetes Swift. Admite comandos comunes de SPM como init, update, resolve, reset y clean.

Parámetros :

  • command (obligatorio): comando SPM a ejecutar ("init", "update", "resolve", "reset", "clean")
  • packageDir (obligatorio): Ruta del directorio del paquete Swift
  • extraArgs (opcional): argumentos SPM adicionales como una matriz de cadenas

Ejemplo :

Command: update PackageDir: /Users/username/Projects/MySwiftPackage ExtraArgs: ["--enable-pubgrub-resolver"]

Comando generado :

cd "/Users/username/Projects/MySwiftPackage" && swift package update --enable-pubgrub-resolver

Salida de muestra :

Resolving dependencies... Fetching https://github.com/example/example-package.git Checking out https://github.com/example/example-package.git at 1.2.3

8. simctl-manager

Proporciona acceso a las funciones de gestión del simulador de iOS mediante la herramienta de línea de comandos simctl . Permite listar, crear, iniciar, instalar aplicaciones y gestionar dispositivos del simulador.

Parámetros :

  • command (obligatorio): comando SimCtl ("lista", "crear", "arrancar", "apagar", "borrar", "instalar", "iniciar", "eliminar")
  • extraArgs (opcional): argumentos simctl adicionales como una matriz de cadenas

Ejemplo :

Command: list ExtraArgs: ["devices", "--json"]

Comando generado :

xcrun simctl list devices --json

Ejemplo de salida (abreviado) :

{ "devices": { "com.apple.CoreSimulator.SimRuntime.iOS-17-0": [ { "name": "iPhone 14", "udid": "12345678-1234-1234-1234-123456789ABC", "state": "Booted", "isAvailable": true } ] } }

9. ejecutar en el dispositivo

Crea, instala y ejecuta una aplicación en un dispositivo iOS físico. Admite el nombre del dispositivo (incluidos los nombres en coreano) o UUID para la selección del dispositivo, las variables de entorno y la transmisión de registros. Ahora con especificación directa de bundleId, opción para omitir la compilación y argumentos de lanzamiento adicionales .

Parámetros :

  • projectPath (obligatorio): ruta al proyecto Xcode (.xcodeproj) o al espacio de trabajo (.xcworkspace)
  • scheme (obligatorio): El esquema para construir y ejecutar
  • device (obligatorio): identificador o nombre del dispositivo (admite nombres coreanos)
  • configuration (opcional): Configuración de compilación (por ejemplo, Depuración, Versión)
  • streamLogs (opcional): si se deben transmitir los registros del dispositivo después del lanzamiento
  • startStopped (opcional): si se debe iniciar la aplicación en un estado de pausa para adjuntarla al depurador
  • environmentVars (opcional): Variables de entorno para pasar a la aplicación (formato clave1=valor1,clave2=valor2)
  • xcodePath (opcional): ruta de la aplicación Xcode (predeterminado: "/Applications/Xcode-16.2.0.app")
  • listDevices (opcional): muestra todos los dispositivos detectados con sus ID antes de ejecutarse
  • skipBuild (opcional): omite el paso de compilación e instalación para aplicaciones ya instaladas
  • extraLaunchArgs (opcional): argumentos adicionales para pasar al comando de lanzamiento devicectl
  • directBundleId (opcional): especifica directamente el ID del paquete en lugar de extraerlo del proyecto

Ejemplo :

Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: MyAppScheme Device: "Your-iPhone" Configuration: Debug StreamLogs: true EnvironmentVars: "DEBUG_MODE=1,API_URL=https://test-api.example.com"

Proceso :

  1. La herramienta identifica tanto el UDID de Xcode como el UUID de CoreDevice para el dispositivo especificado
  2. Utiliza el UDID de Xcode para crear e instalar la aplicación.
  3. Utiliza el UUID de CoreDevice para iniciar la aplicación con devicectl
  4. Recupera el identificador del paquete de la aplicación.
  5. Si se solicita, transmite los registros del dispositivo.

Mejoras clave en la versión v0.4.0 :

  • Capacidad de especificar bundleId directamente sin necesidad de un proyecto
  • Omitir el paso de compilación e instalación para aplicaciones ya instaladas
  • Compatibilidad con argumentos adicionales del comando de lanzamiento devicectl
  • Mejor visualización de la información del modelo del dispositivo y de la versión del sistema operativo
  • Manejo de rutas y registro mejorados para comandos devicectl

Salida de muestra :

// Standard output with build and install 앱 실행 결과: Launched application with com.example.myapp bundle identifier. 로그 스트리밍이 시작되었습니다. 로그는 터미널에서 확인할 수 있습니다. // Direct bundle ID usage with skip build 기기 모델: iPhone14,7 기기 OS 버전: 17.0 사용자 지정 번들 ID 사용: com.example.myapp 빌드 및 설치 과정 건너뛰기 앱 실행 결과: Launched application with com.example.myapp bundle identifier.

Ejemplo de escenario: uso con LLM

A continuación se muestra un ejemplo de cómo se podría incentivar a un LLM como Claude a utilizar estas herramientas en secuencia:

Mensaje de usuario a Claude:

I need to inspect my Xcode project, run some tests, and then archive it for distribution. 1. First, use the xcode-list-schemes tool to get all available schemes for my project at /Users/username/Projects/MyApp/MyApp.xcodeproj 2. After you see the schemes, run tests for the first available scheme on the iPhone 14 simulator. 3. Then archive the app for distribution using the Release configuration.

Flujo de trabajo esperado:

  1. Claude ejecutará la herramienta xcode-list-schemes para recuperar todos los esquemas:
    Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj
  2. Claude ejecutará la herramienta xcode-test con el esquema identificado:
    Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: [First scheme from output] Destination: platform=iOS Simulator,name=iPhone 14
  3. Luego, Claude usará la herramienta xcode-archive para crear un archivo:
    Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: [First scheme from output] Configuration: Release ArchivePath: /Users/username/Desktop/MyApp.xcarchive

Este flujo de trabajo demuestra cómo encadenar varias herramientas, utilizando la salida de una herramienta para informar los parámetros de otra.

Ejemplo: Ejecución en un dispositivo real

Mensaje de usuario a Claude:

I need to test my app on a real device: 1. Get the list of available devices (including connected physical devices) 2. Run my app on my connected iPhone

Flujo de trabajo esperado:

  1. Claude primero obtendrá la lista de dispositivos:
    listDevices: true
  2. Claude identificará su dispositivo físico y ejecutará la aplicación en él:
    Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: MyApp Device: "Your iPhone" (or the device UUID) StreamLogs: true
  3. Para un relanzamiento rápido sin necesidad de reconstruir:
    Device: "Your iPhone" DirectBundleId: "com.example.myapp" SkipBuild: true

Consideraciones de seguridad

Esta herramienta puede ejecutar comandos relacionados con Xcode, lo que supone riesgos de seguridad. Nota:

  • Úselo solo con proyectos Xcode confiables.
  • Tenga cuidado con los proyectos de fuentes desconocidas.
  • No incluya información confidencial en los parámetros de compilación.

Desarrollo

Requisitos

  • Node.js 16 o superior
  • npm 6 o superior
  • Xcode 14 o superior (para todas las funciones)
  • Xcode 16 o superior (necesario para devicectl y funciones del dispositivo real)

Desarrollo y pruebas locales

# Clone the repository git clone https://github.com/devyhan/xcode-mcp.git cd xcode-mcp # Install dependencies npm install # Run in development mode npm run dev # Build npm run build # Test npm test

Licencia

Instituto Tecnológico de Massachusetts (MIT)

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Un servidor de protocolo de contexto de modelo que proporciona herramientas para operaciones relacionadas con Xcode, lo que facilita el trabajo con la gestión de proyectos de iOS, la creación, las pruebas, el archivo y la implementación de aplicaciones tanto en simuladores como en dispositivos físicos.

  1. Features
    1. Installation
      1. Usage
        1. Using with Claude Desktop
        2. Available Tools
        3. Example Scenario: Using with LLMs
        4. Example: Running on a Real Device
      2. Security Considerations
        1. Development
          1. Requirements
          2. Local Development and Testing
        2. License
          ID: vexusxj8l9