simctl-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| simctl_list_devicesA | 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 |
| simctl_boot_deviceA | 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 |
| simctl_shutdown_deviceB | Shutdown a simulator device. Args: device: Device UDID, name, or 'booted' for current device Returns: Success message |
| simctl_create_deviceA | 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 |
| simctl_delete_deviceB | Delete simulator devices. Args: devices: List of device UDIDs, names, or 'unavailable' to delete all unavailable devices Returns: Success message |
| simctl_install_appA | 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 |
| simctl_launch_appB | 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 |
| simctl_terminate_appA | 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 |
| simctl_screenshotA | 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 |
| simctl_record_videoA | 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 |
| simctl_push_notificationA | 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 |
| simctl_privacy_controlA | 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 |
| simctl_set_locationA | 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 |
| simctl_status_bar_overrideB | 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 |
| simctl_ui_appearanceA | 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 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Each tool targets a distinct simulator operation—device lifecycle, app management, interaction, and settings—with no overlap. Even similar actions like install, launch, and terminate are clearly differentiated.
All tool names follow the 'simctl_verb_noun' pattern consistently (e.g., boot_device, install_app, set_location), using lowercase with underscores. The naming is predictable and readable.
With 15 tools, the server is well-scoped for simulator control. Each tool covers a necessary operation without being excessive or sparse, fitting the typical 3-15 range for a focused domain.
The tool set covers core device and app lifecycle, plus common interactions like screenshots, push notifications, and privacy control. Missing advanced operations (e.g., device reset, file copy) are minor gaps.