What it does
iOS Simulator MCP gives an agent a direct connection to an iOS Simulator on a Mac. It can inspect the running app and perform simulator actions without turning every check into a manual Xcode session.
- Boot and manage an iOS Simulator.
- Inspect the current simulator screen and app state.
- Tap, type and send device actions.
- Capture screenshots while an agent tests an app.
- Use the live function schemas instead of guessing simulator commands.
Available functions
get_booted_sim_id Get the ID of the currently booted iOS simulator
install_app Installs an app bundle (.app or .ipa) on the iOS Simulator
Arguments
-
app_pathrequired -
stringPath to the app bundle (.app directory or .ipa file) to install -
udid -
stringUdid of target, can also be set with the IDB_UDID env var
launch_app Launches an app on the iOS Simulator by bundle identifier
Arguments
-
bundle_idrequired -
stringBundle identifier of the app to launch (e.g., com.apple.mobilesafari) -
env -
objectEnvironment variables to pass to simctl launch -
terminate_running -
booleanTerminate the app if it is already running before launching -
udid -
stringUdid of target, can also be set with the IDB_UDID env var
list_apps Lists all installed apps on the iOS Simulator with their bundle identifiers and display names
Arguments
-
udid -
stringUdid of target, can also be set with the IDB_UDID env var
open_simulator Opens the iOS Simulator application
open_url Opens a URL in the iOS Simulator, useful for testing deep links and universal links
Arguments
-
udid -
stringUdid of target, can also be set with the IDB_UDID env var -
urlrequired -
stringThe URL or deep link to open (e.g., https://example.com or myapp://screen/detail)
record_video Records a video of the iOS Simulator using simctl directly
Arguments
-
codec -
stringSpecifies the codec type: "h264" or "hevc". Default is "hevc". Allowed values: h264, hevc -
display -
stringDisplay to capture: "internal" or "external". Default depends on device type. Allowed values: internal, external -
force -
booleanForce the output file to be written to, even if the file already exists. -
mask -
stringFor non-rectangular displays, handle the mask by policy: "ignored", "alpha", or "black". Allowed values: ignored, alpha, black -
output_path -
stringOptional output path. If not provided, a default name will be used. The file will be saved in the directory specified by `IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR` or in `~/Downloads` if the environment variable is not set. -
udid -
stringUdid of target, can also be set with the IDB_UDID env var
screenshot Takes a screenshot of the iOS Simulator
Arguments
-
display -
stringDisplay to capture (internal or external). Default depends on device type. Allowed values: internal, external -
mask -
stringFor non-rectangular displays, handle the mask by policy (ignored, alpha, or black) Allowed values: ignored, alpha, black -
output_pathrequired -
stringFile path where the screenshot will be saved. If relative, it uses the directory specified by the `IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR` env var, or `~/Downloads` if not set. -
type -
stringImage format (png, tiff, bmp, gif, or jpeg). Default is png. Allowed values: png, tiff, bmp, gif, jpeg -
udid -
stringUdid of target, can also be set with the IDB_UDID env var
stop_recording Stops the simulator video recording using killall
terminate_app Terminates a running app on the iOS Simulator by bundle identifier
Arguments
-
bundle_idrequired -
stringBundle identifier of the app to terminate (e.g., com.apple.mobilesafari) -
udid -
stringUdid of target, can also be set with the IDB_UDID env var
ui_describe_all Describes accessibility information for the entire screen in the iOS Simulator
Arguments
-
udid -
stringUdid of target, can also be set with the IDB_UDID env var
ui_describe_point Returns the accessibility element at given co-ordinates on the iOS Simulator's screen
Arguments
-
udid -
stringUdid of target, can also be set with the IDB_UDID env var -
xrequired -
numberThe x-coordinate -
yrequired -
numberThe y-coordinate
ui_find_element Searches the accessibility tree and returns elements matching the given criteria
Arguments
-
caseSensitive -
booleanWhether search matching is case-sensitive (default: false) Default:false -
matchMode -
stringMatch mode for search strings: 'substring' (default) or 'exact' Allowed values: substring, exact Default:substring -
searchrequired -
arrayArray of search strings. An element matches if ANY string matches against its AXLabel or AXUniqueId -
type -
stringFilter by element type (e.g. 'Button', 'StaticText', 'Group'). Case-insensitive exact match -
udid -
stringUdid of target, can also be set with the IDB_UDID env var
ui_swipe Swipe on the screen in the iOS Simulator
Arguments
-
delta -
numberThe size of each step in the swipe (default is 1) Default:1 -
duration -
stringSwipe duration in seconds (e.g., 0.1) -
udid -
stringUdid of target, can also be set with the IDB_UDID env var -
x_endrequired -
numberThe ending x-coordinate -
x_startrequired -
numberThe starting x-coordinate -
y_endrequired -
numberThe ending y-coordinate -
y_startrequired -
numberThe starting y-coordinate
ui_tap Tap on the screen in the iOS Simulator
Arguments
-
duration -
stringPress duration -
udid -
stringUdid of target, can also be set with the IDB_UDID env var -
xrequired -
numberThe x-coordinate -
yrequired -
numberThe x-coordinate
ui_type Input text into the iOS Simulator
Arguments
-
textrequired -
stringText to input -
udid -
stringUdid of target, can also be set with the IDB_UDID env var
ui_view Get the image content of a compressed screenshot of the current simulator view
Arguments
-
udid -
stringUdid of target, can also be set with the IDB_UDID env var