xcforge MCP server
2026년 10월 10일 커밋시뮬레이터와 실제 기기를 사용하여 AI agent가 iOS 애플리케이션을 빌드, 테스트, UI 자동화 및 진단할 수 있도록 지원합니다.
다른 이름 justinthevoid/xcforge, xcforge
- 스타
- 2
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 1.0.0
- 마지막 커밋
- 2026년 10월 10일
- 라이선스
- MIT
xcforge MCP란?
xcforge은(는) MCP server입니다. 시뮬레이터와 실제 기기를 사용하여 AI agent가 iOS 애플리케이션을 빌드, 테스트, UI 자동화 및 진단할 수 있도록 지원합니다.
프로젝트 README에서 생성된 요약
xcforge MCP server 정보
xcforge는 iOS 개발을 위한 종합적인 도구 모음을 제공하여 AI agent와 개발자가 애플리케이션을 빌드, 테스트 및 디버깅할 수 있도록 합니다. 104개의 도구를 갖춘 MCP server이자 19개의 명령 그룹을 가진 CLI로 작동합니다. 서버는 stdio JSON-RPC를 통해 작동하며 Claude Desktop, Cursor, VS Code, Windsurf, Zed와 같은 클라이언트에 통합할 수 있습니다. 외부 런타임 의존성 없이 macOS 13 이상에서 실행되는 단일 네이티브 바이너리입니다.
사용자는 scheme 빌드 및 시뮬레이터 실행부터 UI 자동화 및 시각적 회귀 테스트에 이르기까지 애플리케이션의 전체 라이프사이클을 관리할 수 있습니다. 이 시스템은 devicectl을 통해 시뮬레이터와 실제 기기를 모두 지원합니다. 변수 및 스택 트레이스 검사를 위한 대화형 LLDB 디버거, 노이즈를 줄이기 위한 토픽 필터링 로그 캡처, xcresult 번들로부터의 구조화된 테스트 결과 파싱과 같은 특화된 기능을 포함합니다. 개발자는 또한 진단 도구를 사용하여 근본 원인 분석을 위한 다단계 워크플로우를 자동화할 수 있습니다.
활용 사례
- 1자동화된 UI 테스트AI agent가 네이티브 accessibility 브릿지를 사용하여 요소를 찾고, 버튼을 탭하며, 시스템 알림을 처리할 수 있습니다.
- 2체계적인 버그 진단개발자는 체인형 진단 파이프라인을 사용하여 애플리케이션을 빌드, 실행하고 로그 및 스크린샷과 같은 증거를 수집하여 수정 사항을 검증할 수 있습니다.
- 3대화형 디버깅 세션agent가 실행 중인 프로세스에 연결하여 LLDB를 사용해 중단점을 설정하고 변수를 검사할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
구성
XCFORGE_WDA_DIR
| 이름 | 설명 | 유형 |
|---|---|---|
| XCFORGE_WDA_DIR | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능justinthevoid/xcforge is public and reachablegithub.com/justinthevoid/xcforge ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-10github.com/justinthevoid/xcforge ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기xcforge
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)
brew tap justinthevoid/tap && brew install xcforge
Claude Code (one-liner)
claude mcp add xcforge -- xcforge
This registers xcforge as an MCP server in your current project. Run it after installing via Homebrew.
From source
git clone https://github.com/justinthevoid/xcforge.git
cd xcforge && swift build -c release
cp .build/release/XCForgeCLI /usr/local/bin/xcforge
Uninstall
Homebrew
brew uninstall xcforge
brew untap justinthevoid/tap # optional: remove the tap
From source
rm /usr/local/bin/xcforge
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:
claude mcp remove xcforge
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):
{
"mcpServers": {
"xcforge": {
"command": "xcforge",
"args": [],
"type": "stdio"
}
}
}
Claude Desktop
File: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"xcforge": {
"command": "/opt/homebrew/bin/xcforge",
"args": []
}
}
}
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)
{
"mcpServers": {
"xcforge": {
"command": "/opt/homebrew/bin/xcforge",
"args": []
}
}
}
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
{
"servers": {
"xcforge": {
"command": "xcforge",
"args": [],
"type": "stdio"
}
}
}
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
{
"mcpServers": {
"xcforge": {
"command": "/opt/homebrew/bin/xcforge",
"args": []
}
}
}
Note: Full path recommended. Restart Windsurf after editing.
Zed
File: ~/.config/zed/settings.json (or .zed/settings.json per-project)
{
"context_servers": {
"xcforge": {
"command": {
"path": "/opt/homebrew/bin/xcforge",
"args": []
},
"settings": {}
}
}
}
Note: Zed uses
"context_servers"with a nested"command.path"— different from every other client.
Config quick reference
| Client | Config key | File location | Needs absolute path? |
|---|---|---|---|
| Claude Code | mcpServers |
.mcp.json |
No |
| Claude Desktop | mcpServers |
~/Library/Application Support/Claude/claude_desktop_config.json |
Yes |
| Cursor | mcpServers |
.cursor/mcp.json |
Yes |
| VS Code | servers |
.vscode/mcp.json |
No |
| Windsurf | mcpServers |
~/.codeium/windsurf/mcp_config.json |
Yes |
| Zed | context_servers |
~/.config/zed/settings.json |
Yes |
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:
xcforge skill install # this repo: .claude/skills/xcforge (commit it to share with the team)
xcforge skill install --global # every project: ~/.claude/skills/xcforge
xcforge skill install --dir <skills-dir> # any other agent's skills directory
xcforge skill status # where it's installed and whether it matches this xcforge
xcforge skill show references/test-tools.md # print one file without installing
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
xcforge # MCP server (stdio JSON-RPC, 104 tools)
xcforge build --scheme MyApp # CLI mode (19 command groups)
Every tool available over MCP has a matching CLI command. Every CLI command supports --json.
Tools Overview
| Category | Count | Highlights |
|---|---|---|
| Build | 6 | build_sim, build_compile (fast compile-only), build_run_sim, clean, project/scheme discovery |
| Test | 7 | test_sim with xcresult parsing, test_failures, test_coverage, list_tests, test_plan_inspect, agent output mode, known-failures gating |
| Simulator | 18 | Full lifecycle + video recording, location simulation, dark mode toggle, status bar override, info |
| Physical Devices | 10 | Via devicectl — list, install, launch (deep links, env), screenshot, WebDriverAgent on device |
| UI Automation | 20 | WebDriverAgent + native AX bridge — find, tap (point or pixel), swipe, drag, type, alerts |
| Screenshots | 3 | Framebuffer capture (0.3s), point-space coordinate alignment, optional grid overlay |
| Visual Regression | 3 | Pixel-diff baselines, multi-device checks (Dark Mode, Landscape, iPad), bless workflow |
| Logs | 4 | 4-layer filtered capture, 8 topic categories, regex wait |
| Console | 3 | stdout/stderr capture for launched apps |
| SPM | 5 | Resolve, update, show deps, reset, clean |
| Accessibility | 5 | Audit labels, traits, VoiceOver order, contrast |
| Git | 5 | Status, diff, log, commit, branch |
| LLDB Debugger | 8 | Attach, breakpoints, inspect variables, backtrace, step/continue, arbitrary commands |
| Diagnosis | 10 | Multi-step workflows: build, run, inspect, capture evidence, compare, verify |
| Plan Execution | 2 | Scripted multi-step automation with assertions |
| Session | 3 | Persistent defaults, .xcforge.yaml repo config, session profiles |
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
xcforge init # Scaffold a committed .xcforge.yaml (repo defaults)
xcforge build # Build (auto-detects project, scheme, sim)
xcforge build compile --scheme MyApp # Fast compile-only check (~5s)
xcforge build --scheme MyApp --simulator "iPhone 16 Pro"
xcforge test --scheme MyApp --json # Run tests, JSON output
xcforge test --for agent # Agent-optimized slim JSON
xcforge test --gate # Subtract known-failures.yaml
xcforge test rerun-failed # Replay last run's failures
xcforge test plan inspect --plan AllTests # Inspect .xctestplan
xcforge build-test --env BLESS_BASELINE=1 # Inject env var into test process
xcforge test failures --xcresult /path/to.xcresult
xcforge test coverage --min-coverage 80
xcforge bless --baseline login --tests "UITests/LoginTests" # Baseline+test+diff in one call
xcforge sim list # List simulators
xcforge sim boot "iPhone 16 Pro"
xcforge sim info # Booted simulator screen size and scale
xcforge ui find --aid "loginButton" # Find by accessibility ID
xcforge ui tap --element el-0 # Tap element at point coordinates
xcforge ui tap-pixel --x 750 --y 1334 # Tap at pixel coordinates
xcforge screenshot # Screenshot to stdout
xcforge screenshot --grid --output /tmp/x.png # Screenshot with point-coordinate grid
xcforge pose Settings # Build, install, launch to a screen
xcforge log start # Start log capture
xcforge log read --include network # Read with topic filter
xcforge spm resolve # Resolve packages
xcforge device list # Connected physical devices
xcforge debug attach --bundle-id com.example.App # Attach debugger
xcforge debug breakpoint set --bundle-id com.example.App --file ViewController.swift --line 42
xcforge debug inspect --bundle-id com.example.App --expression "self.count"
xcforge debug backtrace --bundle-id com.example.App # Show stack trace
xcforge debug continue --bundle-id com.example.App --mode step-over
xcforge diagnose start --scheme MyApp # Start diagnosis session
Alternatives
There are several iOS-focused MCP servers worth knowing about:
| Server | Stars | Scope | Build | Test | UI Automation | Screenshots | Visual Regression | Accessibility | Physical Devices | SPM | Git | Logs |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| xcforge | — | 104 tools | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| XcodeBuildMCP | ~5k | ~15 tools | Yes | Yes | Partial | No | No | No | No | No | No | No |
| ios-simulator-mcp | ~1.8k | ~10 tools | No | No | Yes | Yes | No | No | No | No | No | No |
| xcode-mcp-server | ~370 | ~8 tools | Partial | No | No | No | No | No | No | No | No | No |
| iosef | <10 | ~5 tools | No | No | Yes | No | No | No | No | No | No | No |
| Appium MCP | <50 | ~10 tools | No | No | Yes | Yes | No | No | Partial | No | No | No |
- 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:
git clone https://github.com/appium/WebDriverAgent.git xcforgeWDA
# Copy project with xcforge name and remap bundle ID
cp -r xcforgeWDA/WebDriverAgent.xcodeproj xcforgeWDA/xcforgeWDA.xcodeproj
sed -i '' 's/com\.facebook\.WebDriverAgentRunner/com.xcforge.wda.runner/g' \
xcforgeWDA/xcforgeWDA.xcodeproj/project.pbxproj
# Add xcforgeWDARunner scheme
cp xcforgeWDA/xcforgeWDA.xcodeproj/xcshareddata/xcschemes/WebDriverAgentRunner.xcscheme \
xcforgeWDA/xcforgeWDA.xcodeproj/xcshareddata/xcschemes/xcforgeWDARunner.xcscheme
sed -i '' 's/WebDriverAgent\.xcodeproj/xcforgeWDA.xcodeproj/g' \
xcforgeWDA/xcforgeWDA.xcodeproj/xcshareddata/xcschemes/xcforgeWDARunner.xcscheme
Then add XCFORGE_WDA_DIR to your MCP config:
{
"mcpServers": {
"xcforge": {
"command": "xcforge",
"env": {
"XCFORGE_WDA_DIR": "/path/to/xcforgeWDA"
}
}
}
}
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.
cd Web
bun install
bun run typecheck
bun run lint
bun run validate
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:
cd Web
bun run doctor
Remediation steps are documented in Web/README.md.
Support
If xcforge saves you time, consider supporting development:
License
MIT — see LICENSE.
Contributing
Issues and PRs welcome. See CONTRIBUTING.md.
xcforge MCP 질문
xcforge를 어떻게 설치하나요?
Homebrew를 통해 'brew tap justinthevoid/tap && brew install xcforge' 명령어를 사용하거나, Swift를 사용하여 소스에서 직접 빌드할 수 있습니다.
xcforge에 외부 런타임이 필요한가요?
아니요, 외부 런타임 의존성이 없는 단일 네이티브 바이너리입니다.
Appium 없이 xcforge로 UI 자동화를 할 수 있나요?
네, xcforge는 WebDriverAgent와 직접 통신하며 UI 자동화를 위해 네이티브 Accessibility API 브릿지를 사용합니다.
xcforge는 테스트 결과를 어떻게 처리하나요?
raw stdout/stderr 대신 .xcresult 번들에서 구조화된 데이터를 파싱하여 통과/실패 횟수와 실패 스크린샷을 제공합니다.