The fastest MCP server for iOS/macOS Simulator automation. Native CoreSimulator integration, 20ms screenshots, tap/swipe/type, UI element detection, and full XCUITest support.
SilbercueSwift demonstrates good tool definition quality with clear naming conventions, comprehensive schemas, and strong descriptions. All 16 tools are explicitly registered with input schemas and descriptions. Tool names follow verb_noun patterns (run_plan, build_sim, git_commit, screenshot). Schemas use proper JSON Schema format with typed properties and descriptions. However, there are gaps in output schema documentation, some parameter descriptions lack format constraints, and error handling guidance could be more actionable. The run_plan tool is sophisticated with Pause & Resume semantics but lacks clarity on session management and error recovery paths. Git tools are well-defined but could benefit from richer error guidance (e.g., when a commit fails due to merge conflicts). Build tools lack output schema documentation. Screenshot tool is well-described but could specify output image dimensions and color space. Overall, the server demonstrates solid fundamentals but misses some production-grade refinements around output contracts and error recovery patterns.
Build, install, and launch an iOS app on a simulator in one call. Runs build, settings extraction, simulator boot, and Simulator.app in parallel for maximum speed. Equivalent to Xcode's Cmd+R. Project, scheme, and simulator are auto-detected if omitted.
Build an iOS app for simulator. Uses xcodebuild with optimized flags. Project, scheme, and simulator are auto-detected if omitted.
Clean Xcode build artifacts for a project/scheme. Project and scheme are auto-detected if omitted.
Find Xcode projects and workspaces in a directory.
List, create, or switch git branches.
Create a git commit with staged changes.
Missing output schema documentation for build tools (build_sim, build_run_sim, clean, discover_projects, list_schemes). LLMs cannot determine what fields to expect in responses, forcing them to guess at structure and risk failed downstream chaining.
Console tools (launch_app_console, read_app_console, stop_app_console) lack documented output schemas. Unclear what fields read_app_console returns or how console output is structured. stop_app_console returns no description of what happens on success.
Parameter descriptions lack format constraints. E.g., 'timeout_ms' in run_plan lacks min/max bounds; 'quality' in screenshot lacks enum alternatives; 'configuration' in build tools lacks enum (Debug|Release). Free-form descriptions invite invalid LLM inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 72 | 2026-07-28+ | v2 |
Show git diff for a repository. Optionally diff staged changes or specific files.
Show recent git log entries.
Show git status (porcelain format) for a repository.
Launch an app with console output capture. Captures all print() and NSLog output. Bundle ID is auto-detected from last build if omitted.
List available schemes for a project. Project is auto-detected if omitted.
Read captured console output (stdout + stderr) from a running app launched with launch_app_console.
Execute a structured test plan deterministically. Runs find/click/verify/screenshot steps internally without LLM round-trips. Returns a compact execution report. 50x faster than individual tool calls for sequential UI interactions. Adaptive steps (judge, handle_unexpected) use Pause & Resume: - Plan pauses and returns the question + optional screenshot - You (the LLM) decide: "accept", "dismiss", "skip", "abort", or "continue" - Call run_plan_decide with session_id + decision to resume Set operator: true to enable. Omit or set false to skip operator steps.
Provide a decision for a paused plan. Called after run_plan returns status 'decision_needed' with a session_id. The plan resumes from where it paused.
Take a screenshot of a booted simulator. Returns the image inline. Use quality: 'compact' for UI verification (75% smaller, saves context window). Use 'full' for visual regression or pixel-perfect comparison.
Stop the app console capture and terminate the app.
Error handling lacks recovery guidance. Tools return generic errors without suggesting next steps. E.g., if build_sim fails, what should the LLM do? Clean? Check project structure? Retry? Each error should guide the agent's recovery path.
run_plan tool lacks clarity on session management and timeout semantics. What happens to a paused session if the operator never calls run_plan_decide? How long are sessions persisted? Can multiple sessions run concurrently? Unclear state management invites bugs.
git_commit and git_branch tools accept free-form 'message' and 'name' strings but lack validation rules (length limits, character restrictions, conflict detection). An LLM could pass a 10,000-character message or a branch name with illegal characters.
stop_app_console tool has minimal description (9 words) and no documented side effects. Does it preserve logs? Does it kill the app process? Can it be called safely multiple times? Ambiguity around idempotency and state mutation.