xcsimctl
Gestiona simuladores de Xcode.
GitHub
1
Prueba este MCPPatrocinadoDocumentación
Servidor MCP SimCtl
Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso estructurado a la gestión del Simulador de iOS mediante comandos xcrun simctl.
Instalación
Método 1: Usando uvx
-
Requisitos previos:
- Python 3.13+
- Xcode con herramientas de línea de comandos instaladas
- uvx:
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Ejecutar directamente con uvx:
uvx simctl-mcp-server
Método 2: Instalación de desarrollo local
-
Requisitos previos:
- Python 3.13+
- Xcode con herramientas de línea de comandos instaladas
-
Clonar e instalar:
git clone https://github.com/nzrsky/simctl-mcp-server cd simctl-mcp-server pip install . -
Ejecutar el servidor:
simctl-mcp-server
Método 3: Compilar desde el código fuente
- Compilar el paquete:
python -m build --wheel pip install dist/simctl_mcp_server-0.1.0-py3-none-any.whl
Configuración
Para Claude Desktop
Añade a tu ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"simctl": {
"command": "simctl-mcp-server",
"args": [],
"env": {}
}
}
}
O si usas uvx:
{
"mcpServers": {
"simctl": {
"command": "uvx",
"args": ["simctl-mcp-server"],
"env": {}
}
}
}
Para VS Code con la extensión MCP
- Instala la extensión MCP desde el marketplace de VS Code
- Añade la configuración del servidor a la configuración de VS Code (
settings.json):
{
"mcp.servers": {
"simctl": {
"command": "simctl-mcp-server",
"args": [],
"env": {}
}
}
}
O si usas uvx:
{
"mcp.servers": {
"simctl": {
"command": "uvx",
"args": ["simctl-mcp-server"],
"env": {}
}
}
}
- Reinicia VS Code para cargar el servidor MCP
- Usa la paleta de comandos (
Cmd+Shift+P) y busca comandos "MCP" para interactuar con las herramientas del simulador
Para otros clientes MCP
El servidor se ejecuta en stdio, por lo que puedes invocarlo directamente:
Con el paquete instalado:
simctl-mcp-server
Con uvx:
uvx simctl-mcp-server
Herramientas disponibles
Gestión de dispositivos
simctl_list_devices- Lista todos los simuladores y sus estadossimctl_boot_device- Inicia un simuladorsimctl_shutdown_device- Apaga un simuladorsimctl_create_device- Crea un nuevo simuladorsimctl_delete_device- Elimina simuladores
Gestión de aplicaciones
simctl_install_app- Instala una aplicación (paquete .app o .ipa)simctl_launch_app- Lanza una aplicación con opcionessimctl_terminate_app- Termina una aplicación en ejecución
Medios y capturas de pantalla
simctl_screenshot- Toma capturas de pantallasimctl_record_video- Graba video (inicia la grabación)
Pruebas y desarrollo
simctl_push_notification- Envía notificaciones pushsimctl_privacy_control- Gestiona permisos de aplicacionessimctl_set_location- Establece ubicación/GPS del dispositivosimctl_status_bar_override- Sobrescribe la apariencia de la barra de estadosimctl_ui_appearance- Controla el modo claro/oscuro
Ejemplos de uso
Operaciones básicas de dispositivos
# List all devices
"List all available iOS simulators"
# Boot a specific device
"Boot the iPhone 15 Pro simulator"
# Create a new simulator
"Create a new iPhone 14 simulator named 'Test Device' with iOS 17.0"
Pruebas de aplicaciones
# Install and launch an app
"Install MyApp.app on the booted simulator and launch it"
# Take a screenshot
"Take a screenshot of the current simulator and save it to ~/Desktop/screenshot.png"
# Send a push notification
"Send a push notification with title 'Hello' and body 'Test message' to com.example.myapp"
Configuración de pruebas de UI
# Set up a controlled testing environment
"Set the simulator to dark mode, override the status bar to show full battery and strong WiFi, and set the time to 9:41 AM"
# Grant permissions for testing
"Grant photo library access to com.example.myapp on the booted simulator"
Pruebas de ubicación
# Set specific location
"Set the simulator location to Apple Park (37.334606, -122.009102)"
# Clear location
"Clear the simulated location on the booted device"
Manejo de errores
El servidor incluye un manejo integral de errores:
- Fallos de comandos: Devuelve mensajes de error detallados de simctl
- Xcode faltante: Detecta cuando xcrun simctl no está disponible
- Parámetros inválidos: Valida los parámetros de entrada antes de la ejecución
- Operaciones de archivos: Maneja archivos temporales para notificaciones push de forma segura
Consideraciones de seguridad
- El servidor solo expone operaciones de lectura y gestión del simulador
- Sin acceso al sistema de archivos del host más allá de las rutas de aplicaciones especificadas
- Los payloads de notificaciones push se validan en cuanto a su estructura
- Los cambios de permisos de privacidad son explícitos y se registran
Notas de desarrollo
- Construido específicamente para flujos de trabajo de desarrollo de iOS
- Optimizado para tareas comunes de gestión de simuladores
- Análisis de salida estructurada para respuestas JSON
- Soporte para operaciones individuales y por lotes
- Compatible con funciones del simulador de Xcode 15+