MCP Server for iOS Simulator

Integrations

  • Built on top of appium-ios-simulator to provide iOS simulator interaction capabilities for controlling simulator lifecycle and performing actions.

  • Allows programmatic control of iOS simulators, including starting, stopping, booting, installing and launching apps, taking screenshots, and performing taps on coordinates.

  • Interacts with Xcode's iOS simulator infrastructure to manage simulator instances and perform operations on iOS devices.

📱 Simulador de servidor MCP para iOS

Un servidor que implementa el Protocolo de contexto de modelo (MCP) para simuladores de iOS, construido sobre appium-ios-simulator y que utiliza el SDK de TypeScript de MCP .

📋 Descripción general

Este proyecto conecta los simuladores de iOS con el Protocolo de Contexto de Modelo (MCP), lo que permite una comunicación estandarizada con las instancias de simuladores de iOS. Permite el control programático de los simuladores de iOS, a la vez que aprovecha el protocolo MCP para lograr interfaces consistentes en diferentes entornos. El servidor utiliza stdio como mecanismo de transporte, lo que lo hace ideal para la integración con Claude Desktop y otros clientes compatibles con MCP.

🎬 Demostración

Demostración que muestra cómo iniciar un simulador de iOS usando Claude AI Desktop

🏗️ Arquitectura

El servidor consta de tres componentes principales:

  1. 🔄 Capa de gestión del simulador : gestiona el ciclo de vida y las interacciones del simulador de iOS
  2. 🔌 Implementación del protocolo MCP : implementa el protocolo de contexto de modelo utilizando el SDK de TypeScript con transporte stdio
  3. 📊 Componente Logger : proporciona registro basado en archivos sin interferir con el transporte stdio
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ MCP Protocol │ │ Stdio │ │ Simulator │ │ Implementation │◄────┤ Transport │◄────┤ Management │ │ │ │ │ │ Layer │ └─────────────────┘ └─────────────────┘ └─────────────────┘ ▲ ▲ │ │ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ MCP Client │ │ iOS Simulator │ │ (e.g. Claude) │ │ │ └─────────────────┘ └─────────────────┘

✨ Características

  • 🚀 Iniciar, detener y administrar instancias del simulador de iOS
  • 🔌 Simuladores de arranque y apagado
  • 📲 Instalar y ejecutar aplicaciones en simuladores
  • 📸 Toma capturas de pantalla de las pantallas del simulador
  • 👆 Realizar toques en las coordenadas
  • 🔄 Soporte para múltiples sesiones de simulador simultáneas
  • 📝 Registro completo basado en archivos sin salida de consola
  • 🛡️ Operación resistente a errores

📋 Requisitos previos

  • 🟢 Node.js (v16 o posterior)
  • 🍎 macOS (requerido para simuladores de iOS)
  • 🛠️ Xcode con simuladores de iOS instalados
  • 📜 TypeScript 4.5+

🔧Instalación

# Clone the repository git clone https://github.com/atom2ueki/mcp-server-ios-simulator.git cd mcp-server-ios-simulator # Install dependencies npm install

⚙️ Configuración

La configuración se maneja a través del archivo src/config.ts :

const config = { simulator: { defaultDevice: process.env.SIMULATOR_DEFAULT_DEVICE || 'iPhone 16', defaultOS: process.env.SIMULATOR_DEFAULT_OS || '18.2', timeout: parseInt(process.env.SIMULATOR_TIMEOUT || '30000', 10), } };

Puede personalizar estas configuraciones configurando variables de entorno:

SIMULATOR_DEFAULT_DEVICE=iPhone 16 SIMULATOR_DEFAULT_OS=18.2 SIMULATOR_TIMEOUT=30000

🚀 Uso

🔨 Construyendo e iniciando el servidor

# Build the project npm run build # Start the server npm start

Herramientas MCP

El servidor ofrece dos enfoques distintos para controlar simuladores de iOS:

📱 Gestión directa del simulador (recomendado)

Estas herramientas funcionan directamente con los UDID del simulador y no requieren mantener sesiones:

  • 📋 list-available-simulators : enumera todos los simuladores disponibles con sus UDID
  • ▶️ boot-simulator-by-udid - Arranca un simulador directamente usando su UDID
  • ⏹️ shutdown-simulator-by-udid - Apaga un simulador directamente usando su UDID
  • 📊 list-booted-simulators - Lista todos los simuladores iniciados actualmente

