MCP Directory

iOS Simulator MCP Server

Control and inspect iOS simulators — UI taps, swipes, text input, screenshots, video, and app install/launch.

Unverified
stdio (local)
No auth
TypeScript

Add to your client

Copy the config for your MCP client and paste it into its config file.

Install / run
npx -y ios-simulator-mcp

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "ios-simulator-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf

Before you start

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

About iOS Simulator MCP Server

iOS Simulator MCP Server exposes iOS simulator control to MCP-compatible AI assistants. It can read the currently booted simulator, open the Simulator app, describe accessibility information for the whole screen or a single point, search the accessibility tree for elements, tap, type, and swipe, capture compressed screen views and full screenshots, record and stop video, and install and launch apps by bundle identifier. It is designed to support QA workflows where the assistant validates and documents UI behavior immediately after a feature is implemented. The server is built on Facebook's IDB tool and Apple's simctl, and runs locally over stdio.

Tools & capabilities (14)

get_booted_sim_id

Get the ID of the currently booted iOS simulator. No parameters.

open_simulator

Opens the iOS Simulator application. No parameters.

ui_describe_all

Describes accessibility information for the entire screen in the iOS Simulator. Optional udid (can also be set via IDB_UDID env var).

ui_tap

Tap on the screen at given x/y coordinates. Optional press duration (seconds) and udid.

ui_type

Input text into the iOS Simulator (ASCII printable characters only). Optional udid.

ui_swipe

Swipe on the screen from a start (x_start, y_start) to an end (x_end, y_end) point. Optional duration, step delta, and udid.

ui_describe_point

Returns the accessibility element at given x/y coordinates on the simulator's screen. Optional udid.

ui_find_element

Searches the accessibility tree and returns elements matching the given criteria. Accepts an array of search strings (matched against AXLabel or AXUniqueId), optional element type filter, matchMode ('substring' or 'exact'), caseSensitive flag, and udid.

ui_view

Get the image content of a compressed screenshot of the current simulator view. Optional udid.

screenshot

Takes a screenshot of the iOS Simulator and saves it to output_path (relative paths use IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR or ~/Downloads). Optional image type (png/tiff/bmp/gif/jpeg), display (internal/external), mask policy, and udid.

record_video

Records a video of the iOS Simulator using simctl. Optional output_path, codec (h264/hevc), display, mask policy, force overwrite, and udid.

stop_recording

Stops the simulator video recording using killall. No parameters.

install_app

Installs an app bundle (.app directory or .ipa file) on the iOS Simulator. Requires app_path; optional udid.

launch_app

Launches an app on the iOS Simulator by bundle identifier. Requires bundle_id; optional terminate_running flag, env vars (passed via SIMCTL_CHILD_), and udid.

When to use it

  • QA validation right after implementing a feature — verify accessibility elements, confirm text input, check tap responses, and validate swipe actions
  • Let an AI agent see the current simulator screen via a compressed view or full screenshot
  • Document UI interactions by taking screenshots or recording video of the simulator
  • Install and launch app builds on the simulator to drive end-to-end flows
  • Inspect the accessibility tree to find and reason about specific UI elements

Security notes

Command injection vulnerabilities present in versions < 1.3.3 have been fixed; update to v1.3.3 or later (see SECURITY.md). The server executes UI automation and app install/launch against local iOS simulators via IDB and simctl, so it can interact with anything running in the simulator and write screenshots/recordings to the local filesystem (default ~/Downloads, configurable via IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR). Tools can be filtered out via IOS_SIMULATOR_MCP_FILTERED_TOOLS.

iOS Simulator MCP Server FAQ

Which MCP clients are documented?

The README provides setup instructions for Cursor (via ~/.cursor/mcp.json) and Claude Code (via the `claude mcp add` command), with both NPX and local-development options.

How do I run it without a global install?

Use NPX: configure the command as `npx` with args `["-y", "ios-simulator-mcp"]`, or for Claude Code run `claude mcp add ios-simulator npx ios-simulator-mcp`.

Can I disable specific tools?

Yes. Set the IOS_SIMULATOR_MCP_FILTERED_TOOLS environment variable to a comma-separated list of tool names to filter out, e.g. `screenshot,record_video,stop_recording`.

Where are screenshots and recordings saved?

By default to ~/Downloads. Set IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR to change the default output directory.

What if IDB is in a non-standard location?

Set IOS_SIMULATOR_MCP_IDB_PATH to the custom path of the IDB executable (e.g. ~/bin/idb or /usr/local/bin/idb). Otherwise `idb` is assumed to be on your PATH.

Alternatives to iOS Simulator MCP Server

Compare all alternatives →

Microsoft's official browser-automation MCP using Playwright's accessibility tree (no vision model).

Featured
Verified
stdio (local)
No auth
TypeScript
12 tools
Updated 13 days agoRepo

Up-to-date, version-specific library documentation injected into your coding agent.

Verified
stdio (local)
API key
TypeScript
2 tools
Updated 17 days agoRepo

LSP-powered coding agent toolkit: semantic symbol search, references and structural edits.

Verified
stdio (local)
No auth
Python
11 tools
Updated 15 days agoRepo