Install ios-simulator-mcp from npm
Install exact version 2.1.0. No verified executable entrypoint is available, so use the package documentation to launch it.
npm install --save-exact ios-simulator-mcp@2.1.0Enables interaction with iOS simulators by providing tools to inspect UI elements, control UI interactions, and manage simulators through natural language commands
Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.
Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.
Install exact version 2.1.0. No verified executable entrypoint is available, so use the package documentation to launch it.
npm install --save-exact ios-simulator-mcp@2.1.0| Canonical slug | ios-simulator-mcp-ecfe565e | Deployment | Local Only |
|---|---|---|---|
| Canonical package | npm:ios-simulator-mcp | Repository | joshuayoes/ios-simulator-mcp |
| First published | Aug 11, 2026 | Latest release | Aug 11, 2026 |
| Last security verification | — | Classification confidence | 90% |
| Publication | Draft | Official distribution | Not verified |
| Channel | Identifier | Current version | Versions | Source |
|---|---|---|---|---|
| npm | ios-simulator-mcp | 2.1.0 | 17 | Repository |
| Package | Version | Published / observed | Inventory | Security scan |
|---|---|---|---|---|
| npmios-simulator-mcp | 2.1.0Current | Sep 5, 2026 | 17 toolsSucceeded · 0 resources · 0 prompts | Evidence restricted |
Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.
No public current-version evidence is available yet.
| Tool | Category | Annotations | Risk |
|---|---|---|---|
get_booted_sim_idGet the ID of the currently booted iOS simulatorInput schema{
"type": "object",
"properties": {}
}Annotations{
"title": "Get Booted Simulator ID",
"readOnlyHint": true,
"openWorldHint": true
} | — | Read onlyOpen world | — |
install_appInstalls an app bundle (.app or .ipa) on the iOS SimulatorInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"app_path": {
"type": "string",
"maxLength": 1024,
"description": "Path to the app bundle (.app directory or .ipa file) to install"
}
},
"required": [
"app_path"
]
}Annotations{
"title": "Install App",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
launch_appLaunches an app on the iOS Simulator by bundle identifierInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"bundle_id": {
"type": "string",
"maxLength": 256,
"description": "Bundle identifier of the app to launch (e.g., com.apple.mobilesafari)"
},
"terminate_running": {
"description": "Terminate the app if it is already running before launching",
"type": "boolean"
},
"env": {
"description": "Environment variables to pass to simctl launch",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"bundle_id"
]
}Annotations{
"title": "Launch App",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
list_appsLists all installed apps on the iOS Simulator with their bundle identifiers and display namesInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
}
}
}Annotations{
"title": "List Installed Apps",
"readOnlyHint": true,
"openWorldHint": true
} | — | Read onlyOpen world | — |
open_simulatorOpens the iOS Simulator applicationInput schema{
"type": "object",
"properties": {}
}Annotations{
"title": "Open Simulator",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
open_urlOpens a URL in the iOS Simulator, useful for testing deep links and universal linksInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"url": {
"type": "string",
"maxLength": 2048,
"description": "The URL or deep link to open (e.g., https://example.com or myapp://screen/detail)"
}
},
"required": [
"url"
]
}Annotations{
"title": "Open URL",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
record_videoRecords a video of the iOS Simulator using simctl directlyInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"output_path": {
"description": "Optional 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.",
"type": "string",
"maxLength": 1024
},
"codec": {
"description": "Specifies the codec type: \"h264\" or \"hevc\". Default is \"hevc\".",
"type": "string",
"enum": [
"h264",
"hevc"
]
},
"display": {
"description": "Display to capture: \"internal\" or \"external\". Default depends on device type.",
"type": "string",
"enum": [
"internal",
"external"
]
},
"mask": {
"description": "For non-rectangular displays, handle the mask by policy: \"ignored\", \"alpha\", or \"black\".",
"type": "string",
"enum": [
"ignored",
"alpha",
"black"
]
},
"force": {
"description": "Force the output file to be written to, even if the file already exists.",
"type": "boolean"
}
}
}Annotations{
"title": "Record Video",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
screenshotTakes a screenshot of the iOS SimulatorInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"output_path": {
"type": "string",
"maxLength": 1024,
"description": "File 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": {
"description": "Image format (png, tiff, bmp, gif, or jpeg). Default is png.",
"type": "string",
"enum": [
"png",
"tiff",
"bmp",
"gif",
"jpeg"
]
},
"display": {
"description": "Display to capture (internal or external). Default depends on device type.",
"type": "string",
"enum": [
"internal",
"external"
]
},
"mask": {
"description": "For non-rectangular displays, handle the mask by policy (ignored, alpha, or black)",
"type": "string",
"enum": [
"ignored",
"alpha",
"black"
]
}
},
"required": [
"output_path"
]
}Annotations{
"title": "Take Screenshot",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
stop_recordingStops the simulator video recording using killallInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Annotations{
"title": "Stop Recording",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
terminate_appTerminates a running app on the iOS Simulator by bundle identifierInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"bundle_id": {
"type": "string",
"maxLength": 256,
"description": "Bundle identifier of the app to terminate (e.g., com.apple.mobilesafari)"
}
},
"required": [
"bundle_id"
]
}Annotations{
"title": "Terminate App",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
ui_describe_allDescribes accessibility information for the entire screen in the iOS SimulatorInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
}
}
}Annotations{
"title": "Describe All UI Elements",
"readOnlyHint": true,
"openWorldHint": true
} | — | Read onlyOpen world | — |
ui_describe_pointReturns the accessibility element at given co-ordinates on the iOS Simulator's screenInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"x": {
"type": "number",
"description": "The x-coordinate"
},
"y": {
"type": "number",
"description": "The y-coordinate"
}
},
"required": [
"x",
"y"
]
}Annotations{
"title": "Describe UI Point",
"readOnlyHint": true,
"openWorldHint": true
} | — | Read onlyOpen world | — |
ui_find_elementSearches the accessibility tree and returns elements matching the given criteriaInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"search": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Array of search strings. An element matches if ANY string matches against its AXLabel or AXUniqueId"
},
"type": {
"description": "Filter by element type (e.g. 'Button', 'StaticText', 'Group'). Case-insensitive exact match",
"type": "string"
},
"matchMode": {
"default": "substring",
"description": "Match mode for search strings: 'substring' (default) or 'exact'",
"type": "string",
"enum": [
"substring",
"exact"
]
},
"caseSensitive": {
"default": false,
"description": "Whether search matching is case-sensitive (default: false)",
"type": "boolean"
}
},
"required": [
"search"
]
}Annotations{
"title": "Find UI Element",
"readOnlyHint": true,
"openWorldHint": true
} | — | Read onlyOpen world | — |
ui_swipeSwipe on the screen in the iOS SimulatorInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"duration": {
"description": "Swipe duration in seconds (e.g., 0.1)",
"type": "string",
"pattern": "^\\d+(\\.\\d+)?$"
},
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"x_start": {
"type": "number",
"description": "The starting x-coordinate"
},
"y_start": {
"type": "number",
"description": "The starting y-coordinate"
},
"x_end": {
"type": "number",
"description": "The ending x-coordinate"
},
"y_end": {
"type": "number",
"description": "The ending y-coordinate"
},
"delta": {
"default": 1,
"description": "The size of each step in the swipe (default is 1)",
"type": "number"
}
},
"required": [
"x_start",
"y_start",
"x_end",
"y_end"
]
}Annotations{
"title": "UI Swipe",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
ui_tapTap on the screen in the iOS SimulatorInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"duration": {
"description": "Press duration",
"type": "string",
"pattern": "^\\d+(\\.\\d+)?$"
},
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"x": {
"type": "number",
"description": "The x-coordinate"
},
"y": {
"type": "number",
"description": "The x-coordinate"
}
},
"required": [
"x",
"y"
]
}Annotations{
"title": "UI Tap",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
ui_typeInput text into the iOS SimulatorInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
},
"text": {
"type": "string",
"maxLength": 500,
"pattern": "^[\\x20-\\x7E]+$",
"description": "Text to input"
}
},
"required": [
"text"
]
}Annotations{
"title": "UI Type",
"readOnlyHint": false,
"openWorldHint": true
} | — | WritesOpen world | — |
ui_viewGet the image content of a compressed screenshot of the current simulator viewInput schema{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"udid": {
"description": "Udid of target, can also be set with the IDB_UDID env var",
"type": "string",
"pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"
}
}
}Annotations{
"title": "View Screenshot",
"readOnlyHint": true,
"openWorldHint": true
} | — | Read onlyOpen world | — |
| Endpoint | Transport | Authentication | Health | Observed |
|---|---|---|---|---|
| No verified remote endpoint is linked. | ||||
Install the selected package version with: npm install --save-exact ios-simulator-mcp@2.1.0
iOS Simulator MCP Server exposed 17 tools during independent protocol observation, including get_booted_sim_id, install_app, launch_app, list_apps, open_simulator, open_url, record_video, screenshot, and others.
The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.
Curated product and capability guides containing this catalog record.