iOS Simulator MCP server

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.
Back to servers
Provider
atom2ueki
Release date
Mar 08, 2025
Language
TypeScript
Stats
26 stars

The MCP Server for iOS Simulator provides a bridge between iOS simulators and the Model Context Protocol, allowing you to programmatically control iOS simulators through a standardized interface. This server uses stdio as its transport mechanism, making it perfect for integration with Claude Desktop and other MCP-compatible clients.

Prerequisites

  • Node.js (v16 or later)
  • macOS (required for iOS simulators)
  • Xcode with iOS simulators installed
  • TypeScript 4.5+

Installation

Installing via Smithery

The easiest way to install the iOS Simulator Control Server for Claude Desktop is via Smithery:

npx -y @smithery/cli install @atom2ueki/mcp-server-ios-simulator --client claude

Manual Installation

# Clone the repository
git clone https://github.com/atom2ueki/mcp-server-ios-simulator.git
cd mcp-server-ios-simulator

# Install dependencies
npm install

Configuration

You can customize the server settings through environment variables:

SIMULATOR_DEFAULT_DEVICE=iPhone 16
SIMULATOR_DEFAULT_OS=18.2
SIMULATOR_TIMEOUT=30000

These variables override the default configuration in the server.

Usage

Building and Starting the Server

# Build the project
npm run build

# Start the server
npm start

Available MCP Tools

The server provides two approaches for controlling iOS simulators:

Direct Simulator Management (Recommended)

These tools work directly with simulator UDIDs:

  • 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

Session-Based Management (Advanced)

These tools use a session layer to track simulators:

  • list-simulator-sessions - List all active simulator sessions
  • create-simulator-session - Create a new simulator session
  • terminate-simulator-session - Terminate a session
  • 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

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

Integration with Claude Desktop

  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 your installation
    • Save the settings and restart Claude Desktop
  2. Example commands for Claude Desktop:

    Direct UDID Approach (Recommended):

    "Show me all available iOS simulators"
    "Boot the iOS simulator with UDID 5272EA61-5796-4372-86FE-3B33831D5CC1"
    "Shut down the simulator with UDID 5272EA61-5796-4372-86FE-3B33831D5CC1"
    

    Session-Based Approach (Advanced):

    "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"
    

The direct UDID approach is simpler and more reliable for most use cases.

How to add this MCP server to Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "cursor-rules-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "cursor-rules-mcp"
            ]
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later