
xcforge - iOS MCP Server & CLI
io.github.justinthevoidPublished by GitHub account justinthevoidv1.0.0Updated Oct 27, 2026
95 MCP tools for iOS — build, test, simulate, automate UI, capture, and diagnose.
Overview
Local MCP server and CLI that gives an AI assistant over 100 tools to build, test, automate and debug iOS apps on simulators and physical devices.
- What you can do
- Build and clean Xcode projects, discover schemes, and run compile-only checks
- Run tests on simulators with parsed xcresult results, failures, coverage and test plans
- Manage simulators and physical devices: boot, install, launch, screenshots, video, location
- Automate UI through WebDriverAgent and an accessibility bridge: find, tap, swipe, type, alerts
- Capture and filter logs and console output, and run visual regression diffs against baselines
- Attach LLDB to debug: breakpoints, variables, backtraces, stepping; plus SPM, Git and accessibility audits
- When to use it
- Useful when an assistant should drive an iOS development loop end to end — building, testing, reproducing UI flows, capturing screenshots and logs, and debugging — without switching between Xcode, simctl and separate automation tools. It is iOS-only, so it does not help with Android, watchOS or visionOS work.
- Requirements
- Runs as a local binary on macOS 13+ with Xcode 15+ installed; source builds also need Swift 6.0+. Install via Homebrew or build from source, then register the command in the MCP client config (some clients need the absolute binary path). UI automation additionally needs a WebDriverAgent project, pointed to by the XCFORGE_WDA_DIR environment variable, and physical-device automation needs a signing team and UI Automation enabled on the device.
Installation
In SourceWeft
- Open xcforge - iOS MCP Server & CLI in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
xcforge
[License: MIT] [Platform] [Swift 6.0] [MCP] [Homebrew] [GitHub release] [PRs Welcome]
An MCP server and CLI for iOS development — build, test, automate, and diagnose from any AI agent or terminal.
104 MCP tools. 19 CLI command groups. Single native binary (~8 MB stripped, ~18 MB with debug symbols). Zero external runtime dependencies.
Install
Homebrew (recommended)
Claude Code (one-liner)
This registers xcforge as an MCP server in your current project. Run it after installing via Homebrew.
From source
Uninstall
Homebrew
From source
Remove MCP configuration
After uninstalling the binary, remove the "xcforge" entry from your MCP client config file (see Configure for file locations).
For Claude Code:
Configure
Add xcforge to your MCP client. Each client has a different config format and file location.
Claude Code
The fastest way is the CLI command shown above under Install. To configure manually, add to .mcp.json in your project root (or ~/.claude/.mcp.json for global):
Claude Desktop
File: ~/Library/Application Support/Claude/claude_desktop_config.json
Note: Claude Desktop does not inherit your shell PATH. Use the full Homebrew path —
/opt/homebrew/bin/xcforgeon Apple Silicon,/usr/local/bin/xcforgeon Intel.
Cursor
File: .cursor/mcp.json in your project root (or ~/.cursor/mcp.json for global)
Note: Same PATH caveat as Claude Desktop — use the absolute path. Restart Cursor after changes.
VS Code (GitHub Copilot)
File: .vscode/mcp.json in your project root
Note: VS Code uses
"servers"not"mcpServers". Requires the GitHub Copilot extension with agent mode enabled. VS Code typically resolves PATH from your shell, so the bare command works.
Windsurf
File: ~/.codeium/windsurf/mcp_config.json
Note: Full path recommended. Restart Windsurf after editing.
Zed
File: ~/.config/zed/settings.json (or .zed/settings.json per-project)
Note: Zed uses
"context_servers"with a nested"command.path"— different from every other client.
Config quick reference
Claude Code Skill
xcforge ships an agent skill: the tool reference an agent loads when it works on iOS tasks. The binary carries it, so installing it needs nothing else:
Re-run xcforge skill install after upgrading xcforge to refresh the copy; only changed files are rewritten. It won't overwrite an xcforge skill directory it didn't create unless you pass --force. xcforge skill uninstall removes it.
Once installed, Claude will automatically load the right reference files when you use xcforge tools — exact parameters, return values, and usage patterns for each category (build, test, simulator, UI automation, logs, LLDB, diagnosis, and more).
Two Modes, Same Tools
Every tool available over MCP has a matching CLI command. Every CLI command supports --json.
Tools Overview
Key Capabilities
Structured Test Results
Test output is parsed from .xcresult bundles — the structured format Xcode generates internally — not from raw xcodebuild stdout/stderr.
A single test_sim call returns: pass/fail counts, failure messages with source location, exported failure screenshots, and the xcresult path for deeper inspection via test_failures or test_coverage.
Fast Screenshots
The screenshot tool reads the simulator framebuffer via CoreSimulator's IOSurface API, falling back to ScreenCaptureKit, then simctl. Typical latency is ~300ms.
UI Automation Without Appium
xcforge communicates directly with WebDriverAgent over HTTP and supplements it with a native Accessibility API bridge (AXPBridge). This means:
find_elementwithscroll: trueauto-scrolls using 3 fallback strategieshandle_alertsearches across SpringBoard, ContactsUI, and the active app —accept_allclears multiple permission dialogs in one calldrag_and_dropworks with element IDs, not just coordinatesget_sourcereturns the full view hierarchy in ~20ms
Topic-Filtered Logs
start_log_capture streams os_log through 4 filter layers:
- Noise exclusion — strips 15 known noisy processes at the stream level
- Capture modes —
smart(broad + topic-ready),app(tight, auto-detected bundle),verbose - Topic filtering —
read_logsclassifies lines into 8 topics (app, crashes, network, lifecycle, springboard, widgets, background, system) and shows only app + crashes by default - Deduplication — collapses repeated lines
The response includes a topic menu with counts, so the agent can pull in specific topics on demand without re-querying.
Interactive LLDB Debugger
8 tools for attaching LLDB to running simulator processes, setting breakpoints, inspecting variables, viewing stack traces, and stepping through code. Sessions persist for 30 minutes, so you can attach once and run multiple debugging operations. CLI commands are one-shot (attach → operation → detach). Includes:
- Session management:
lldb_attach(by bundle ID or PID),lldb_detach - Breakpoints: set by file+line or function name, remove by ID
- Inspection: evaluate expressions at the current frame, view stack traces
- Execution control: continue, step over, step into, step out (with 10-second timeout)
- Raw passthrough: run arbitrary LLDB commands
Use alongside logs and screenshots for systematic root-cause analysis.
Diagnosis Workflows
10 tools (off by default: turn them on with XCFORGE_TOOL_GROUPS=+diagnose or tool_groups) that chain together into structured diagnostic pipelines — start a session, build, launch, capture runtime signals, collect evidence (screenshots, logs, accessibility state), compare against previous runs, and verify fixes. Designed for agents to systematically debug issues across multiple iterations.
Physical Device Support
Tools wrapping Apple's devicectl for real devices: list connected devices, install, launch (with deep links and environment variables) and terminate apps, and take screenshots. xcforge wda start --device <udid> --team <TEAM> (MCP wda_start) builds, signs and starts WebDriverAgent on the device so the UI automation tools work there too; see device-tools.md.
CLI Examples
Alternatives
There are several iOS-focused MCP servers worth knowing about:
- XcodeBuildMCP — The most popular iOS MCP server. Backed by Sentry. Covers build, test, and simulator management well. If you only need build/run workflows, it's a solid choice.
- ios-simulator-mcp — Focused on simulator UI interaction — screenshots, taps, swipes, accessibility tree. Good if you only need simulator automation.
- xcode-mcp-server — Early MCP server for Xcode project management. Basic integration — no simulator automation, testing, or device support.
- iosef — Agent-optimized simulator CLI with clean ergonomics. Narrow scope but thoughtful design. Swift native.
- Appium MCP — Cross-platform (iOS + Android) via the Appium ecosystem. Requires Node.js + Java + Appium server — heavier dependency chain.
Where xcforge fits: It combines fast compile checks, build, test, pixel-accurate UI automation, screenshot grids, screen-targeted launch, log analysis, visual regression, device support, SPM, accessibility auditing, and multi-step diagnosis in a single zero-dependency binary. The trade-off is iOS-only — no Android, watchOS, or visionOS.
UI Automation Setup
UI automation tools require a WebDriverAgent (WDA) backend running on the simulator. xcforge manages the WDA connection automatically — you just need to point it at a WDA project.
xcforge tries two backends in order:
- xcforgeWDA (preferred) — xcforge's own WDA fork (
com.xcforge.wda.runner). Auto-built and deployed whenXCFORGE_WDA_DIRis set. - Original WebDriverAgent (fallback) — Facebook/Appium's WDA. Picked up automatically if WDA is already running on port 8100.
Quick setup
Clone appium/WebDriverAgent, rename the project and scheme for xcforge, then set XCFORGE_WDA_DIR:
Then add XCFORGE_WDA_DIR to your MCP config:
xcforge builds and deploys WDA automatically on the first UI tool call on a simulator (~30–60s on first run, instant thereafter). For a physical device run xcforge wda start --device <udid> --team <TEAM> (MCP wda_start) first, with the device unlocked and Settings > Developer > Enable UI Automation on. See the full UI Automation Setup guide for alternative configurations, custom ports, and troubleshooting.
Requirements
- macOS 13+
- Xcode 15+
- Swift 6.0+ (source builds only)
- WebDriverAgent (UI automation only — see UI Automation Setup)
Web Baseline (Story 1.1)
The Web workspace is isolated under Web/ and uses Astro Starlight plus Svelte with Bun-only package/script usage and Biome-only lint/format checks.
Local route assumptions after bun run dev:
- Marketing route:
http://localhost:4321/ - Docs route:
http://localhost:4321/docs - Docs depth route:
http://localhost:4321/docs/getting-started
If setup fails, run:
Remediation steps are documented in Web/README.md.
Support
If xcforge saves you time, consider supporting development:
[Buy Me a Coffee] [Ko-fi] [GitHub Sponsors]
License
MIT — see LICENSE.
Contributing
Issues and PRs welcome. See CONTRIBUTING.md.
Source: README.md at commit 513fcdb
Tools
0Version history
1- v1.0.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts