Lets an agent tap, type, swipe and screenshot its way through the iOS Simulator.
- Started in our test
- ★ 2.2K GitHub stars
- 4.8K downloads a week
- Last commit 23 Oct 2026
At a glance
Joshua Yoes's server lets a coding agent check its own iOS work. It reads the accessibility tree of the screen in a booted simulator, finds elements by label, taps, swipes and types, and takes a screenshot or records a video. It can also install, launch and stop apps and open URLs, which is handy for jumping straight to a deep link.
It works through Apple's simctl and Meta's IDB tool, so it only runs on a Mac with Xcode. Update to version 1.3.3 or later, which fixed command injection bugs in older releases.
- Made by
- Joshua Yoes and contributors
- Licence
- MIT
- Latest version
- 2.1.0 (13 Aug 2026)
- npm package
- ios-simulator-mcp
- GitHub stars
- 2.2K
- Downloads
- 4.8K a week
- Last commit
- 23 Oct 2026
- Tools
- 17
- Runs on
- Your computer
Our check: We ran this exact config on 27 Oct 2026: it started and answered with 17 tools.
What's in the pod: its tools
We found 17 tools when we started it on 27 Oct 2026. 6 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
Changes things11 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
install_app | Installs a .app or .ipa on the simulator. |
launch_app | Launches an app by bundle ID, with optional environment variables. |
open_simulator | Opens the Simulator app. |
open_url | Opens a URL or deep link in the simulator. |
record_video | Starts recording the screen to a video file. |
screenshot | Saves a full screenshot to a file. |
stop_recording | Stops the recording. |
terminate_app | Stops a running app. |
ui_swipe | Swipes from one point to another. |
ui_tap | Taps a point on the screen, with an optional press duration. |
ui_type | Types text into the focused field. |
Only reads6 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
get_booted_sim_id | Returns the ID of the simulator that is running. |
list_apps | Lists the apps installed on the simulator. |
ui_describe_all | Returns the accessibility tree of the whole screen. |
ui_describe_point | Returns the element at given screen coordinates. |
ui_find_element | Finds elements by label or ID, optionally by type. |
ui_view | Returns a compressed screenshot for the model to look at. |
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
How clearly it describes its tools to your assistant
- Tools with a description
- 17 of 17
- Say if they change things
- 17 of 17
- Context it takes, at least
- ~700 tokens
Every tool says whether it only reads or can change things, so a client can ask before the risky ones.
From the tool list it sent us. The token figure counts names, descriptions and input names; the full schemas your client loads add more.
Set it up
- Install IDB: brew tap facebook/fb, brew install idb-companion, then pip install fb-idb for the idb command.
- Boot a simulator from Xcode or with xcrun simctl boot.
- Add the config below to your client.
Pick your app for the exact snippet and where it goes.
Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)
{
"mcpServers": {
"ios-simulator": {
"command": "npx",
"args": [
"-y",
"ios-simulator-mcp"
]
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json ios-simulator '{"command":"npx","args":["-y","ios-simulator-mcp"]}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"ios-simulator": {
"command": "npx",
"args": [
"-y",
"ios-simulator-mcp"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"ios-simulator": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"ios-simulator-mcp"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"ios-simulator": {
"command": "npx",
"args": [
"-y",
"ios-simulator-mcp"
]
}
}
}Where it goes: Not supported
ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.
Set IOS_SIMULATOR_MCP_FILTERED_TOOLS in env to hide tools you do not want, IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR to choose where screenshots go, and IOS_SIMULATOR_MCP_IDB_PATH if idb is not on your PATH.
New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Settings
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
IOS_SIMULATOR_MCP_FILTERED_TOOLSEnvironment variable | A comma-separated list of tools to hide.screenshot,record_video,stop_recording |
IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIREnvironment variable | Where screenshots and videos go. Defaults to ~/Downloads.~/Code/my-app/tmp |
IOS_SIMULATOR_MCP_IDB_PATHEnvironment variable | The path to idb, if it is not on your PATH./usr/local/bin/idb |
IDB_UDIDEnvironment variable | Targets a specific simulator by UDID instead of the booted one. |
What it can touch
It can read
- The simulator screen and its accessibility tree
- The list of installed apps
It can change
- Taps, swipes and text in the simulator
- Installs, launches and stops apps
- Screenshot and video files on your Mac
Safer setup: It only acts on simulators, never on a real device. Hide install_app or record_video with IOS_SIMULATOR_MCP_FILTERED_TOOLS if you do not want the model using them.
Before you start
- macOS with Xcode and an iOS simulator
- Meta's IDB tool (idb-companion and the idb client)
- Node.js 20 or newer
If it does not work
- Tools fail with idb: command not found
- Install idb-companion with Homebrew and the idb client with pip, or point IOS_SIMULATOR_MCP_IDB_PATH at it.
- It says no simulator is booted
- Boot one from Xcode or with xcrun simctl boot, or call open_simulator.
- Screenshots land somewhere unexpected
- Relative paths go to ~/Downloads. Set IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR to your project folder.
- It will not start on Windows or Linux
- iOS simulators only run on macOS, so neither does this server.
Peas in a pod: similar servers
How iOS Simulator MCP lines up against other developer tools servers on the shelf.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| iOS Simulator MCP | 17 | Your computer | MIT | 2.2K |
| Desktop Commander | 25 | Your computer | MIT | 10.1K |
| Serena | 3 | Your computer | – | 30.7K |
| Context7 | 2 | Your computer or hosted | MIT | 63.7K |
| GitHub | 46 | Hosted | – | 34K |
Questions
Which version should I use?
Version 1.3.3 or later; earlier releases had command injection bugs. npx -y fetches the latest.
Does it work with React Native and Flutter apps?
Yes. It works at the simulator level, so any app running there can be inspected and driven.
How does it compare with XcodeBuildMCP?
XcodeBuildMCP builds and runs Xcode projects. This server focuses on driving and checking the simulator UI, and the two are often used together.
Does it cost anything?
No. It is MIT licensed, and IDB and Xcode are free.
Something wrong on this page? Tell us.