Utilice este enfoque cuando: simplemente desee iniciar, usar y apagar simuladores directamente.

📱 Gestión basada en sesiones (avanzada)

Estas herramientas utilizan una capa de sesión que rastrea simuladores con ID de sesión personalizados:

  • 📋 list-simulator-sessions - Lista todas las sesiones activas del simulador
  • create-simulator-session - Crea una nueva sesión de simulador
  • terminate-simulator-session - Terminar una sesión (apaga el simulador y lo limpia)
  • 🔄 create-and-boot-simulator : crea una nueva sesión de simulador y la inicia
  • ▶️ boot-simulator : inicia un simulador para una sesión existente
  • ⏹️ shutdown-simulator - Apaga un simulador para una sesión existente

Utilice este enfoque cuando: necesite realizar un seguimiento de metadatos del simulador, hacer referencia a simuladores mediante identificaciones personalizadas o utilizar funciones de gestión más avanzadas.

📲 Gestión de aplicaciones

  • 📥 install-app - Instalar una aplicación en un simulador
  • 🚀 launch-app - Inicia una aplicación en un simulador
  • 🛑 terminate-app - Finaliza una aplicación en ejecución en un simulador

🖱️ Herramientas de interacción

  • 📷 take-screenshot : toma una captura de pantalla de la pantalla del simulador
  • 👆 tap-coordinate - Realiza un toque en las coordenadas especificadas

🤖 Ejemplo de uso con Claude Desktop

  1. Configure Claude Desktop para utilizar este servidor como una herramienta MCP:
    • Abra Claude Desktop
    • Vaya a Configuración > Avanzado
    • Agregue la siguiente configuración a la sección "Servidores MCP":
    { "mcpServers": { "simulator": { "command": "node", "args": [ "/path/to/your/mcp-server-ios-simulator/dist/index.js" ] } } }
    • Reemplace /path/to/your con la ruta real donde instaló este repositorio
    • Guarde la configuración y reinicie Claude Desktop
  2. Utilice las herramientas proporcionadas para controlar simuladores de iOS directamente desde Claude Desktop:Enfoque UDID directo (recomendado):
    1. Primero, pídele a Claude que enumere los simuladores disponibles:
      "Show me all available iOS simulators"
    2. Luego use el UDID para iniciar un simulador específico:
      "Boot the iOS simulator with UDID 5272EA61-5796-4372-86FE-3B33831D5CC1"
    3. Cuando termine, apáguelo usando el mismo UDID:
      "Shut down the simulator with UDID 5272EA61-5796-4372-86FE-3B33831D5CC1"

    El enfoque UDID directo es más simple y confiable para la mayoría de los casos de uso.

    Enfoque basado en sesiones (avanzado): utilice este enfoque solo si necesita las funciones avanzadas de seguimiento de sesiones:

    "Create a new simulator session for iPhone 16 Pro with iOS 18.2" "Boot the simulator for session abc-123" "Take a screenshot of the simulator for session abc-123" "Terminate the simulator session abc-123"

👨‍💻 Desarrollo

📁 Estructura del proyecto

src/ ├── simulator/ # Simulator management layer ├── mcp/ # MCP protocol implementation ├── bridge/ # Bridge component ├── utils/ # Utility functions including logger ├── config.ts # Configuration handling └── index.ts # Entry point

🔨 Construyendo el Proyecto

# Install development dependencies npm install # Run TypeScript compiler npm run build

📜 Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

🙏 Agradecimientos

-
security - not tested
F
license - not found
-
quality - not tested

Un puente entre los simuladores de iOS y el Protocolo de Contexto de Modelo, que permite el control programático de simuladores de iOS a través de interfaces de comunicación estandarizadas.

  1. 📋 Overview
    1. 🎬 Demo
      1. 🏗️ Architecture
        1. ✨ Features
          1. 📋 Prerequisites
            1. 🔧 Installation
              1. ⚙️ Configuration
                1. 🚀 Usage
                  1. 🔨 Building and Starting the Server
                  2. 🧰 MCP Tools
                  3. 🤖 Example Usage with Claude Desktop
                2. 👨‍💻 Development
                  1. 📁 Project Structure
                  2. 🔨 Building the Project
                3. 📜 License
                  1. 🙏 Acknowledgments
                    ID: 18at56szif