developer-tools

iOS Simulator

by joshuayoes

Use iOS Simulator for testing with tools like UI interaction and device info retrieval. Perfect as an iPhone emulator fo

Enables Claude to control iOS simulators for testing and debugging applications by providing tools for UI interaction, element inspection, and device information retrieval through Facebook's IDB tool.

github stars

1.7K

Direct simulator control via IDBVisual feedback with screenshotsAccessibility element inspection

best for

  • / iOS developers testing app functionality
  • / QA engineers automating mobile app testing
  • / Debugging UI issues in iOS applications

capabilities

  • / Tap and swipe on simulator screens
  • / Type text into simulator apps
  • / Take screenshots and record videos
  • / Inspect UI elements and accessibility information
  • / Get simulator device information
  • / Describe screen content and element locations

what it does

Controls iOS simulators for app testing by automating UI interactions like tapping, swiping, typing, and taking screenshots. Uses Facebook's IDB tool to inspect elements and interact with running simulator instances.

about

iOS Simulator is a community-built MCP server published by joshuayoes that provides AI assistants with tools and capabilities via the Model Context Protocol. Use iOS Simulator for testing with tools like UI interaction and device info retrieval. Perfect as an iPhone emulator fo It is categorized under developer tools. This server exposes 13 tools that AI clients can invoke during conversations and coding sessions.

how to install

You can install iOS Simulator in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.

license

MIT

iOS Simulator is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.

readme

iOS Simulator MCP Server

Install MCP Server NPM Version

A Model Context Protocol (MCP) server for interacting with iOS simulators. This server allows you to interact with iOS simulators by getting information about them, controlling UI interactions, and inspecting UI elements.

Security Notice: Command injection vulnerabilities present in versions < 1.3.3 have been fixed. Please update to v1.3.3 or later. See SECURITY.md for details.

https://github.com/user-attachments/assets/453ebe7b-cc93-4ac2-b08d-0f8ac8339ad3

🌟 Featured In

This project has been featured and mentioned in various publications and resources:

Tools

get_booted_sim_id

Description: Get the ID of the currently booted iOS simulator

Parameters: No Parameters

open_simulator

Description: Opens the iOS Simulator application

Parameters: No Parameters

ui_describe_all

Description: Describes accessibility information for the entire screen in the iOS Simulator

Parameters:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
}

ui_tap

Description: Tap on the screen in the iOS Simulator

Parameters:

{
  /**
   * Press duration in seconds (decimal numbers allowed)
   */
  duration?: string;
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** The x-coordinate */
  x: number;
  /** The y-coordinate */
  y: number;
}

ui_type

Description: Input text into the iOS Simulator

Parameters:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /**
   * Text to input
   * Format: ASCII printable characters only
   */
  text: string;
}

ui_swipe

Description: Swipe on the screen in the iOS Simulator

Parameters:

{
  /**
   * Swipe duration in seconds (decimal numbers allowed)
   */
  duration?: string;
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** The starting x-coordinate */
  x_start: number;
  /** The starting y-coordinate */
  y_start: number;
  /** The ending x-coordinate */
  x_end: number;
  /** The ending y-coordinate */
  y_end: number;
  /** The size of each step in the swipe (default is 1) */
  delta?: number;
}

ui_describe_point

Description: Returns the accessibility element at given co-ordinates on the iOS Simulator's screen

Parameters:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** The x-coordinate */
  x: number;
  /** The y-coordinate */
  y: number;
}

ui_view

Description: Get the image content of a compressed screenshot of the current simulator view

Parameters:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
}

screenshot

Description: Takes a screenshot of the iOS Simulator

Parameters:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** File path where the screenshot will be saved. If relative, it uses the directory specified by the `IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR` env var, or `~/Downloads` if not set. */
  output_path: string;
  /** Image format (png, tiff, bmp, gif, or jpeg). Default is png. */
  type?: "png" | "tiff" | "bmp" | "gif" | "jpeg";
  /** Display to capture (internal or external). Default depends on device type. */
  display?: "internal" | "external";
  /** For non-rectangular displays, handle the mask by policy (ignored, alpha, or black) */
  mask?: "ignored" | "alpha" | "black";
}

record_video

Description: Records a video of the iOS Simulator using simctl directly

Parameters:

{
  /** Optional output path. If not provided, a default name will be used. The file will be saved in the directory specified by `IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR` or in `~/Downloads` if the environment variable is not set. */
  output_path?: string;
  /** Specifies the codec type: "h264" or "hevc". Default is "hevc". */
  codec?: "h264" | "hevc";
  /** Display to capture: "internal" or "external". Default depends on device type. */
  display?: "internal" | "external";
  /** For non-rectangular displays, handle the mask by policy: "ignored", "alpha", or "black". */
  mask?: "ignored" | "alpha" | "black";
  /** Force the output file to be written to, even if the file already exists. */
  force?: boolean;
}

stop_recording

Description: Stops the simulator video recording using killall

Parameters: No Parameters

install_app

Description: Installs an app bundle (.app or .ipa) on the iOS Simulator

Parameters:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** Path to the app bundle (.app directory or .ipa file) to install */
  app_path: string;
}

