/ Directorio / Playground / iOS Simulator MCP
● Comunidad joshuayoes ⚡ Instantáneo

iOS Simulator MCP

por joshuayoes · joshuayoes/ios-simulator-mcp

Maneja xcrun simctl + idb desde Claude — arranca un simulador, instala tu .app, toca, escribe, toma capturas, graba video, todo sin cambiar a Xcode.

iOS Simulator MCP envuelve xcrun simctl de Apple más idb de Facebook para que Claude opere el Simulador de iOS. Perfecto para bucles de test de UI, reproducción de bugs y captura de capturas de pantalla/video para tickets de issues — exactamente el tipo de trabajo donde cambiar entre Xcode y el chat es tedioso.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

ios-simulator-mcp.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

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

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

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": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

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

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ios-simulator-mcp",
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  ]
}

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

~/.config/zed/settings.json
{
  "context_servers": {
    "ios-simulator-mcp": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "ios-simulator-mcp"
        ]
      }
    }
  }
}

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

claude mcp add ios-simulator-mcp -- npx -y ios-simulator-mcp

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

Casos de uso

Usos del mundo real: iOS Simulator MCP

Generar capturas de pantalla para el App Store en varios dispositivos

👤 Devs iOS preparando un lanzamiento ⏱ ~25 min intermediate

Cuándo usarlo: Necesitas capturas de 6.5", 6.7", iPad en modo claro + oscuro, rápido.

Requisitos previos
  • Xcode + simctl — Instalación estándar de Xcode
  • idb instaladobrew tap facebook/fb && brew install idb-companion
  • Bundle .app construidoxcodebuild -scheme YourApp -destination 'platform=iOS Simulator' build
Flujo
  1. Configurar dispositivos
    Arranca los simuladores iPhone 15 Pro Max y iPad Pro 13 pulgadas. Listarlos cuando estén listos.✓ Copiado
    → list_simulators muestra ambos como Booted
  2. Configurar barra de estado
    Configura la barra de estado a las 9:41, batería llena, señal completa en ambos. Estilo App Store.✓ Copiado
    → status_bar_set tiene éxito; aspecto limpio
  3. Instalar + capturas
    Instala MyApp.app en ambos. Lanza, navega Inicio → Perfil → Ajustes, captura cada pantalla en modo claro y oscuro. Guarda en /screenshots/<device>/<mode>/.✓ Copiado
    → Carpeta por dispositivo, con variantes claro + oscuro de cada pantalla

Resultado: Pack completo de capturas para el App Store en ~10 min, sin captura manual.

Errores comunes
  • El simulador arranca pero la app falla al lanzar — Extrae el log de simctl; comprueba si faltan entitlements
  • El contenido del Dynamic Island cubre los ajustes de barra de estado — En Pro Max, status_bar_set sigue aplicándose bajo el DI
Combinar con: filesystem

Capturar un video de reproducción limpio para un bug de UI

👤 Devs iOS / QA ⏱ ~10 min beginner

Cuándo usarlo: El bug solo se reproduce en el simulador; quieres un video para el ticket.

Flujo
  1. Iniciar grabación
    Arranca iPhone 15. Instala build.app. Inicia la grabación de pantalla.✓ Copiado
    → record_video_start devuelve recording id
  2. Reproducir
    Abre la app. Toca Perfil, luego el lápiz de Editar. Escribe 'Test' en el campo de nombre. Toca Guardar. Espera 2 segundos.✓ Copiado
    → Secuencia ejecutada; bug visible si se reproduce
  3. Detener y adjuntar
    Detén la grabación, guarda como bug-1234.mov en /tickets/.✓ Copiado
    → MOV guardado

Resultado: Video de reproducción listo para adjuntar al ticket.

Errores comunes
  • El toque no llegó porque el layout difiere del esperado — Usa describe_ui primero para encontrar los frames actuales
Combinar con: filesystem · github

Ejecutar un bucle de prueba de humo después de cada rebuild

👤 Devs iOS en un ciclo ajustado de build/test ⏱ ~15 min intermediate

Cuándo usarlo: Estás iterando en una pantalla y quieres una prueba de humo de 30 segundos después de cada rebuild.

Flujo
  1. Rebuild + reinstalar
    Ejecuta xcodebuild para el scheme MyApp Debug, luego reinstala en el simulador arrancado.✓ Copiado
    → La instalación tiene éxito con el nuevo bundle
  2. Ejecutar el flujo de humo
    Abre la app, inicia sesión con la cuenta de prueba, navega a la pantalla en la que estoy trabajando, captura.✓ Copiado
    → La captura se ve bien; sin crashes en el log

Resultado: Ciclo de build/test más rápido sin tapping manual.

Errores comunes
  • El flujo de inicio de sesión tiene un captcha — Usa un build con bypass de captcha o stubea el flujo de auth

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

ios-simulator-mcp + filesystem

Guardar capturas de pantalla en tu repositorio

Captura las pantallas principales, guarda en /design/screenshots/.✓ Copiado
ios-simulator-mcp + github

Abrir un issue de bug con video de reproducción

Graba el bug, luego crea un issue en GitHub adjuntando el MOV y los pasos de reproducción.✓ Copiado
ios-simulator-mcp + xcodebuildmcp

Construir e inmediatamente ejecutar prueba de humo

XcodeBuild: construye Debug. Sim: instala + lanza + captura.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
list_simulators (ninguno) Primer paso gratis
boot_simulator device_id: str Encender un simulador gratis
install_app device_id, path: str (.app) Subir un build gratis
launch_app device_id, bundle_id: str Abrir la app gratis
tap device_id, x, y Tocar una coordenada gratis
type_text device_id, text: str Introducir texto gratis
screenshot device_id, path? Capturar estado gratis
record_video_start device_id, path: str Iniciar video gratis
record_video_stop recording_id Finalizar video gratis
describe_ui device_id Encontrar coordenadas para tapping gratis
status_bar_set device_id, time, battery, signal Capturas limpias para App Store gratis

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Ninguna — local
Tokens por llamada
100–800; las capturas se referencian por ruta, no embebidas
Monetario
OSS gratuito
Consejo
Usa describe_ui para encontrar coordenadas de tap una vez en lugar de adivinar repetidamente

Seguridad

Permisos, secretos, alcance

Ámbitos mínimos: ejecutar simctl + idb
Almacenamiento de credenciales: Ninguno — pero los datos de app en el simulador son tuyos
Salida de datos: Solo local
No conceder nunca: acceso root / kernel

Resolución de problemas

Errores comunes y soluciones

idb no encontrado

brew tap facebook/fb && brew install idb-companion; también pip install fb-idb

Verificar: idb list-targets
El toque no llega

Usa describe_ui; las coordenadas difieren según el tamaño del dispositivo; el elemento puede estar en una hoja

El simulador arranca pero permanece en negro

Shutdown + reset del simulador; a veces el runtime de Xcode necesita volver a descargarse

La grabación se corrompe

Usa simctl io recordVideo directamente; el wrapper de idb falla ocasionalmente en el modo de reposo de macOS

Alternativas

iOS Simulator MCP vs otros

AlternativaCuándo usarlaContrapartida
XcodeBuildMCP (Sentry)Quieres build + simulador en un solo MCPMás pesado; alcance más amplio
MaestroQuieres un DSL completo de testing de UINo está orientado a LLM por defecto
Xcode Cloud / FastlaneCI de producciónCapa diferente; no interactivo

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills