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_typeA | 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 are clearly distinct: UI interactions, app management, and media capture are well-separated. However, screenshot and ui_view both capture screen content, and ui_describe_all/ui_describe_point/ui_find_element overlap in describing UI elements, though at different granularities.
All tools use snake_case with a verb_noun pattern (e.g., get_booted_sim_id, launch_app). UI actions are consistently prefixed with ui_, and paired operations like record_video/stop_recording follow parallel naming. No mixed conventions or vague verbs.
17 tools is on the heavier side but justifiable for an iOS simulator server that covers device control, UI automation, app management, and media capture. Each tool addresses a specific need and no tool feels redundant enough to remove, though a few are niche, like open_simulator.
Core workflows are covered: app install/launch/terminate, UI interaction, screenshots, video, and deep links. However, there are notable gaps: no simulator shutdown/boot control (only open_simulator), no uninstall_app, and no way to list available simulators or manage the device state beyond booted ID.