Xcode Simctl
@nzrsky
About Xcode Simctl
No overview available yet
Basic information
Config
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"simctl": {
"command": "uvx",
"args": [
"simctl-mcp-server"
],
"env": {}
}
}
}Tools
15List available iOS simulators and their states. Args: format: Output format (json or text). Defaults to json. filter: Optional filter term (e.g., 'available', 'iPhone', 'iOS 17') Returns: List of available simulators
Boot a simulator device. Args: device: Device UDID, name, or 'booted' for current device arch: Architecture to use when booting (arm64 or x86_64) Returns: Success message
Shutdown a simulator device. Args: device: Device UDID, name, or 'booted' for current device Returns: Success message
Create a new simulator device. Args: name: Name for the new device device_type: Device type identifier (e.g., 'iPhone 15 Pro') runtime: Runtime identifier (e.g., 'iOS 17.0') Returns: Created device information
Delete simulator devices. Args: devices: List of device UDIDs, names, or 'unavailable' to delete all unavailable devices Returns: Success message
Install an app on a simulator device. Args: device: Device UDID, name, or 'booted' for current device app_path: Path to .app bundle or .ipa file Returns: Success message
Launch an app on a simulator device. Args: device: Device UDID, name, or 'booted' for current device bundle_id: App bundle identifier wait_for_debugger: Wait for debugger to attach before launching console_mode: Console output mode (none, console, console-pty) args: Additional launch arguments Returns: Launch result
Terminate an app on a simulator device. Args: device: Device UDID, name, or 'booted' for current device bundle_id: App bundle identifier Returns: Success message
Take a screenshot of a simulator device. Args: device: Device UDID, name, or 'booted' for current device output_path: Path where to save the screenshot format: Image format (png, jpeg) display: Display to capture (internal, external) Returns: Success message
Start recording video of a simulator device. Args: device: Device UDID, name, or 'booted' for current device output_path: Path where to save the video codec: Video codec (hevc, h264) display: Display to record (internal, external) Returns: Recording start message
Send a push notification to a simulator device. Args: device: Device UDID, name, or 'booted' for current device payload: Push notification payload as JSON object bundle_id: Target app bundle identifier (optional if specified in payload) Returns: Success message
Control app privacy permissions on a simulator device. Args: device: Device UDID, name, or 'booted' for current device action: Privacy action (grant, revoke, reset) service: Privacy service (photos, camera, microphone, location, etc.) bundle_id: App bundle identifier (optional) Returns: Success message
Set or clear device location on a simulator. Args: device: Device UDID, name, or 'booted' for current device action: Location action (set, clear, run) latitude: Latitude coordinate (required for 'set' action) longitude: Longitude coordinate (required for 'set' action) scenario: Location scenario (required for 'run' action) Returns: Success message
Override status bar appearance on a simulator device. Args: device: Device UDID, name, or 'booted' for current device action: Status bar action (override, clear) time: Time to display (e.g., "9:41") data_network: Data network type (wifi, 3g, 4g, lte, lte-a, lte+, 5g, 5g+, 5g-uw) wifi_bars: WiFi signal strength (0-3) cellular_bars: Cellular signal strength (0-4) battery_level: Battery level percentage (0-100) battery_state: Battery state (charging, charged, discharging) Returns: Success message
Get or set UI appearance (light/dark mode) on a simulator device. Args: device: Device UDID, name, or 'booted' for current device appearance: UI appearance (light, dark). If not provided, returns current appearance. Returns: Current or updated appearance
Overview
What is Xcode Simctl?
An MCP server that wraps xcrun simctl to provide structured, programmatic control of iOS Simulators. It is designed for iOS developers and QA engineers who need to automate simulator workflows from AI assistants or development tools.
How to use Xcode Simctl?
Install with uvx simctl-mcp-server or by cloning the repo and running pip install .. Configure by adding the server to your MCP client (e.g., Claude Desktop or VS Code MCP extension) with command simctl-mcp-server or uvx simctl-mcp-server. The server communicates over stdio and exposes tools that can be called directly from your AI assistant.
Key features of Xcode Simctl
- List, boot, shutdown, create, and delete simulators
- Install, launch, and terminate apps on simulators
- Take screenshots and record video
- Send push notifications to a running app
- Manage privacy permissions and location simulation
- Override status bar and UI appearance (light/dark mode)
Use cases of Xcode Simctl
- Automating iOS app installation, launch, and screenshot capture in CI
- Setting up a known simulator state (dark mode, status bar tweaks) for UI testing
- Testing push notification delivery end-to-end without a real device
- Simulating location for GPS-dependent app features
- Granting or revoking privacy permissions during test runs
FAQ from Xcode Simctl
What prerequisites are required?
Python 3.13+, Xcode with Command Line Tools, and optionally uvx for running the server directly.
How do I configure Xcode Simctl for Claude Desktop?
Add a simctl entry to ~/Library/Application Support/Claude/claude_desktop_config.json with command: "simctl-mcp-server" or "uvx" with args ["simctl-mcp-server"].
What simulator management operations are supported?
All standard xcrun simctl operations: device lifecycle (list, boot, shutdown, create, delete), app management (install, launch, terminate), media capture, push notifications, privacy permissions, location, status bar, and appearance.
Does Xcode Simctl have access to my host file system?
Access is limited to specified app paths and temporary files for push notifications. No broad file system access is exposed.
How are errors handled?
Command failures return detailed error messages from simctl. Missing Xcode, invalid parameters, and unsafe file operations are detected and reported.
More Other MCP servers
MCP Go 🚀
mark3labsA Go implementation of the Model Context Protocol (MCP), enabling seamless integration between LLM applications and external data sources and tools.
Reactive Resume
amruthpillaiA one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
AutoBrowser MCP
autobrowser-aiBrowser MCP is a Model Context Provider (MCP) server that allows AI applications to control your browser
XcodeBuildMCP
cameroncookeA Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.
🚀 Model Context Protocol (MCP) Curriculum for Beginners
microsoftThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable,
Comments