simctl-mcp logo

simctl-mcp

by ambar

simctl-mcp is a Model Context Protocol server implementation designed for controlling iOS Simulators. It enables interaction with the simulator through standard input/output streams or HTTP, offering a range of functionalities for device and app management.

View on GitHub

Last updated: N/A

What is simctl-mcp?

simctl-mcp is a server that implements the Model Context Protocol, allowing developers and testers to interact with and control iOS Simulators programmatically. It provides a set of tools and functionalities to manage devices, apps, permissions, system features, certificates, and media content within the simulator environment.

How to use simctl-mcp?

The server can be started in STDIO mode (default) or HTTP Server mode. In STDIO mode, use npx simctl-mcp. In HTTP Server mode, use npx simctl-mcp --http (default port 8081) or npx simctl-mcp --http --port <port> for a custom port. Configuration can be set in .cursor/mcp.json or .vscode/mcp.json.

Key features of simctl-mcp

  • Device Management (create, delete, boot, shutdown, list)

  • App Management (install, uninstall, launch, terminate, get info)

  • App Permissions (grant, revoke, reset)

  • System Features (open URLs, add media, get/set environment variables, appearance)

  • Certificate & Security (add root/regular certificates, reset keychain)

  • Media & Content (take screenshots, get/set pasteboard content)

Use cases of simctl-mcp

  • Automated testing of iOS applications

  • Scripting simulator interactions for development workflows

  • Managing simulator configurations for different testing scenarios

  • Programmatically installing and configuring apps in the simulator

  • Simulating push notifications and other system events

  • Automating the setup of simulator environments for CI/CD pipelines

FAQ from simctl-mcp

What operations does the simulator support?

The server supports a wide range of operations, including device management, app management, permission control, and system feature manipulation.

How do I open a URL in the simulator?

You can use the server to open URLs directly in the simulator's Safari browser.

How can I set the clipboard content?

The server allows you to programmatically set the clipboard content of the simulator.

Can I get the bundle ID of an installed app?

Yes, the server provides functionality to retrieve the bundle ID and other information about installed apps.

How do I generate an Appium connection string?

The server can assist in generating Appium connection strings for specific apps running in the simulator.