simctl_list_devicesLABSCO SUMMARY
The simulator chores, without remembering simctl's flags.
Booting a device, granting a location permission, faking the status bar for a screenshot — all one-line simctl invocations nobody remembers, asked for here in words.
What it is
An MCP server over xcrun simctl. Device lifecycle, app install and launch, media capture, and the simulator-only controls — location, privacy permissions, status bar contents, light or dark appearance, push notifications — are each exposed as a tool.
What you get
- Simulators listed with their states, and created, booted, shut down or deleted
- An app installed from a .app bundle or an .ipa, then launched and terminated
- A screenshot taken, or the screen recorded to video
- A simulated location set
- Privacy permissions granted or revoked without tapping through the alert
- The status bar overridden, and light or dark appearance switched
- A push notification delivered to the running simulator
Requirements
macOS with Xcode and the Command Line Tools, plus Python 3.13 or newer. Run it with uvx simctl-mcp-server, or install the package. No account, no key.
Setup effort
One command — uvx simctl-mcp-server
USE CASES
Getting a clean device up for a test
List what exists, create the device you need, and boot it.
Putting a build in front of yourself
Install the .app or .ipa and launch it.
Producing App Store screenshots
Override the status bar, set light or dark appearance, then capture.
Testing the location-dependent path
Set a simulated location instead of walking outside with the phone.
Getting past a permission dialog
Grant or revoke the privacy permission directly.
Checking what a push actually does
Deliver a notification to the simulator and record the result.
15 tools
Listed in project docs. Your client may show a different list.
simctl_boot_devicesimctl_shutdown_devicesimctl_create_devicesimctl_delete_devicesimctl_install_appsimctl_launch_appsimctl_terminate_appsimctl_screenshotsimctl_record_videosimctl_push_notificationsimctl_privacy_controlsimctl_set_locationsimctl_status_bar_overridesimctl_ui_appearanceBEFORE YOU INSTALL
What to know first
Tools you get
15 tools named in the project's documentation.
Requires
- Python 3.13+
- Xcode with Command Line Tools
- uv, for the uvx route
Where it runs
Both documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
Setup
git clone https://github.com/nzrsky/simctl-mcp-server
cd simctl-mcp-server
pip install .uvx
uvx simctl-mcp-serverMCP Clients
Claude Desktop — uvx
{
"mcpServers": {
"simctl": {
"command": "uvx",
"args": [
"simctl-mcp-server"
],
"env": {}
}
}
}Claude Desktop
{
"mcpServers": {
"simctl": {
"command": "simctl-mcp-server",
"args": [],
"env": {}
}
}
}For the clone route: pip install . puts the simctl-mcp-server command on PATH.