iOS simulators MCP

by InditexTech
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Leverages Facebook's idb tool to interact with iOS simulators, enabling app installation, UI automation, and debugging features.

  • Enables control of iOS simulators through natural language commands, supporting simulator management, app installation and launching, UI interaction, accessibility testing, screenshot/video capture, debugging, and crash log analysis.

  • Utilizes Meta's idb technology to provide iOS simulator control, supporting app testing, UI automation, and device management.

📱 Simulador de servidor MCP para iOS

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a los LLM interactuar con simuladores de iOS a través de comandos de lenguaje natural.

ℹ️ Descripción general

Este servidor MCP conecta los Modelos de Lenguaje Grandes (LLM) con los simuladores de iOS, ofreciendo un control completo mediante comandos de lenguaje natural. Esto es lo que puede hacer:

Para obtener información detallada sobre su uso, consulte la Guía de instalación y las secciones Comandos compatibles. Puede usar este servidor mediante integración directa con MCP o como biblioteca independiente.

Consulta la sección Arquitectura para comprender cómo funcionan juntos los componentes para permitir el control del lenguaje natural de los simuladores de iOS.

🎮 Control del simulador

  • Crear y gestionar sesiones de simulador
  • Estados del simulador de arranque, apagado y monitorización
  • Lista de simuladores disponibles y en funcionamiento
  • Ventanas del simulador de enfoque

📱 Gestión de aplicaciones

  • Instalar y administrar aplicaciones iOS
  • Iniciar, finalizar y desinstalar aplicaciones
  • Supervisar los estados de las aplicaciones y verificar las instalaciones
  • Gestionar permisos y configuraciones de aplicaciones

🖱️ Interacción y pruebas de la interfaz de usuario

  • Interactuar con la interfaz de usuario del simulador
  • Ejecutar acciones de tocar, deslizar y presionar botones
  • Texto de entrada y secuencias de teclas
  • Acceda a elementos de accesibilidad para pruebas de IU
  • Grabar vídeos de interacciones de la interfaz de usuario

🛠️ Desarrollo y depuración

  • Capturar capturas de pantalla y registros del sistema
  • Depurar aplicaciones en tiempo real
  • Supervisar y analizar registros de fallos
  • Instalar bibliotecas dinámicas y administrar datos de aplicaciones

⚡ Funciones avanzadas

  • La funcionalidad adicional incluye:
    • Simulación de ubicación
    • Inyección de medios
    • Manejo de esquemas de URL
    • Gestión de bases de datos de contactos
    • Operaciones de llavero

Para obtener información detallada sobre su uso, consulte la Guía de instalación y las secciones Comandos compatibles. Puede usar este servidor mediante integración directa con MCP o como biblioteca independiente.

Consulta la sección Arquitectura para comprender cómo funcionan juntos los componentes para permitir el control del lenguaje natural de los simuladores de iOS.

📋 Requisitos

  • macOS : necesario para la compatibilidad con el simulador de iOS
  • Node.js : v14.0.0 o superior
  • Homebrew : Necesario para instalar dependencias
  • XCode : Con simuladores de iOS instalados

🚀 Instalación

La forma más fácil de instalar este servidor es a través de Cline:

  1. Simplemente pregúntele a Cline:
Add this mcp to cline https://github.com/InditexTech/mcp-server-simulator-ios-idb
  1. Cline manejará el proceso de instalación automáticamente, incluida la gestión de dependencias y la configuración.

Alternativamente, puedes instalarlo manualmente:

# Clone the repository git clone https://github.com/InditexTech/mcp-server-simulator-ios-idb.git cd mcp-server-simulator-ios-idb # Create and activate Python virtual environment python3 -m venv venv source venv/bin/activate # On Unix/macOS # Install dependencies npm install # Build the project npm run build # Start the project npm start # Run tests npm test

El proceso de instalación se realizará automáticamente:

  1. Comprueba si estás ejecutando macOS
  2. Instalar idb-companion mediante Homebrew
  3. Instalar fb-idb a través de pip en el entorno virtual

Nota: Asegúrese de mantener el entorno virtual activado mientras usa el servidor. Si cierra la terminal y vuelve más tarde, deberá reactivar el entorno virtual con el comando source venv/bin/activate antes de ejecutar npm start .

🔌 Integración MCP

