The iOS Simulator MCP server allows interaction with iOS simulators to perform UI automation tasks, including:
Get the ID of the currently booted iOS simulator
Describe accessibility elements on the screen
Tap on specific screen coordinates
Input text into the simulator
Swipe between coordinates
Get information about UI elements at specific locations
Take screenshots or record videos of the simulator screen
Integrates with Facebook's IDB tool to communicate with and control iOS simulators, enabling the MCP server to perform UI automation tasks.
Provides tools for interacting with iOS simulators, including getting simulator information, controlling UI interactions (tapping, swiping, text input), and inspecting UI elements for accessibility testing and automation.
Enables operation on macOS systems where iOS simulators run, providing simulator access and control capabilities specific to the macOS environment.
Utilizes Xcode's iOS simulator infrastructure to enable UI automation, testing, and interaction with simulated iOS devices.
iOS Simulator MCP Server
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:
Claude Code Best Practices article - Anthropic's engineering blog showcasing best practices
React Native Newsletter Issue 187 - Featured in the most popular React Native community newsletter
Mobile Automation Newsletter - #56 - Featured a long running newsletter about mobile testing and automation resources
punkeye/awesome-mcp-server listing - Listed in one of the most popular curated awesome MCP servers collection
Related MCP server: iOS simulators MCP
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:
ui_tap
Description: Tap on the screen in the iOS Simulator
Parameters:
ui_type
Description: Input text into the iOS Simulator
Parameters:
ui_swipe
Description: Swipe on the screen in the iOS Simulator
Parameters:
ui_describe_point
Description: Returns the accessibility element at given co-ordinates on the iOS Simulator's screen
Parameters:
ui_view
Description: Get the image content of a compressed screenshot of the current simulator view
Parameters:
screenshot
Description: Takes a screenshot of the iOS Simulator
Parameters:
record_video
Description: Records a video of the iOS Simulator using simctl directly
Parameters:
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:
launch_app
Description: Launches an app on the iOS Simulator by bundle identifier
Parameters:
💡 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 screenConfirm Text Input:
Enter "QA Test" into the text input field and confirm the input is correctCheck Tap Response:
Tap on coordinates x=250, y=400 and verify the expected element is triggeredValidate Swipe Action:
Swipe from x=150, y=600 to x=150, y=100 and confirm correct behaviorDetailed Element Check:
Describe the UI element at position x=300, y=350 to ensure proper labeling and functionalityShow Your AI Agent the Simulator Screen:
View the current simulator screenTake Screenshot:
Take a screenshot of the current simulator screen and save it to my_screenshot.pngRecord 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 recordingInstall App:
Install the app at path/to/MyApp.app on the simulatorLaunch 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)
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.jsonAdd or update the
mcpServerssection with the iOS simulator server configuration:{ "mcpServers": { // ... other servers might be listed here ... "ios-simulator": { "command": "npx", "args": ["-y", "ios-simulator-mcp"] } } }Ensure the JSON structure is valid, especially if
mcpServersalready exists.Restart Cursor for the changes to take effect.
Option 2: Local Development
Clone this repository:
git clone https://github.com/joshuayoes/ios-simulator-mcp cd ios-simulator-mcpInstall dependencies:
npm installBuild the project:
npm run buildEdit your Cursor MCP configuration file (as shown in Option 1).
Add or update the
mcpServerssection, pointing to your local build:{ "mcpServers": { // ... other servers might be listed here ... "ios-simulator": { "command": "node", "args": ["/full/path/to/your/ios-simulator-mcp/build/index.js"] } } }Important: Replace
/full/path/to/your/with the absolute path to where you cloned theios-simulator-mcprepository.Restart Cursor for the changes to take effect.
Installation with Claude Code
Claude Code CLI can manage MCP servers using the claude mcp commands or by editing its configuration files directly. For more details on Claude Code MCP configuration, refer to the official documentation.
Option 1: Using NPX (Recommended)
Add the server using the
claude mcp addcommand:claude mcp add ios-simulator npx ios-simulator-mcpRestart any running Claude Code sessions if necessary.
Option 2: Local Development
Clone this repository, install dependencies, and build the project as described in the Cursor "Local Development" steps 1-3.
Add the server using the
claude mcp addcommand, pointing to your local build:claude mcp add ios-simulator --command node --args "/full/path/to/your/ios-simulator-mcp/build/index.js"Important: Replace
/full/path/to/your/with the absolute path to where you cloned theios-simulator-mcprepository.Restart any running Claude Code sessions if necessary.
Configuration
Environment Variables
Variable | Description | Example |
| A comma-separated list of tool names to filter out from being registered. |
|
| Specifies a default directory for output files like screenshots and video recordings. If not set,
will be used. This can be handy if your agent has limited access to the file system. |
|
| Specifies a custom path to the IDB executable. If not set,
will be used (assuming it's in your PATH). Useful if IDB is installed in a non-standard location. |
or
|
Configuration Example
MCP Registry Server Listings
License
MIT