io.github.EthanAckerman-git/preflight-ios-mcp
NPM · PREFLIGHT-IOS-MCP · SCANNED AUG 3
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 →
Supply Chain Security80
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.Partial
- 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
- Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree. 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 128 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability81
- 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 Management27
- Stability observed for 8 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
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · preflight-ios-mcp
claude mcp add ethanackerman-git-preflight-ios-mcp -- npx -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": {
"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.
- 3 Aug 26 +4
- Stability: unverified → 0.27 ▲ functional
- 2 Aug 26 +43
- Provenance: unverified → fail ▼ security
- Known CVEs: unverified → partial ▲ security
- Install scripts: unverified → partial ▲ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- The scripts that run when this package is installed changed: postinstall security
- Schema quality: unverified → excellent ▲ functional
- License: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Maintenance: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Licence: MIT functional
- 1 Aug 26 +16
- Tool coverage: unverified → 100 ▲ functional
- 31 Jul 26 −19
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −22
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 27 Jul 26 46
First indexed and scored.
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 3 Aug 2026 · Analysed npm/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
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' |
Dependencies 95 packages
95 packages in the resolved dependency tree · 95 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
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.
simulator_swipe ~200
Swipe/drag from one point to another on the simulator screen. Coordinates are in simulator screen points. Use for scrolling, pulling down, or any drag gesture.
| Name | Type | Req | Description |
|---|---|---|---|
| delta | number | — | Step size in pixels between each touch point (idb only, default: device decides) |
| deviceId | string | — | Device UDID, name, or "booted" (default: booted) |
| durationMs | number | — | Swipe duration in milliseconds (default: 300). Use 400-600ms for edge-swipe-back |
| endX | number | yes | End X in simulator screen points |
| endY | number | yes | End Y in simulator screen points |
| startX | number | yes | Start X in simulator screen points. Use 1 to trigger iOS left-edge-swipe-back gesture (iOS recognizes edge touches within ~20pt of edge) |
| startY | number | yes | Start Y in simulator screen points |
No output schema declared.
No examples provided.
simulator_tap ~122
Tap at a point on the simulator screen. Coordinates are in simulator screen points (e.g., 0-393 for iPhone width). Take a screenshot first to identify coordinates.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | — | Device UDID, name, or "booted" (default: booted) |
| duration | number | — | Press duration in seconds (decimal allowed, e.g. 0.5). Default: normal tap |
| 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_terminate_app ~57
Force-terminate a running app by bundle ID.
| Name | Type | Req | Description |
|---|---|---|---|
| bundleId | string | yes | App bundle identifier to terminate |
| deviceId | string | — | Device UDID, name, or "booted" (default: booted) |
No output schema declared.
No examples provided.
simulator_type_text ~73
Type text into the currently focused text field in the simulator. Make sure a text field is focused first (tap on it).
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | — | Device UDID, name, or "booted" (default: booted) |
| text | string | yes | Text to type into the currently focused field |
No output schema declared.
No examples provided.
simulator_uninstall_app ~58
Uninstall an app from the simulator by bundle ID.
| Name | Type | Req | Description |
|---|---|---|---|
| bundleId | string | yes | App bundle identifier to uninstall |
| deviceId | string | — | Device UDID, name, or "booted" (default: booted) |
No output schema declared.
No examples provided.
simulator_verbose_logging ~58
Enable or disable verbose device logging for deep debugging. Requires device reboot to take effect.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | — | Device (default: booted) |
| enabled | boolean | yes | Enable or disable verbose logging (device reboot may be required) |
No output schema declared.
No examples provided.
simulator_wait_for_element ~167
Wait for an accessibility element to appear on screen. Polls until the element matching your criteria (label, role, or text) appears, or times out. Like Playwright's browser_wait_for.
| Name | Type | Req | Description |
|---|---|---|---|
| deviceId | string | — | Device (default: booted) |
| label | string | — | Wait for element with this accessibility label (case-insensitive partial match) |
| pollIntervalMs | number | — | How often to check in milliseconds (default: 500) |
| role | string | — | Wait for element with this role (e.g., "Button", "TextField", "StaticText") |
| text | string | — | Wait for element containing this text in label or value |
| timeoutMs | number | — | Max wait time in milliseconds (default: 10000) |
No output schema declared.
No examples provided.