Para utilizar este servidor con Claude u otros asistentes de LLM:

  1. Agregue el servidor a su configuración de MCP en Claude Desktop:
{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }
  1. El LLM ahora puede usar comandos de lenguaje natural para controlar simuladores de iOS:
create a simulator session with iPhone 14 install app /path/to/my-app.ipa launch app com.example.myapp tap at 100, 200 take a screenshot

📚 Uso como Biblioteca

También puedes utilizar este paquete como biblioteca en tus propios proyectos:

🔰 Uso básico

import { createMCPServer } from 'mcp-server-simulator-ios-idb'; async function main() { // Create an instance of the MCP server const { orchestrator } = createMCPServer(); // Process natural language commands // Create a simulator session const sessionResult = await orchestrator.processInstruction('create session'); console.log(`Session created: ${sessionResult.data}`); // Interact with the simulator await orchestrator.processInstruction('tap at 100, 200'); // Capture a screenshot const screenshotResult = await orchestrator.processInstruction('take screenshot'); console.log(`Screenshot saved at: ${screenshotResult.data}`); } main().catch(console.error);

🚀 Uso avanzado

También puedes utilizar los componentes individuales directamente:

import { IDBManager, NLParser, MCPOrchestrator, ParserToOrchestrator, OrchestratorToIDB } from 'mcp-server-simulator-ios-idb'; // Create instances const idbManager = new IDBManager(); const parser = new NLParser(); const orchestrator = new MCPOrchestrator(parser, idbManager); // Use the components directly const sessionId = await idbManager.createSimulatorSession({ deviceName: 'iPhone 12', platformVersion: '15.0' }); await idbManager.tap(sessionId, 100, 200);

🏗️ Estructura del proyecto

mcp-server-simulator-ios-idb/ ├── src/ # Source code │ ├── adapters/ # Adapter components │ ├── idb/ # IDB manager implementation │ ├── mcp/ # MCP server implementation │ ├── orchestrator/ # Command orchestrator │ ├── parser/ # Natural language parser │ └── index.ts # Main entry point ├── types/ # TypeScript type definitions ├── scripts/ # Installation scripts ├── package.json # Project configuration └── tsconfig.json # TypeScript configuration

🎯 Comandos compatibles

El NLParser admite los siguientes comandos de lenguaje natural:

🎮 Gestión del simulador

DominioDescripciónEjemplo
Crear sesiónCrea una nueva sesión de simulador"crear sesión", "crear simulador de iPhone 12"
Terminar sesiónTermina la sesión actual"Terminar sesión", "Cerrar simulador"
Simuladores de listasLista de simuladores disponibles"enumerar simuladores", "mostrar simuladores"
Lista de simuladores iniciadosListas de simuladores en ejecución"Enumerar simuladores iniciados", "Mostrar simuladores en ejecución"
Simulador de arranqueArranca un simulador mediante UDIDSimulador de arranque 5A321B8F-4D85-4267-9F79-2F5C91D142C2
Simulador de apagadoApaga un simuladorSimulador de apagado 5A321B8F-4D85-4267-9F79-2F5C91D142C2
Simulador de enfoqueTrae la ventana del simulador al frente"simulador de enfoque", "traer el simulador al frente"
Lista de sesiones del simuladorEnumera las sesiones activas del simulador"Enumerar sesiones del simulador", "Mostrar sesiones activas"

📱 Gestión de aplicaciones

DominioDescripciónEjemplo
Instalar aplicaciónInstala una aplicación en el simulador."instalar la aplicación /ruta/a/app.ipa"
Iniciar aplicaciónInicia una aplicación en el simulador."iniciar la aplicación com.example.app"
Terminar la aplicaciónFinaliza una aplicación en ejecución"Terminar la aplicación com.example.app"
Desinstalar la aplicaciónDesinstala una aplicación"desinstalar la aplicación com.example.app"
Lista de aplicacionesEnumera las aplicaciones instaladas"listar aplicaciones", "mostrar aplicaciones instaladas"
Comprobar si la aplicación está instaladaComprueba si una aplicación está instalada"¿Está instalada la aplicación com.example.app?"

🖱️ Interacción de la interfaz de usuario

DominioDescripciónEjemplo
GrifoToca en coordenadas específicas"toque a 100, 200"
Golpe fuerteRealiza un gesto de deslizamiento"Desliza del 100, 200 al 300, 400"
Presione el botónPresiona un botón del dispositivo"pulsa el botón HOME", "pulsa el botón SIRI"
Texto de entradaTipos de texto"Texto de entrada Hola mundo"
Presione la teclaPresiona una tecla por código"presione la tecla 4"
Secuencia de teclas de prensaPresiona una secuencia de teclas"presione la secuencia de teclas 4 5 6"

♿ Accesibilidad

DominioDescripciónEjemplo
Describir elementosEnumera todos los elementos de accesibilidad"describir todos los elementos", "mostrar elementos de accesibilidad"
Describir el puntoDescribe el elemento en coordenadas"describe el punto 100, 200", "¿qué hay en 150, 300?"

📸 Captura y registros

DominioDescripciónEjemplo
Tomar captura de pantallaCaptura una captura de pantalla"tomar captura de pantalla", "capturar pantalla"
Grabar vídeoRegistra la actividad de la pantalla"grabar vídeo /ruta/salida.mp4"
Detener la grabaciónDetiene la grabación de vídeo"detener la grabación", "detener la grabación de vídeo"
Obtener registrosRecupera registros del sistema o de la aplicación"obtener registros", "obtener registros para com.example.app"

🐛 Depuración

DominioDescripciónEjemplo
Iniciar depuraciónInicia una sesión de depuración"depurar aplicación com.example.app", "iniciar depuración com.example.app"
Detener la depuraciónDetiene una sesión de depuración"detener la depuración", "finalizar la sesión de depuración"
Estado de depuraciónObtiene el estado de la sesión de depuración"estado de depuración", "mostrar información de depuración"

💥 Registros de fallos

DominioDescripciónEjemplo
Lista de registros de fallosEnumera los registros de fallos disponibles"listar registros de fallos", "mostrar registros de fallos"
Mostrar registro de fallosMuestra el contenido de un registro de fallos"mostrar registro de fallos crash_2023-01-01"
Eliminar registros de fallosElimina los registros de fallos"eliminar registros de fallos", "borrar registros de fallos"

🔧 Comandos adicionales

DominioDescripciónEjemplo
Instalar dylibInstala una biblioteca dinámica"instalar dylib /ruta/a/biblioteca.dylib"
Abrir URLAbre una URL en el simulador."abrir URL https://ejemplo.com "
llavero transparenteLimpia el llavero del simulador."Llavero transparente"
Establecer ubicaciónEstablece la ubicación del simulador."establecer ubicación 37.7749, -122.4194"
Agregar mediosAgrega medios al carrete de la cámara"añadir medio /ruta/a/imagen.jpg"
Aprobar permisosAprueba los permisos de la aplicación"Aprobar permisos com.example.app fotos cámara"
Actualizar contactosActualiza la base de datos de contactos"actualizar contactos /ruta/a/contactos.sqlite"

La interfaz admite todos los comandos disponibles en la herramienta CLI de idb, lo que proporciona un conjunto completo de operaciones para la automatización del simulador de iOS.

🔍 Arquitectura

El servidor consta de tres componentes principales:

  1. IDBManager : Componente de bajo nivel que interactúa directamente con simuladores de iOS a través de idb.
  2. NLParser : Componente que interpreta instrucciones en lenguaje natural y las convierte en comandos estructurados.
  3. MCPOrchestrator : Componente central que coordina las interacciones entre el analizador y el IDBManager.

Estos componentes se conectan mediante adaptadores:

  • ParserToOrchestrator : convierte los resultados del analizador en comandos del orquestador.
  • OrchestratorToIDB : traduce los comandos del orquestador en llamadas IDBManager.

🔌 Integración MCP

Para utilizar este servidor con el Protocolo de Contexto de Modelo:

  1. Agregue el servidor a su configuración de MCP:
{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }
  1. Conéctese al servidor en su aplicación LLM:
const result = await useMcpTool({ serverName: "ios-simulator", toolName: "process-instruction", arguments: { instruction: "create simulator session" } });

🙏 Agradecimientos

Este proyecto no sería posible sin facebook/idb , que proporciona las funciones básicas de control del simulador de iOS. Agradecemos sinceramente al equipo de Facebook/Meta y a todos los colaboradores del proyecto idb por crear y mantener una herramienta tan potente y fiable.

📄 Licencia

Esta herramienta está disponible como código abierto bajo los términos de Apache-2.0.

ID: lpriwa3d78