
iOS Simulator MCP Server: Setup for Claude, Cursor and Other Apps
Lets Claude, Cursor and other assistants tap, type, swipe, screenshot and record the iOS Simulator on your Mac, so they can test your app.
This is a community server by Joshua Yoes, not made by Apple. It runs on your Mac, needs Xcode and the Facebook IDB tool, and has no account or key to set up.
The assistant can see the screen and act on it. Start your simulator first, and check what you ask it to install or open.
Good for
- iOS and React Native developers who want the assistant to check a feature on screen
- QA testers who want deep links and flows tried step by step
- Developers who want screenshots and videos of an app saved while they work
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install ios-simulator MCP
Claude Code
- 1
Copy this prompt.
Add the ios-simulator MCP server to Claude Code. Run this command: claude mcp add ios-simulator -- npx -y ios-simulator-mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js, macOS, Xcode with iOS simulators, Facebook IDB (idb_companion + fb-idb).
Only works on a Mac. Before the first run, install Xcode with at least one iOS simulator, then the Facebook IDB tool: the idb_companion program and the fb-idb Python package (the README links its IDB install steps). Start a simulator, then ask your assistant to use it. Needs Node.js 20 or newer. No account or API key is needed.
Built from the package data we hold. Not yet tested by us.
Tools
Finds the simulator that is running
Returns the ID of the iOS simulator that is currently booted, so other tools know which one to control.
Try: “Which simulator is running right now?”
Read ·
get_booted_sim_idOpens the Simulator app
Launches the iOS Simulator application on your Mac.
Try: “Open the iOS Simulator.”
Runs code ·
open_simulatorReads out everything on the simulator screen
Returns accessibility information for the whole screen, such as each element, its label and where it sits.
Try: “What is on the simulator screen right now?”
Read ·
ui_describe_allTaps a spot on the screen
Taps at the x and y position you give, and can hold the press for a set time.
Try: “Tap the Sign In button.”
Write ·
ui_tapTypes text into the focused field
Enters up to 500 characters. The default method presses US keyboard keys, and a paste method handles other keyboard layouts and non-ASCII text.
Try: “Type my test email into the login field.”
Write ·
ui_typeSwipes across the screen
Swipes from one point to another, with a set duration and step size.
Try: “Swipe up to scroll the list.”
Write ·
ui_swipeTells what element is at a point
Returns the accessibility element at the x and y position you give.
Try: “What is at position 200, 400?”
Read ·
ui_describe_pointFinds screen elements by label or ID
Searches the accessibility tree for elements whose label or ID matches your search, and can filter by type such as Button.
Try: “Find the Settings button on screen.”
Read ·
ui_find_elementTakes a compressed look at the screen
Returns a compressed screenshot of the current simulator view as an image.
Try: “Show me what the simulator looks like now.”
Read ·
ui_viewSaves a screenshot to a file
Takes a screenshot of the simulator and saves it to a path you name, as png, jpeg, tiff, bmp or gif.
Try: “Take a screenshot and save it to my Downloads folder.”
Files ·
screenshotStarts recording the simulator screen
Records the simulator display to a video file with h264 or hevc. Without a path it uses the default output folder, which is Downloads unless you change it.
Try: “Start recording a video of this flow.”
Write ·
record_videoStops the screen recording
Ends the video recording that is running.
Try: “Stop recording.”
Runs code ·
stop_recordingInstalls an app on the simulator
Installs an .app or .ipa file from a path on your Mac onto the simulator.
Try: “Install the build at ~/Builds/MyApp.app.”
Write ·
install_appStarts an app by its bundle ID
Launches an installed app, can restart it first, and can pass it environment variables.
Try: “Launch com.example.app and restart it if it is running.”
Runs code ·
launch_appStops a running app
Quits an app by bundle ID, useful for testing a cold start or crash recovery.
Try: “Quit com.example.app.”
Runs code ·
terminate_appOpens a web link or deep link in the simulator
Opens an https address in Safari, or a custom scheme or universal link in the app that handles it.
Try: “Open myapp://profile/42 in the simulator.”
Runs code ·
open_urlLists apps installed on the simulator
Returns every installed app with its bundle ID and display name, sorted by name.
Try: “Which apps are installed on the simulator?”
Read ·
list_apps
Read from the source code
Permissions
medium risk · 4 things to watch · 1 advisory
Medium risk
It can control the simulator like a person would, install apps from paths on your Mac, and save screenshots and videos to your disk. Keep sensitive apps and logins out of the simulator, and leave approval prompts on.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It acts on the simulator like a user
It can tap, type and swipe in whatever app is on screen, including any account you are signed in to there. Use a test account. github.com
It writes screenshots and videos to disk
Output goes to the path you give, or to Downloads unless you set a default folder. Check paths before approving. github.com
It installs apps from paths you give
The install tool takes an app bundle or .ipa from your Mac. Only point it at builds you trust. github.com
Older versions had a command injection bug
The README says versions before 1.3.3 had command injection flaws, fixed since. Run the current version. github.com
Security advisories
Technical details
| Turning on read-only | No read-only mode. The IOS_SIMULATOR_MCP_FILTERED_TOOLS setting lists tools to leave out, such as screenshot or record_video. |
|---|---|
| Sign-in and keys | No account or key. Files you ask for are written to the path you give, or to the Downloads folder. |
Questions
Is this an official Apple server?
No. It is a community project by Joshua Yoes. Apple does not publish an MCP server for the iOS Simulator.
What do I need to run it?
A Mac with Node.js 20 or newer, Xcode with iOS simulators, and the Facebook IDB tool (the idb_companion program plus the fb-idb Python package). Follow the install box for the config.
Does it work on Windows or Linux?
No. The README lists macOS as required, because iOS simulators only run on Macs.
Can I switch off screenshots and video?
Yes. List tool names such as screenshot, record_video and stop_recording in the IOS_SIMULATOR_MCP_FILTERED_TOOLS setting, and the server will not register them.
Why does typing come out wrong on my keyboard?
The default typing method presses keys as on a US keyboard, so other layouts type the wrong characters. Ask for the paste method, which also handles non-ASCII text but is slower.
Where do screenshots and videos go?
To the path you name. If you give none, they go to your Downloads folder, or to the folder set in IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
ios-simulator-mcp- Registry
- npm
- Transport
- stdio
- Auth
- None
- Version
- 2.2.0
- License
- MIT
- Last commit
- Oct 27, 2026
- Open issues
- 14
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 3Hide
- README.md · github.com
- TROUBLESHOOTING.md · github.com
- ios-simulator-mcp · npmjs.com