simctl-mcp
simctl-mcp: An MCP Server for AI-driven iOS Simulator control and automation.

simctl-mcp Solution Overview
simctl-mcp is an MCP server designed to control iOS Simulators, enabling AI models to automate tasks on iOS environments. It offers a standardized interface for interacting with simulators via the Model Context Protocol, streamlining iOS testing and development workflows. Key features include device and app management, permission control, and access to system features like clipboard and appearance settings.
This server supports both STDIO and HTTP communication modes, integrating seamlessly with AI models to execute commands such as installing/uninstalling apps, modifying settings, and capturing screenshots. By using simctl-mcp, developers can leverage AI to automate simulator interactions, enhancing efficiency and enabling advanced testing scenarios. Configuration is managed through .cursor/mcp.json
or .vscode/mcp.json
, ensuring easy setup and customization.
simctl-mcp Key Capabilities
iOS Simulator Device Management
simctl-mcp provides comprehensive device management capabilities for iOS Simulators, allowing AI models to create, delete, boot, and shut down simulators programmatically. This is crucial for automated testing and development workflows where different simulator configurations are required. The tool can list available devices, device types, and runtimes, enabling AI models to dynamically adapt to various testing environments. For example, an AI model could automatically create a new simulator with a specific iOS version and device type to test an app's compatibility. This eliminates the need for manual simulator setup, saving developers time and ensuring consistent testing conditions. The underlying implementation leverages Apple's simctl
command-line tool, abstracting away the complexities of interacting directly with the simulator.
Automated App Lifecycle Control
This feature enables AI models to fully manage the lifecycle of applications within the iOS Simulator. It supports installing, uninstalling, launching, and terminating apps, as well as retrieving app container paths and information. This is particularly useful for automated UI testing and performance analysis. For instance, an AI model could automatically install a new build of an app, launch it, perform a series of automated tests, and then terminate the app to collect performance metrics. This allows for continuous integration and continuous delivery (CI/CD) pipelines to be fully automated, reducing manual effort and improving the speed of development cycles. The implementation relies on simctl
commands to interact with the simulator's app management system.
Fine-Grained App Permission Management
simctl-mcp allows AI models to programmatically grant, revoke, and reset app permissions within the iOS Simulator. This is essential for testing how an app behaves under different permission scenarios, ensuring that it handles permission requests gracefully and protects user privacy. For example, an AI model could automatically revoke location permissions from an app and then test how the app responds when it cannot access the user's location. This helps developers identify and fix potential issues related to permission handling. The feature uses simctl
to modify the simulator's privacy settings, providing a reliable and consistent way to manage app permissions.
HTTP Server Mode for Integration
simctl-mcp supports both STDIO and HTTP Server communication modes. The HTTP Server mode allows for easier integration with various AI models and platforms, especially those that communicate over HTTP. By running simctl-mcp as an HTTP server, AI models can send commands to the simulator via HTTP requests and receive responses in a structured format. This simplifies the process of integrating simulator control into existing AI-powered workflows. For example, an AI model running in a cloud environment can control an iOS Simulator running on a local machine via HTTP, enabling remote testing and development scenarios. The HTTP server is implemented using a lightweight web framework, providing a simple and efficient way to interact with the simulator.