Provides a TypeScript-based server for dynamically creating, booting, and controlling iOS simulators using the Appium iO...
Created byApr 22, 2025
MCP Server for iOS Simulator
A server that implements the Model Context Protocol (MCP) for iOS simulators, built on top of appium-ios-simulator and utilizing the MCP TypeScript SDK.
Overview
This project provides a bridge between iOS simulators and the Model Context Protocol, allowing for standardized communication with iOS simulator instances. It enables programmatic control of iOS simulators while leveraging the MCP protocol for consistent interfaces across different environments. The server utilizes stdio as its transport mechanism, making it ideal for integration with Claude Desktop and other MCP-compatible clients.
Demo
iOS Simulator Demo
Demo showing how to boot an iOS simulator using Claude AI Desktop
** MCP Protocol Implementation** - Implements the Model Context Protocol using the TypeScript SDK with stdio transport
** Logger Component** - Provides file-based logging without interfering with the stdio transport
Features
Start, stop, and manage iOS simulator instances
Boot and shutdown simulators
Install and launch applications on simulators
Take screenshots of simulator screens
Perform taps on coordinates
Support for multiple concurrent simulator sessions
Comprehensive file-based logging without console output
Error-resilient operation
Prerequisites
Node.js (v16 or later)
macOS (required for iOS simulators)
Xcode with iOS simulators installed
TypeScript 4.5+
Installation
Configuration
Configuration is handled through the src/config.ts file:
You can customize these settings by setting environment variables:
Usage
Building and Starting the Server
MCP Tools
The server provides two distinct approaches for controlling iOS simulators:
Direct Simulator Management (Recommended)
These tools work directly with simulator UDIDs and don't require maintaining sessions:
list-available-simulators - List all available simulators with their UDIDs
boot-simulator-by-udid - Boot a simulator directly using its UDID
shutdown-simulator-by-udid - Shutdown a simulator directly using its UDID
list-booted-simulators - List all currently booted simulators
Use this approach when: You just want to boot, use, and shut down simulators directly.
Session-Based Management (Advanced)
These tools use a session layer that tracks simulators with custom session IDs:
list-simulator-sessions - List all active simulator sessions
create-simulator-session - Create a new simulator session
terminate-simulator-session - Terminate a session (shuts down simulator and cleans up)
create-and-boot-simulator - Create a new simulator session and boot it
boot-simulator - Boot a simulator for an existing session
shutdown-simulator - Shutdown a simulator for an existing session
Use this approach when: You need to track simulator metadata, reference simulators by custom IDs, or use the more advanced management features.
Application Management
install-app - Install an application on a simulator
launch-app - Launch an application on a simulator
terminate-app - Terminate a running application on a simulator
Interaction Tools
take-screenshot - Take a screenshot of the simulator screen
tap-coordinate - Perform a tap at the specified coordinates
Example Usage with Claude Desktop
Configure Claude Desktop to use this server as an MCP tool:
Use the provided tools to control iOS simulators directly from Claude Desktop:Direct UDID Approach (Recommended):The direct UDID approach is simpler and more reliable for most use cases.Session-Based Approach (Advanced):
Only use this approach if you need the advanced features of session tracking:
Development
Project Structure
Building the Project
License
This project is licensed under the MIT License - see the LICENSE file for details.
A server that implements the Model Context Protocol (MCP) for iOS simulators, built on top of appium-ios-simulator and utilizing the MCP TypeScript SDK.
Overview
This project provides a bridge between iOS simulators and the Model Context Protocol, allowing for standardized communication with iOS simulator instances. It enables programmatic control of iOS simulators while leveraging the MCP protocol for consistent interfaces across different environments. The server utilizes stdio as its transport mechanism, making it ideal for integration with Claude Desktop and other MCP-compatible clients.
Demo
iOS Simulator Demo
Demo showing how to boot an iOS simulator using Claude AI Desktop
** MCP Protocol Implementation** - Implements the Model Context Protocol using the TypeScript SDK with stdio transport
** Logger Component** - Provides file-based logging without interfering with the stdio transport
Features
Start, stop, and manage iOS simulator instances
Boot and shutdown simulators
Install and launch applications on simulators
Take screenshots of simulator screens
Perform taps on coordinates
Support for multiple concurrent simulator sessions
Comprehensive file-based logging without console output
Error-resilient operation
Prerequisites
Node.js (v16 or later)
macOS (required for iOS simulators)
Xcode with iOS simulators installed
TypeScript 4.5+
Installation
Configuration
Configuration is handled through the src/config.ts file:
You can customize these settings by setting environment variables:
Usage
Building and Starting the Server
MCP Tools
The server provides two distinct approaches for controlling iOS simulators:
Direct Simulator Management (Recommended)
These tools work directly with simulator UDIDs and don't require maintaining sessions:
list-available-simulators - List all available simulators with their UDIDs
boot-simulator-by-udid - Boot a simulator directly using its UDID
shutdown-simulator-by-udid - Shutdown a simulator directly using its UDID
list-booted-simulators - List all currently booted simulators
Use this approach when: You just want to boot, use, and shut down simulators directly.
Session-Based Management (Advanced)
These tools use a session layer that tracks simulators with custom session IDs:
list-simulator-sessions - List all active simulator sessions
create-simulator-session - Create a new simulator session
terminate-simulator-session - Terminate a session (shuts down simulator and cleans up)
create-and-boot-simulator - Create a new simulator session and boot it
boot-simulator - Boot a simulator for an existing session
shutdown-simulator - Shutdown a simulator for an existing session
Use this approach when: You need to track simulator metadata, reference simulators by custom IDs, or use the more advanced management features.
Application Management
install-app - Install an application on a simulator
launch-app - Launch an application on a simulator
terminate-app - Terminate a running application on a simulator
Interaction Tools
take-screenshot - Take a screenshot of the simulator screen
tap-coordinate - Perform a tap at the specified coordinates
Example Usage with Claude Desktop
Configure Claude Desktop to use this server as an MCP tool:
Use the provided tools to control iOS simulators directly from Claude Desktop:Direct UDID Approach (Recommended):The direct UDID approach is simpler and more reliable for most use cases.Session-Based Approach (Advanced):
Only use this approach if you need the advanced features of session tracking:
Development
Project Structure
Building the Project
License
This project is licensed under the MIT License - see the LICENSE file for details.