/plugin marketplace add conorluddy/xclaude-plugin
Modular iOS development automation for Claude Code
Build, test, and automate iOS apps through natural conversation with Claude. 8 workflow-specific MCP servers with 24 tools across Xcode, Simulator, and IDB.
Enable only what you need. Each MCP is purpose-built for specific workflows, keeping your context window lean. Plus, our tools intelligently encapsulate Xcode output (errors, test results, build logs) so Claude processes structured JSON instead of raw 50+ line logs—saving significant tokens and enabling faster feedback loops.
/plugin marketplace add conorluddy/xclaude-plugin
/plugin install xclaude-plugin
/plugin marketplace add /path/to/xclaude-plugin
/plugin install xclaude-plugin
Just installed? Enable xc-build and xc-launch for rapid development:
1. In Claude settings, enable "xc-build" and "xc-launch" MCPs
2. Ask Claude: "Build and run MyApp on iPhone 15"
3. Done! ✨
That's it. xc-build + xc-launch gives you a composable development loop: build with xc-build, then install & launch with xc-launch. Claude orchestrates the two-step workflow. If you need other workflows (testing, setup, UI automation), see Choosing the Right MCP below.
If you're upgrading from an earlier version, note these breaking changes:
xc-build-and-launch → xc-launchWhat changed:
- Server renamed from xc-build-and-launch to xc-launch for clarity
- Removed: xcode_build_and_launch monolithic tool (with skip_build flag), plus xcode_build, xcode_clean, xcode_list (moved to xc-build)
- Now contains: Only simulator_install_app and simulator_launch_app
- Philosophy: Use xc-build + xc-launch together for development loop
Why: The monolithic xcode_build_and_launch tool coupled build, install, and launch into a single operation. The new architecture separates build concerns (xc-build) from simulator lifecycle (xc-launch), enabling:
- Better error recovery (retry individual steps)
- Clearer mental model (build → install → launch)
- No skip_build code smell
- Follows Single Responsibility Principle
Action required:
1. Update your .mcp.json configuration:
diff
- "xc-build-and-launch": {
- "command": "node",
- "args": ["${CLAUDE_PLUGIN_ROOT}/mcp-servers/xc-build-and-launch/dist/index.js"]
+ "xc-launch": {
+ "command": "node",
+ "args": ["${CLAUDE_PLUGIN_ROOT}/mcp-servers/xc-launch/dist/index.js"]
2. In Claude settings, enable "xc-launch" instead of "xc-build-and-launch"
Previous versions:
- v0.3.0: xc-run → xc-build-and-launch
- v0.3.0: xc-compile → xc-build, xc-hybrid → xc-all
See .mcp.json.example for the current configuration.
IMPORTANT: Enable ONE MCP at a time for optimal token efficiency. Choose based on your current workflow:
☐ xc-build # Build validation, errors, clean? (~600 tokens)
☐ xc-launch # Simulator lifecycle: install + launch? (~400 tokens)
☐ xc-interact # Testing UI with app already built? (~900 tokens)
☐ xc-ai-assist # AI-driven UI iteration? (~1400 tokens)
☐ xc-setup # First time setup? (~800 tokens)
☐ xc-testing # Running test suites? (~1200 tokens)
☐ xc-meta # Maintenance tasks? (~700 tokens)
☐ xc-all # Complex workflow needing everything? (~3500 tokens)
💡 Tip: Enable xc-build + xc-launch together for development loop (~1000 tokens total)
Scenario 1: Build and fix errors
Enable: xc-build (~600 tokens)
"Build the project and show me the errors"
→ Uses xcode_build with automatic error extraction
→ Returns up to 10 errors for quick fixes
→ 87% less tokens than old architecture!
Scenario 2: Rapid development - build and run
Enable: xc-build + xc-launch (~1000 tokens)
"Build and run MyApp on iPhone 15"
→ Claude orchestrates: build (xc-build) → install & launch (xc-launch)
→ Composable two-server workflow
→ Better error recovery (retry individual steps)
→ Perfect for iterative development
Scenario 3: Testing UI flows (app already built)
Enable: xc-interact (~900 tokens)
"Tap the Login button, then check if the profile screen appears"
→ Queries accessibility tree (3-4x faster than screenshots)
→ Taps elements by coordinates
→ Validates UI state without rebuilding
Scenario 4: AI-driven UI iteration
Enable: xc-ai-assist (~1400 tokens)
"Update the button color to blue, rebuild, and show me a screenshot"
→ Modifies code, builds, captures screenshot
→ Complete workflow in one MCP
→ Includes visual feedback (screenshots)
┌─────────────────────────────────────────────────────┐
│ Shared Tool Library (24 tools) │
│ ├─ Xcode (6): build, build+run, clean, test, list, version │
│ ├─ Simulator (12): boot, install, screenshot, etc.│
│ └─ IDB (6): describe, tap, input, gesture, etc. │
└─────────────────────────────────────────────────────┘
↓ Tools imported by MCP servers ↓
┌─────────────────────────────────────────────────────┐
│ 8 Workflow-Specific MCP Servers │
│ ├─ xc-build: 3 tools (~600 tokens) │
│ ├─ xc-launch: 2 tools (~400 tokens) │
│ ├─ xc-interact: 6 tools (~900 tokens) │
│ ├─ xc-ai-assist: 7 tools (~1400 tokens) │
│ ├─ xc-setup: 5 tools (~800 tokens) │
│ ├─ xc-testing: 6 tools (~1200 tokens) │
│ ├─ xc-meta: 6 tools (~700 tokens) │
│ └─ xc-all: 24 tools (~3500 tokens) │
└─────────────────────────────────────────────────────┘
For Users:
For Developers:
any usage)| MCP | Tools | Token Cost | Use When |
|---|---|---|---|
| xc-build | 3 | ~600 | Build validation with clean/scheme discovery |
| xc-launch | 2 | ~400 | Simulator lifecycle: install and launch app |
| xc-interact | 6 | ~900 | Testing UI flows with app already built |
| MCP | Tools | Token Cost | Use When |
|---|---|---|---|
| xc-ai-assist | 7 | ~1400 | AI UI iteration with visual feedback |
| xc-setup | 5 | ~800 | Initial setup, environment validation |
| xc-testing | 6 | ~1200 | Running test suites + UI automation |
| xc-meta | 6 | ~700 | Maintenance, housekeeping, environment checks |
| MCP | Tools | Token Cost | Use When |
|---|---|---|---|
| xc-all | 23 | ~3500 | Complex workflows needing everything |
Pro tip: Don't enable multiple MCPs simultaneously - tool duplication will increase token usage! Use xc-all instead for multi-workflow sessions.
Quick reference to find which MCP has the tools you need:
| Tool | xc-build | xc-launch | xc-interact | xc-ai-assist | xc-setup | xc-testing | xc-meta | xc-all |
|---|---|---|---|---|---|---|---|---|
xcode_build |
✅ | ✅ | ✅ | |||||
xcode_build_and_launch |
✅ | |||||||
xcode_clean |
✅ | ✅ | ✅ | |||||
xcode_test |
✅ | ✅ | ||||||
xcode_list |
✅ | ✅ | ✅ | |||||
xcode_version |
✅ | ✅ | ✅ |
| Tool | xc-build | xc-launch | xc-interact | xc-ai-assist | xc-setup | xc-testing | xc-meta | xc-all |
|---|---|---|---|---|---|---|---|---|
simulator_list |
✅ | ✅ | ||||||
simulator_boot |
✅ | ✅ | ||||||
simulator_shutdown |
✅ | ✅ | ||||||
simulator_create |
✅ | ✅ | ||||||
simulator_delete |
✅ | ✅ | ||||||
simulator_install_app |
✅ | ✅ | ||||||
simulator_launch_app |
✅ | ✅ | ||||||
simulator_terminate_app |
✅ | |||||||
simulator_screenshot |
✅ | ✅ | ✅ | |||||
simulator_openurl |
✅ | |||||||
simulator_get_app_container |
✅ | |||||||
simulator_health_check |
✅ | ✅ | ✅ |
| Tool | xc-build | xc-launch | xc-interact | xc-ai-assist | xc-setup | xc-testing | xc-meta | xc-all |
|---|---|---|---|---|---|---|---|---|
idb_describe |
✅ | ✅ | ✅ | ✅ | ||||
idb_tap |
✅ | ✅ | ✅ | ✅ | ||||
idb_input |
✅ | ✅ | ✅ | ✅ | ||||
idb_gesture |
✅ | ✅ | ✅ | |||||
idb_find_element |
✅ | ✅ | ✅ | |||||
idb_check_quality |
✅ | ✅ | ✅ |
xcode_build - Build with automatic error extractionxcode_build_and_launch - Build, install, and launch on simulatorxcode_clean - Clean build artifactsxcode_test - Run XCTest suitesxcode_list - List schemes/targetsxcode_version - Check Xcode installationsimulator_list - Enumerate simulatorssimulator_boot - Boot devicesimulator_shutdown - Shutdown devicesimulator_create - Create new simulatorsimulator_delete - Delete simulatorsimulator_install_app - Install appsimulator_launch_app - Launch appsimulator_terminate_app - Terminate appsimulator_screenshot - Capture screenshotsimulator_openurl - Open URL/deep linksimulator_get_app_container - Get app container pathsimulator_health_check - Validate environmentidb_describe - Query accessibility tree (accessibility-first!)idb_tap - Tap coordinatesidb_input - Type text or press keysidb_gesture - Swipes and hardware buttonsidb_find_element - Search by label (semantic)idb_check_quality - Assess accessibility data richnessAdd this section to your project's .claude/CLAUDE.md file. This guides Claude on when and why to use the xclaude-plugin tools instead of directly calling Xcode or shell commands:
```markdown
The xclaude-plugin provides 8 modular MCPs with 24 specialized iOS tools. Always prefer these over raw xcodebuild or shell commands for iOS development tasks. Here's why:
| Task | Direct Bash | xclaude-plugin | Why Plugin Wins |
|---|---|---|---|
| Build + get errors | xcodebuild -scheme Foo 2>&1 (50+ lines of parsing) |
xcode_build tool |
Auto-extracts up to 10 errors, structured JSON, 87% fewer tokens |
| Test suite execution | xcodebuild test + manual parsing |
xcode_test tool |
Parses resu |
$ claude mcp add xclaude-plugin \
-- python -m otcore.mcp_server <graph>