io.github.EthanAckerman-git/preflight-ios-mcp
NPM · PREFLIGHT-IOS-MCP · SCANNED SEP 20
57 tools for AI-powered iOS Simulator automation — tap, swipe, type, screenshots, and more.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security92
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs a script at install time (postinstall) that we could not recognise. It may be perfectly ordinary, but we do not read the published tarball, so we cannot say what it does. View diagnostics → Partial
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 176 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability80
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 4547 tokens (~79/item across 57 items; 57 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "simulator_shutdown" implies "shutdown" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 57 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.EthanAckerman-git/preflight-ios-mcp server?
io.github.EthanAckerman-git/preflight-ios-mcp runs locally as an npm package, launched with npx -y preflight-ios-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · preflight-ios-mcp
claude mcp add ethanackerman-git-preflight-ios-mcp -- npx -y preflight-ios-mcp
{
"mcpServers": {
"ethanackerman-git-preflight-ios-mcp": {
"command": "npx",
"args": [
"-y",
"preflight-ios-mcp"
]
}
}
} {
"servers": {
"ethanackerman-git-preflight-ios-mcp": {
"command": "npx",
"args": [
"-y",
"preflight-ios-mcp"
]
}
}
} codex mcp add ethanackerman-git-preflight-ios-mcp -- npx -y preflight-ios-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ethanackerman-git-preflight-ios-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"preflight-ios-mcp"
],
"enabled": true
}
}
} openclaw mcp add ethanackerman-git-preflight-ios-mcp --command npx --arg -y --arg preflight-ios-mcp
mcp_servers:
ethanackerman-git-preflight-ios-mcp:
command: "npx"
args: ["-y", "preflight-ios-mcp"] {
"McpServers": {
"ethanackerman-git-preflight-ios-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"preflight-ios-mcp"
]
}
}
} assistant mcp add ethanackerman-git-preflight-ios-mcp -t stdio -c npx -a -y preflight-ios-mcp
{
"mcpServers": {
"ethanackerman-git-preflight-ios-mcp": {
"command": "npx",
"args": [
"-y",
"preflight-ios-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 −3
- Stability: pass → 0.80 functional
- 16 Sept 26 +1
- Stability: 0.97 → pass security
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 −3
- Stability: pass → 0.80 functional
- 9 Sept 26 +1
- Stability: 0.97 → pass security
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/preflight-ios-mcp@1.0.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| postinstall | unreviewed | which idb > /dev/null 2>&1 || echo '\n[Preflight MCP] Optional: Install idb for cursor-free touch injection:\n brew tap facebook/fb && brew install idb-companion\n pip3 install fb-idb\n' |
Background: Why install scripts are a supply-chain risk →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
simulator_accessibility_audit ~49
Get the accessibility element tree of the current Simulator screen. Shows roles, labels, values, and positions of UI elements.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_add_media ~56
Add photos or videos to the simulator's camera roll from local file paths.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| filePaths | array | yes | Paths to photo/video files to add to camera roll |
No output schema declared.
No examples provided.
simulator_app_info ~71
Get detailed metadata about an installed app (bundle ID, paths, version, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| bundleId | string | yes | App bundle identifier (e.g., "com.apple.mobilesafari") |
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
No output schema declared.
No examples provided.
simulator_biometric ~53
Set Face ID / Touch ID enrollment state. Test biometric authentication flows.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| enrolled | boolean | yes | Whether Face ID / Touch ID is enrolled |
No output schema declared.
No examples provided.
simulator_boot ~69
Boot an iOS Simulator device. Opens the Simulator app. Use simulator_list_devices to find device names/UDIDs.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Device UDID or name to boot |
| waitForBoot | boolean | – | Wait until device is fully booted before returning (default: true) |
No output schema declared.
No examples provided.
simulator_defaults_read ~83
Read UserDefaults values from inside the simulator. Inspect app preferences, feature flags, and configuration.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| domain | string | yes | Defaults domain (bundle ID like "com.apple.mobilesafari" or "NSGlobalDomain") |
| key | string | – | Specific key to read (omit for all keys) |
No output schema declared.
No examples provided.
simulator_defaults_write ~89
Write UserDefaults values inside the simulator. Set feature flags, change app configuration, or inject test data.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| domain | string | yes | Defaults domain (bundle ID) |
| key | string | yes | Key to write |
| type | string | – | Value type (default: string) |
| value | string | yes | Value to set |
No output schema declared.
No examples provided.
simulator_describe_point ~85
Returns the accessibility element at given coordinates on the iOS Simulator screen. Shows element type, label, value, and frame.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
| x | number | yes | X coordinate in simulator screen points |
| y | number | yes | Y coordinate in simulator screen points |
No output schema declared.
No examples provided.
simulator_diagnose ~44
Generate a diagnostic summary: booted devices, Xcode version, disk usage, and system info.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_element_exists ~94
Quick check: does an element matching your criteria exist on screen right now? Returns true/false. Useful for conditional logic.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| label | string | – | Search for element with this accessibility label (case-insensitive partial match) |
| role | string | – | Search for element with this role |
| text | string | – | Search for element containing this text |
No output schema declared.
No examples provided.
simulator_erase ~40
Factory reset a simulator device. Erases all content and settings.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | yes | Device UDID or name to erase (factory reset) |
No output schema declared.
No examples provided.
simulator_get_app_container ~78
Get the filesystem path to an app's container (bundle, data, or shared groups). Use this to find where the app stores its files.
| Name | Type | Req | Description |
|---|---|---|---|
| bundleId | string | yes | App bundle identifier |
| containerType | string | – | Container type (default: data) |
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_get_booted_sim_id ~25
Get the UDID of the currently booted iOS Simulator.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
simulator_get_clipboard ~33
Read the text content of the simulator clipboard.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_get_crash_logs ~107
Retrieve crash reports from ~/Library/Logs/DiagnosticReports/. Shows stack traces, exception info, and thread states. Filter by process name.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| limit | number | – | Max number of crash reports (default: 5) |
| processName | string | – | Filter by process/app name |
| since | string | – | Only crashes since this ISO date (e.g., "2026-03-22") |
No output schema declared.
No examples provided.
simulator_get_env ~68
Read an environment variable from the running simulator device (e.g., HOME, TMPDIR, PATH).
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| variable | string | yes | Environment variable name to read (e.g., "HOME", "TMPDIR", "PATH") |
No output schema declared.
No examples provided.
simulator_get_logs ~182
Get recent device/app logs. Filter by process name, subsystem, log level, time range, and message content. Essential for debugging app behavior.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Filter by log category |
| deviceId | string | – | Device (default: booted) |
| level | string | – | Minimum log level (default: default) |
| limit | number | – | Max number of log lines to return (default: 100) |
| messageContains | string | – | Filter messages containing this text |
| process | string | – | Filter by process name (e.g., "MyApp", "SpringBoard") |
| since | string | – | Time range: "5m", "1h", "30s", or ISO date (default: "1m") |
| subsystem | string | – | Filter by log subsystem (e.g., "com.apple.UIKit") |
No output schema declared.
No examples provided.
simulator_get_screen_info ~44
Get diagnostic info about the Simulator window geometry and coordinate mapping. Useful for debugging tap/swipe accuracy.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_grant_permission ~106
Grant, revoke, or reset app permissions (camera, location, photos, contacts, microphone, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Permission action |
| bundleId | string | yes | App bundle ID |
| deviceId | string | – | Device (default: booted) |
| service | string | yes | Permission service: all, calendar, contacts-limited, contacts, location, location-always, photos-add, photos, media-library, microphone, motion, reminders, siri |
No output schema declared.
No examples provided.
simulator_icloud_sync ~43
Trigger iCloud sync on the device. Requires the device to be signed into an Apple ID.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_install_app ~65
Install a .app bundle onto the simulator from a local file path.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
| path | string | yes | Path to .app bundle or .ipa file to install |
No output schema declared.
No examples provided.
simulator_install_app_data ~62
Install an .xcappdata package to replace the current app container contents. Useful for restoring test data snapshots.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| path | string | yes | Path to .xcappdata package to install |
No output schema declared.
No examples provided.
simulator_keychain ~97
Manipulate the device keychain: add root certificates, add certificates, or reset the entire keychain.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | "add-root-cert" to add trusted root CA, "add-cert" to add certificate, "reset" to clear keychain |
| deviceId | string | – | Device (default: booted) |
| path | string | – | Path to certificate file (required for add-root-cert and add-cert) |
No output schema declared.
No examples provided.
simulator_launch_app ~116
Launch an app by bundle ID. Optionally pass launch arguments and environment variables.
| Name | Type | Req | Description |
|---|---|---|---|
| args | array | – | Launch arguments to pass to the app |
| bundleId | string | yes | App bundle identifier to launch |
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
| env | object | – | Environment variables to set (will be prefixed with SIMCTL_CHILD_) |
| terminateRunning | boolean | – | Terminate the app first if already running (default: false) |
No output schema declared.
No examples provided.
simulator_list_app_files ~91
List files in an app's data container. Shows Documents, Library, Preferences, Caches, tmp, etc. Use to find databases, plists, caches.
| Name | Type | Req | Description |
|---|---|---|---|
| bundleId | string | yes | App bundle identifier |
| deviceId | string | – | Device (default: booted) |
| subPath | string | – | Subdirectory to list (e.g., "Documents", "Library/Preferences") |
No output schema declared.
No examples provided.
simulator_list_apps ~60
List all installed apps on the simulator with their bundle IDs.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
| includeSystem | boolean | – | Include system apps (default: false) |
No output schema declared.
No examples provided.
simulator_list_devices ~39
List iOS Simulator devices. Shows name, UDID, state, and runtime.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | Filter devices (default: all) |
No output schema declared.
No examples provided.
simulator_location_route ~81
Simulate movement along a custom route with waypoints. Specify GPS coordinates and speed for realistic location testing.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| speed | number | – | Speed in meters/second (default: ~walking speed) |
| waypoints | array | yes | Array of {lat, lng} waypoints to traverse |
No output schema declared.
No examples provided.
simulator_location_scenario ~104
Run predefined GPS location scenarios (Freeway Drive, City Run, City Bicycle Ride). Simulates realistic movement patterns for testing location features.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | "list" available scenarios, "run" a scenario, "clear" to stop |
| deviceId | string | – | Device (default: booted) |
| scenario | string | – | Scenario name (e.g., "Freeway Drive", "City Run", "City Bicycle Ride", "Apple") |
No output schema declared.
No examples provided.
simulator_long_press ~99
Long press at a point on the simulator screen. Useful for context menus, drag-and-drop initiation, etc.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
| durationMs | number | – | Press duration in milliseconds (default: 1000) |
| x | number | yes | X coordinate in simulator screen points |
| y | number | yes | Y coordinate in simulator screen points |
No output schema declared.
No examples provided.
simulator_memory_warning ~45
Trigger a simulated memory warning. Apps will receive didReceiveMemoryWarning and can be tested for proper memory cleanup.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_navigate_back ~59
Navigate back in the current app. Sends Cmd+[ (standard back navigation). Works in Safari and apps with standard UINavigationController. Workaround for edge-swipe-back gesture limitation.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_network_status ~40
Get the current network configuration inside the simulator — interfaces, IP addresses, DNS config.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_open_simulator ~17
Opens the iOS Simulator application.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
simulator_open_url ~88
Open a URL or deep link in the simulator (e.g., "https://example.com" or "myapp://screen").
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
| url | string | yes | URL or deep link to open (e.g., "https://example.com" or "myapp://path") |
No output schema declared.
No examples provided.
simulator_override_status_bar ~201
Override the simulator status bar: set time, battery, signal bars, carrier name, network type. Use clear=true to reset.
| Name | Type | Req | Description |
|---|---|---|---|
| batteryLevel | number | – | Battery level 0-100 |
| batteryState | string | – | Battery state |
| cellularBars | number | – | Cellular signal bars 0-4 |
| clear | boolean | – | Set to true to clear all overrides |
| deviceId | string | – | Device (default: booted) |
| networkType | string | – | Data network type: wifi, 3g, 4g, lte, lte-a, lte+, 5g, 5g+, 5g-uwb, 5g-uc |
| operatorName | string | – | Carrier/operator name |
| time | string | – | Status bar time string (e.g., "9:41") |
| wifiBars | number | – | WiFi signal bars 0-3 |
No output schema declared.
No examples provided.
simulator_press_key ~122
Press a special key (return, escape, delete, tab, arrows, etc.) with optional modifiers (command, shift, option, control).
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
| key | string | yes | Key name: return, escape, delete, tab, space, up, down, left, right, home, end, pageup, pagedown, f1-f12 |
| modifiers | array | – | Modifier keys: command, shift, option, control |
No output schema declared.
No examples provided.
simulator_read_app_file ~102
Read a file from an app's data container. Handles plists (converts to JSON), SQLite databases (shows schema), and text files. Specify path relative to data container.
| Name | Type | Req | Description |
|---|---|---|---|
| bundleId | string | yes | App bundle identifier |
| deviceId | string | – | Device (default: booted) |
| filePath | string | yes | Relative path within the data container (e.g., "Documents/data.json", "Library/Preferences/com.app.plist") |
No output schema declared.
No examples provided.
simulator_record_video ~96
Start recording the simulator screen to a video file. Use simulator_stop_recording to stop. Supports H.264 and HEVC codecs.
| Name | Type | Req | Description |
|---|---|---|---|
| codec | string | – | Video codec (default: h264) |
| deviceId | string | – | Device (default: booted) |
| display | string | – | Display to capture (default: internal) |
| mask | string | – | For non-rectangular displays, handle mask by policy |
No output schema declared.
No examples provided.
simulator_screenshot ~122
Take a screenshot of the iOS Simulator screen. Returns the image directly for viewing.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
| display | string | – | Display to capture (default: internal) |
| format | string | – | Image format (default: jpeg). JPEG recommended for AI — smaller, faster. |
| mask | string | – | For non-rectangular displays, handle mask by policy |
| savePath | string | – | Optional: save a copy to this path on disk |
No output schema declared.
No examples provided.
simulator_send_push ~91
Send a push notification to an app. Provide the full APNs payload JSON (e.g., {"aps": {"alert": "Hello"}}).
| Name | Type | Req | Description |
|---|---|---|---|
| bundleId | string | yes | App bundle ID to receive the push |
| deviceId | string | – | Device (default: booted) |
| payload | object | yes | Push notification JSON payload (e.g., {"aps": {"alert": "Hello"}}) |
No output schema declared.
No examples provided.
simulator_set_appearance ~42
Switch the simulator between light and dark mode.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| mode | string | yes | Appearance mode |
No output schema declared.
No examples provided.
simulator_set_clipboard ~52
Set text on the simulator clipboard. Useful for pasting content into apps.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| text | string | yes | Text to copy to simulator clipboard |
No output schema declared.
No examples provided.
simulator_set_content_size ~62
Set the preferred content size for Dynamic Type testing. Test your app with accessibility text sizes without changing device settings manually.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| size | string | yes | Preferred content size category for Dynamic Type testing |
No output schema declared.
No examples provided.
simulator_set_increase_contrast ~59
Enable or disable the Increase Contrast accessibility setting. Test how your app responds to high contrast mode.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| enabled | boolean | yes | Enable or disable Increase Contrast accessibility setting |
No output schema declared.
No examples provided.
simulator_set_location ~66
Set the simulated GPS location (latitude, longitude). Useful for testing location-based features.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| latitude | number | yes | Latitude (-90 to 90) |
| longitude | number | yes | Longitude (-180 to 180) |
No output schema declared.
No examples provided.
simulator_shutdown ~39
Shut down a running simulator device.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device UDID, name, or "booted" (default: booted) |
No output schema declared.
No examples provided.
simulator_snapshot ~66
Capture a structured accessibility snapshot of the current screen — like Playwright's browser_snapshot. Returns roles, labels, values, and positions. PREFERRED over screenshots for understanding UI structure and targeting interactions. No vision model needed.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
No output schema declared.
No examples provided.
simulator_stop_recording ~81
Stop an active video recording and save the file.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | – | Device (default: booted) |
| maxFrames | number | – | Max number of key frames to extract (default: 3, max: 6) |
| savePath | string | – | Optional: save the video file to this path instead of discarding it |
No output schema declared.
No examples provided.
simulator_stream_logs ~129
Start/read/stop a live log stream. Use action="start" to begin, "read" to get the buffer, "stop" to end. Great for watching app behavior in real-time.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | "start" begins streaming, "read" returns current buffer, "stop" ends the stream |
| bufferSize | number | – | Max lines to keep in buffer (default: 200) |
| deviceId | string | – | Device (default: booted) |
| level | string | – | Minimum log level |
| process | string | – | Filter by process name |
No output schema declared.
No examples provided.
What is the io.github.EthanAckerman-git/preflight-ios-mcp server?
io.github.EthanAckerman-git/preflight-ios-mcp is listed in the public MCP registry as io.github.EthanAckerman-git/preflight-ios-mcp. 57 tools for AI-powered iOS Simulator automation, tap, swipe, type, screenshots, and more. This page covers its npm package (preflight-ios-mcp).
Is the io.github.EthanAckerman-git/preflight-ios-mcp server safe to use?
io.github.EthanAckerman-git/preflight-ios-mcp scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.EthanAckerman-git/preflight-ios-mcp server expose?
io.github.EthanAckerman-git/preflight-ios-mcp exposes 57 tools: simulator_screenshot, simulator_list_devices, simulator_list_apps, simulator_app_info, simulator_get_clipboard, and 52 more. Their descriptions and schemas cost roughly 4,547 tokens of context every time the server is loaded.
Is the io.github.EthanAckerman-git/preflight-ios-mcp server still maintained?
io.github.EthanAckerman-git/preflight-ios-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.EthanAckerman-git/preflight-ios-mcp server under?
io.github.EthanAckerman-git/preflight-ios-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.