MCP Directory

How to add iOS Simulator MCP Server to Windsurf

Control and inspect iOS simulators — UI taps, swipes, text input, screenshots, video, and app install/launch. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.

Last updated June 14, 2026 · 2.1k · stdio · no auth

Windsurf config for iOS Simulator MCP Server

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

Setup steps

  1. 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
  2. 2Paste the iOS Simulator MCP Server config below.
  3. 3Fill in placeholder secrets, then save.
  4. 4Click Refresh in the MCP panel.
  5. 5iOS Simulator MCP Server's tools become available to Cascade.

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)

What iOS Simulator MCP Server can do in Windsurf

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.

Security

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 + Windsurf FAQ

Where is the Windsurf config file?

Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Paste the iOS Simulator MCP Server config there under the "mcpServers" key and restart the client.

Is iOS Simulator MCP Server safe to use with Windsurf?

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.

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

View repo Full iOS Simulator MCP Server page