About io.github.rmathew1973/ios-sim-mcp
io.github.rmathew1973/ios-sim-mcp is an MCP server in the RAG category: drive the iOS Simulator via semantic accessibility-tree snapshots. Sub-200ms, no WebDriverAgent.
Install
claude mcp add io-github-rmathew1973-ios-sim-mcp -- npx -y ios-sim-mcpnpx -y ios-sim-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (23)
await_quiescentBlock until the AX-tree hash is identical for `stable_ms` (default 250) or `timeout_ms` (default 5000). Use after launches and navigation instead of sleep
Parameters not published.
buttonHardware button: HOME, LOCK, SIDE_BUTTON, SIRI, APPLE_PAY
Parameters not published.
eval_jsRun arbitrary JavaScript in a persistent `JSContext` inside the injected app. Bridged globals: `app`, `key_window()`, `all_windows()`, `defaults`, `pasteboard`, `bundle`, `process`, `notif_center`, `first_responder()`, `find_view_by_ax_id`, `find_view_by_class`, `find_vc_by_class`, `post_notification`, `cls`, `log`. State persists across calls. Requires dylib injected
Parameters not published.
eval_js_resetDrop the JSContext and rebuild bridges on next eval — forgets your defined vars/fns
Parameters not published.
findSearch the snapshot by `id` (AXUniqueId), `label`, `labelContains`, `role`, `actionable`
Parameters not published.
keyPress a key by name (RETURN, ESC, DELETE, TAB, SPACE, F1–F12, arrows) or raw HID code
Parameters not published.
launch_appLaunch by bundle id. Optional `foreground_if_running` terminates first
Parameters not published.
list_simulatorsList simulators with UDID, state, OS version
Parameters not published.
network_clearDrop the ring buffer and all retained bodies
Parameters not published.
network_get_bodyFetch the full request or response body (up to `max_body_bytes`, default 256KB) for a specific record id. Returns base64 + UTF-8 decode for text bodies
Parameters not published.
Show all 23 tools
network_self_testFire an HTTP request from inside the app to verify the capture path end-to-end
Parameters not published.
network_tailReturn the most recent N captured records. Default: one line per request (id, method, status, timing, sizes, URL). `full=true` includes headers + body previews inline. Page forward via `since_id`
Parameters not published.
paste_textByte-perfect text via `UIPasteboard` + first-responder `paste:`. Requires the dylib injected. The right answer for emails, passwords, OAuth tokens, anything case-sensitive
Parameters not published.
screenshotPNG to disk or inline. Use sparingly — the AX tree is faster and richer
Parameters not published.
scrollReader-perspective scroll: `down` reveals content below. Optional anchor element
Parameters not published.
snapshotCapture the AX tree, assign refs `e1..eN`, return compact text rendering. Filters: `interactive` (default), `actionable`, `all`
Parameters not published.
swipeSwipe between two refs/ids/points. Optional `duration` and `delta`
Parameters not published.
tapTap by `{ref}`, `{id}`, or `{x,y}`. Optional `duration` makes it a long-press
Parameters not published.
terminate_appTerminate by bundle id
Parameters not published.
type_textType into the focused field. Optional `{ref}` or `{id}` taps-then-types. Auto-routes through paste when the dylib is loaded for byte-perfect input — no iOS autocorrect, no first-letter capitalization. `via: "keystroke"` forces the typing path; `via: "paste"` forces the paste path
Parameters not published.
use_simulatorPick a specific UDID (auto-selected if only one is booted)
Parameters not published.
view_hit_test"What view actually receives a tap at (x,y)?" Returns the topmost view plus the full responder chain up to `UIApplication`. The right debugging tool when a `tap` isn't doing what you expect. Requires dylib injected
Parameters not published.
view_treeWalk the running app's `UIView` hierarchy on the main thread. Reports class names, frames in window coords, alpha/hidden/interactive, text content, and annotates view-controller boundaries. Strictly richer than `snapshot` — sees custom-drawn views, transient overlays, SwiftUI internals. Filter by `class_filter` / `ax_id_contains` / `text_contains`. Requires dylib injected
Parameters not published.
Ask AI
Ask AI about io.github.rmathew1973/ios-sim-mcp
Powered by Claude · Grounded in docs
Security checks
6 checks have not been run yet.