launch_app

Description: Launches an app on the iOS Simulator by bundle identifier

Parameters:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** Bundle identifier of the app to launch (e.g., com.apple.mobilesafari) */
  bundle_id: string;
  /** Terminate the app if it is already running before launching */
  terminate_running?: boolean;
}

💡 Use Case: QA Step via MCP Tool Calls

This MCP server allows AI assistants integrated with a Model Context Protocol (MCP) client to perform Quality Assurance tasks by making tool calls. This is useful immediately after implementing features to help ensure UI consistency and correct behavior.

How to Use

After a feature implementation, instruct your AI assistant within its MCP client environment to use the available tools. For example, in Cursor's agent mode, you could use the prompts below to quickly validate and document UI interactions.

Example Prompts

  • Verify UI Elements:

    Verify all accessibility elements on the current screen
    
  • Confirm Text Input:

    Enter "QA Test" into the text input field and confirm the input is correct
    
  • Check Tap Response:

    Tap on coordinates x=250, y=400 and verify the expected element is triggered
    
  • Validate Swipe Action:

    Swipe from x=150, y=600 to x=150, y=100 and confirm correct behavior
    
  • Detailed Element Check:

    Describe the UI element at position x=300, y=350 to ensure proper labeling and functionality
    
  • Show Your AI Agent the Simulator Screen:

    View the current simulator screen
    
  • Take Screenshot:

    Take a screenshot of the current simulator screen and save it to my_screenshot.png
    
  • Record Video:

    Start recording a video of the simulator screen (saves to the default output directory, which is `~/Downloads` unless overridden by `IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR`)
    
  • Stop Recording:

    Stop the current simulator screen recording
    
  • Install App:

    Install the app at path/to/MyApp.app on the simulator
    
  • Launch App:

    Launch the Safari app (com.apple.mobilesafari) on the simulator
    

Prerequisites

  • Node.js
  • macOS (as iOS simulators are only available on macOS)
  • Xcode and iOS simulators installed
  • Facebook IDB tool (see install guide)

Installation

This section provides instructions for integrating the iOS Simulator MCP server with different Model Context Protocol (MCP) clients.

Installation with Cursor

Cursor manages MCP servers through its configuration file located at ~/.cursor/mcp.json.

Option 1: Using NPX (Recommended)

  1. Edit your Cursor MCP configuration file. You can often open it directly from Cursor or use a command like:
    # Open with your default editor (or use 'code', 'vim', etc.)
    open ~/.cursor/mcp.json
    # Or use Cursor's command if available
    # cursor ~/.cursor/mcp.json
    
  2. Add or update the mcpServers section with the iOS simulator server configuration:
    {
      "mcpServers": {
        // ... other servers might be liste
    

FAQ

What is the iOS Simulator MCP server?
iOS Simulator is a Model Context Protocol (MCP) server profile on explainx.ai. MCP lets AI hosts (e.g. Claude Desktop, Cursor) call tools and resources through a standard interface; this page summarizes categories, install hints, and community ratings.
How do MCP servers relate to agent skills?
Skills are reusable instruction packages (often SKILL.md); MCP servers expose live capabilities. Teams frequently combine both—skills for workflows, MCP for APIs and data. See explainx.ai/skills and explainx.ai/mcp-servers for parallel directories.
How are reviews shown for iOS Simulator?
This profile displays 10 aggregated ratings (sample rows for discoverability plus signed-in user reviews). Average score is about 4.5 out of 5—verify behavior in your own environment before production use.
MCP server reviews

Ratings

4.510 reviews
  • Shikha Mishra· Oct 10, 2024

    iOS Simulator is among the better-indexed MCP projects we tried; the explainx.ai summary tracks the official description.

  • Piyush G· Sep 9, 2024

    We evaluated iOS Simulator against two servers with overlapping tools; this profile had the clearer scope statement.

  • Chaitanya Patil· Aug 8, 2024

    Useful MCP listing: iOS Simulator is the kind of server we cite when onboarding engineers to host + tool permissions.

  • Sakshi Patil· Jul 7, 2024

    iOS Simulator reduced integration guesswork — categories and install configs on the listing matched the upstream repo.

  • Ganesh Mohane· Jun 6, 2024

    I recommend iOS Simulator for teams standardizing on MCP; the explainx.ai page compares cleanly with sibling servers.

  • Oshnikdeep· May 5, 2024

    Strong directory entry: iOS Simulator surfaces stars and publisher context so we could sanity-check maintenance before adopting.

  • Dhruvi Jain· Apr 4, 2024

    iOS Simulator has been reliable for tool-calling workflows; the MCP profile page is a good permalink for internal docs.

  • Rahul Santra· Mar 3, 2024

    According to our notes, iOS Simulator benefits from clear Model Context Protocol framing — fewer ambiguous “AI plugin” claims.

  • Pratham Ware· Feb 2, 2024

    We wired iOS Simulator into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.

  • Yash Thakker· Jan 1, 2024

    iOS Simulator is a well-scoped MCP server in the explainx.ai directory — install snippets and categories matched our Claude Code setup.