iOS Simulator MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| IDB_UDID | No | Udid of target, can also be set with the IDB_UDID env var. Format: UUID (8-4-4-4-12 hexadecimal characters) | |
| IOS_SIMULATOR_MCP_FILTERED_TOOLS | No | A comma-separated list of tool names to filter out from being registered. | |
| IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR | No | Specifies a default directory for output files like screenshots and video recordings. If not set, ~/Downloads will be used. This can be handy if your agent has limited access to the file system. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_booted_sim_idA | Get the ID of the currently booted iOS simulator |
| open_simulatorA | Opens the iOS Simulator application |
| ui_describe_allA | Describes accessibility information for the entire screen in the iOS Simulator |
| ui_tapB | Tap on the screen in the iOS Simulator |
| ui_typeC | Input text into the iOS Simulator |
| ui_swipeB | Swipe on the screen in the iOS Simulator |
| ui_describe_pointA | Returns the accessibility element at given co-ordinates on the iOS Simulator's screen |
| ui_find_elementA | Searches the accessibility tree and returns elements matching the given criteria |
| ui_viewA | Get the image content of a compressed screenshot of the current simulator view |
| screenshotB | Takes a screenshot of the iOS Simulator |
| record_videoB | Records a video of the iOS Simulator using simctl directly |
| stop_recordingA | Stops the simulator video recording using killall |
| install_appA | Installs an app bundle (.app or .ipa) on the iOS Simulator |
| launch_appA | Launches an app on the iOS Simulator by bundle identifier |
| terminate_appA | Terminates a running app on the iOS Simulator by bundle identifier |
| open_urlA | Opens a URL in the iOS Simulator, useful for testing deep links and universal links |
| list_appsA | Lists all installed apps on the iOS Simulator with their bundle identifiers and display names |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Most tools target clearly distinct operations: app lifecycle (install/launch/terminate/list), UI interaction (tap/swipe/type), and accessibility inspection (describe_all/describe_point/find_element) are all well-separated. The main ambiguity is ui_view vs screenshot, which both return an image of the simulator screen, plus ui_describe_point vs ui_find_element which are similar but distinguishable by input (coordinates vs criteria).
Nearly all names are snake_case verb_noun and readable, with an apparent two-namespace convention (ui_ prefix for interaction, plain verbs for simctl/app management). The main deviation is 'screenshot', a bare noun that also lacks the ui_ prefix used by its near-twin 'ui_view', creating a minor pattern break.
17 tools sits at the upper end but each maps to a concrete, non-redundant capability (screen capture, recording, accessibility, input, app management). The surface is broad but reasonably justified for a full simulator-control server, though the ui_view/screenshot pair could be consolidated to trim one.
Coverage is strong: state detection, app install/launch/terminate/list, URL/deep-link handling, screenshots, video recording, UI input, and accessibility inspection are all present. Gaps remain around simulator lifecycle (no explicit boot/shutdown of a specific device, only get_booted_sim_id/open_simulator) and app management (no uninstall_app), but these are minor and workable.