iOS Simulator

by atom2ueki

19 stars
203 downloads
Not rated
GitHub

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

- 🚀 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:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name iOS Simulator
    Command (node, npx, python, etc.) node
    Arguments
    • 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.

  4. 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

smithery badge

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">
Server for iOS Simulator MCP server
</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

iOS Simulator 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

```bash
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.