iOS Simulator
About
Provides a TypeScript-based server for dynamically creating, booting, and controlling iOS simulators using the Appium iOS Simulator library, enabling flexible device and OS version interactions for testing and development scenarios.
Details
- Author
- atom2ueki
- Repository
- atom2ueki/mcp-server-ios-simulator
- GitHub stars
- 19
- Downloads
- 203
- License
- MIT License
- Categories
- Developer Tools, Other, Design, AI, Frontend, Infrastructure
Jump to
- 🚀 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
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
iOS SimulatorCommand (node, npx, python, etc.)nodeArguments-
Argument 1
/path/to/your/mcp-server-ios-simulator/dist/index.js
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
To install iOS Simulator Control Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @atom2ueki/mcp-server-ios-simulator --client claude
npm install
Configuration is handled through the src/config.ts file:
const config = {
simulator: {
defaultDevice: process.env.SIMULATOR_DEFAULT_DEVICE || 'iPhone 16',
defaultOS: process.env.SIMULATOR_DEFAULT_OS || '18.2',
timeout: parseInt(process.env.SIMULATOR_TIMEOUT || '30000', 10),
}
};
You can customize these settings by setting environment variables:
SIMULATOR_DEFAULT_DEVICE=iPhone 16
SIMULATOR_DEFAULT_OS=18.2
SIMULATOR_TIMEOUT=30000
1. Configure Claude Desktop to use this server as an MCP tool:
- Open Claude Desktop
- Go to Settings > Advanced
- Add the following configuration to the "MCP Servers" section:
{
"mcpServers": {
"simulator": {
"command": "node",
"args": [
"/path/to/your/mcp-server-ios-simulator/dist/index.js"
]
}
}
}
- Replace /path/to/your with the actual path to where you've installed this repository
- Save the settings and restart Claude Desktop
2. Use the provided tools to control iOS simulators directly from Claude Desktop:
Direct UDID Approach (Recommended):
1. First, ask Claude to list available simulators:
"Show me all available iOS simulators"
2. Then use the UDID to boot a specific simulator:
"Boot the iOS simulator with UDID 5272EA61-5796-4372-86FE-3B33831D5CC1"
3. When finished, shut it down using the same UDID:
"Shut down the simulator with UDID 5272EA61-5796-4372-86FE-3B33831D5CC1"
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:
"Create a new simulator session for iPhone 16 Pro with iOS 18.2"
"Boot the simulator for session abc-123"
"Take a screenshot of the simulator for session abc-123"
"Terminate the simulator session abc-123"
npm install
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.
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.
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.
take-screenshot
Take a screenshot of the simulator screen.
tap-coordinate
Perform a tap at the specified coordinates.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"ios simulator": {
"command": "node",
"args": [
"/path/to/your/mcp-server-ios-simulator/dist/index.js"
],
"env": {},
"cwd": "string (optional)",
"shell": false
}
}
}
Macos
{
"command": "node",
"args": [
"/path/to/your/mcp-server-ios-simulator/dist/index.js"
],
"env": [],
"cwd": "string (optional)",
"shell": false
}
Windows
{
"command": "cmd",
"args": [
"/c",
"node",
"/path/to/your/mcp-server-ios-simulator/dist/index.js"
],
"env": [],
"cwd": "string (optional)",
"shell": false
}
Linux
{
"command": "node",
"args": [
"/path/to/your/mcp-server-ios-simulator/dist/index.js"
],
"env": [],
"cwd": "string (optional)",
"shell": false
}
📱 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.
<a href="https://glama.ai/mcp/servers/@atom2ueki/mcp-server-ios-simulator">
</a>
📋 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

Demo showing how to boot an iOS simulator using Claude AI Desktop
🏗️ Architecture
The server consists of three main components:
1. 🔄 Simulator Management Layer - Handles iOS simulator lifecycle and interactions
2. 🔌 MCP Protocol Implementation - Implements the Model Context Protocol using the TypeScript SDK with stdio transport
3. 📊 Logger Component - Provides file-based logging without interfering with the stdio transport
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP Protocol │ │ Stdio │ │ Simulator │
│ Implementation │◄────┤ Transport │◄────┤ Management │
│ │ │ │ │ Layer │
└─────────────────┘ └─────────────────┘ └─────────────────┘
▲ ▲
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ MCP Client │ │ iOS Simulator │
│ (e.g. Claude) │ │ │
└─────────────────┘ └─────────────────┘
✨ 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
Installing via Smithery
To install iOS Simulator Control Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @atom2ueki/mcp-server-ios-simulator --client claude
Manual Installation
```bashSign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





