What prerequisites are required?
Python 3.13+, Xcode with Command Line Tools, and optionally [uvx](https://github.com/astral-sh/uv) for running the server directly.
@nzrsky
Basic information
No overview available yet
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"simctl": {
"command": "uvx",
"args": [
"simctl-mcp-server"
],
"env": {}
}
}
}List 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
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.
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.
Python 3.13+, Xcode with Command Line Tools, and optionally [uvx](https://github.com/astral-sh/uv) for running the server directly.
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"]`.
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.
Access is limited to specified app paths and temporary files for push notifications. No broad file system access is exposed.
Command failures return detailed error messages from simctl. Missing Xcode, invalid parameters, and unsafe file operations are detected and reported.
🔥 MaxKB is an open-source platform for building enterprise-grade agents. 强大易用的开源企业级智能体平台。
🚀 The fast, Pythonic way to build MCP servers and clients.
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

Model Context Protocol Servers

See and control a real Windows PC you own — from any MCP client, locally or remotely. Observe (UIA + screenshots), click/type/drag/scroll, launch apps, owner Live View. BYOH: your machine, your key.
Comments