Skip to main content
Glama
cox30523

xClaude Plugin

by cox30523

Note: This was built back when MCPs used to take up a bunch of context even when unused. The idea was that you could quickly toggle modular plugins on and off as you needed them. Since then MCP has evolved to use very little context when not in use - so I'm not maintaining this any more. You can use my xc-mcp or ios-simulator-skill repos instead to do the same thing.

xClaude Plugin

/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.

Features

🎯 Modular Architecture

  • 8 workflow-specific MCP servers (600-3500 tokens each)

  • Enable only what you need - Ultra-minimal to full-featured

  • 23 shared tools across Xcode, Simulator, and IDB

  • Single source of truth - tools defined once, imported by MCPs

πŸ”₯ Surgical MCPs (Ultra-Focused)

  • xc-build (~600 tokens) - Build validation, errors, clean, list schemes

  • xc-launch (~400 tokens) - Simulator app lifecycle: install and launch

  • xc-interact (~900 tokens) - Pure UI interaction, no build

πŸ“¦ Core Workflow MCPs

  • xc-ai-assist (~1400 tokens) - Build + UI automation + screenshots

  • xc-setup (~800 tokens) - Environment configuration and validation

  • xc-testing (~1200 tokens) - Test execution + UI flows

  • xc-meta (~700 tokens) - Project maintenance and housekeeping

πŸš€ Full Access

  • xc-all (~3500 tokens) - All 24 tools for complex workflows

πŸ“š 8 Procedural Skills (Loaded On-Demand)

  • xcode-workflows - Build system guidance and result analysis

  • simulator-workflows - Device and app lifecycle patterns

  • ui-automation-workflows - Accessibility-first automation

  • accessibility-testing - WCAG compliance and quality checks

  • ios-testing-patterns - Test execution and flaky test detection

  • crash-debugging - Crash log analysis and symbolication

  • performance-profiling - Instruments integration

  • state-management - Cache and configuration management

Related MCP server: Xcode-Studio-MCP

Installation

/plugin marketplace add conorluddy/xclaude-plugin
/plugin install xclaude-plugin

From Local Development

/plugin marketplace add /path/to/xclaude-plugin
/plugin install xclaude-plugin

First 60 Seconds

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.

Requirements

  • macOS 13.0+ or Linux

  • Xcode 15.0+ (macOS only, for iOS development)

  • Node.js 18+

  • Optional: IDB (Facebook iOS Development Bridge) for advanced UI automation

Migration Guide (v0.4.0)

If you're upgrading from an earlier version, note these breaking changes:

Renamed Server: xc-build-and-launch β†’ xc-launch

What 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:

    - "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.

Choosing the Right MCP

Enable the Right MCP for Your Task

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)

Example Workflows

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)

Architecture

Modular MCP Design

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  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)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Benefits

For Users:

  • Enable only what you need (300-3500 tokens)

  • Clear mental model (workflow-based naming)

  • No tool duplication confusion

  • Easy to toggle on/off in Claude settings

For Developers:

  • Single source of truth (shared tools)

  • Easy testing (isolated functions)

  • Simple maintenance (update once)

  • Type-safe throughout (zero any usage)

MCP Server Reference

πŸ”₯ Surgical MCPs

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

πŸ“¦ Core Workflow MCPs

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

πŸš€ Full Access

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.

Cheat Sheet - Which Tools Are in Which MCP?

Quick reference to find which MCP has the tools you need:

Xcode Tools

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

βœ…

βœ…

βœ…

Simulator Tools

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

βœ…

βœ…

βœ…

IDB Tools

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

βœ…

βœ…

βœ…

Tool Library (24 Total)

Xcode Tools (6)

  • xcode_build - Build with automatic error extraction

  • xcode_build_and_launch - Build, install, and launch on simulator

  • xcode_clean - Clean build artifacts

  • xcode_test - Run XCTest suites

  • xcode_list - List schemes/targets

  • xcode_version - Check Xcode installation

Simulator Tools (12)

  • simulator_list - Enumerate simulators

  • simulator_boot - Boot device

  • simulator_shutdown - Shutdown device

  • simulator_create - Create new simulator

  • simulator_delete - Delete simulator

  • simulator_install_app - Install app

  • simulator_launch_app - Launch app

  • simulator_terminate_app - Terminate app

  • simulator_screenshot - Capture screenshot

  • simulator_openurl - Open URL/deep link

  • simulator_get_app_container - Get app container path

  • simulator_health_check - Validate environment

IDB Tools (6)

  • idb_describe - Query accessibility tree (accessibility-first!)

  • idb_tap - Tap coordinates

  • idb_input - Type text or press keys

  • idb_gesture - Swipes and hardware buttons

  • idb_find_element - Search by label (semantic)

  • idb_check_quality - Assess accessibility data richness

Configuring Your Project

Add 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:

## xclaude-plugin: Why and When to Use These Tools

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:

### Why These Tools Trump Raw Commands

| 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 results, reports failures, timing, code coverage                   |
| Simulator screenshot | `xcrun simctl io booted screenshot /tmp/x.png` + file handling | `simulator_screenshot` tool      | Auto-saves, encoded output, accessible in response                        |
| UI automation        | Manual coordinate finding + shell taps                         | `idb_describe` + `idb_tap` tools | Queries accessibility tree (120ms), semantic element finding, 3-4x faster |
| App installation     | `xcrun simctl install booted App.app`                          | `simulator_install_app` tool     | Builds, finds app, installs, validatesβ€”one command                        |

### When to Use Each MCP

**Use `xc-build`** (~600 tokens) when:

- Building and fixing errors
- Need to clean build artifacts
- Discovering schemes/targets in project
- Build validation and configuration

**Use `xc-launch`** (~400 tokens) when:

- Installing and launching an app on the simulator

**Use `xc-interact`** (~900 tokens) when:

- Testing UI flows with app already built
- Automating screen validation without code changes
- Need accessibility-first element querying

**Use `xc-ai-assist`** (~1400 tokens) when:

- Iterating on UI with live feedback (code change β†’ screenshot)
- Need visual validation of changes
- Combining code modification with testing

**Use `xc-testing`** (~1200 tokens) when:

- Running test suites and analyzing results
- Need both unit tests and UI automation
- Debugging test failures

**Use `xc-setup`** (~800 tokens) when:

- First-time environment validation
- Checking Xcode/simulator health
- Discovering project structure (schemes, targets)

**Use `xc-meta`** (~700 tokens) when:

- Maintenance tasks (clearing derived data, managing simulators)
- Non-coding iOS project operations
- Environment housekeeping

**Use `xc-all`** (~3500 tokens) when:

- Complex workflows requiring multiple tool categories
- Don't know which single MCP fits the task
- Need flexibility to pivot between workflows

### Critical: Prefer Plugin Tools Over Bash

When you encounter a task that could use either approach, **always choose the plugin tool**.

**Don't do this:**


# Manual build parsing
> `xcodebuild -scheme MyApp 2>&1 | grep -A5 "error:" | sed ...`


**Do this instead:** Use the `xcode_build` tool from `xc-build` MCP.

---

**Don't do this:**


# Manual screenshot saving
> `xcrun simctl io booted screenshot /tmp/screenshot.png`
> `cat /tmp/screenshot.png | base64`


**Do this instead:** Use the `simulator_screenshot` tool from `xc-interact` MCP.

---

**Don't do this:**


# Finding UI elements by trial and error
> `xcrun simctl spawn booted launchctl list | grep bundleid`


**Do this instead:** Use `idb_describe` tool to query accessibility tree, then `idb_tap` to interact.

### When Bash IS Still Appropriate

Use Bash for tasks outside iOS development:

- File operations: `mkdir`, `cp`, `rm`, `ls`
- Version control: `git status`, `git diff`, `git commit`
- General scripting: `jq`, `sed`, `awk`
- Environment setup: `npm install`, `brew install`

**Never use Bash for iOS-specific tasks** when a plugin tool exists.

Simulator Configuration

xclaude-plugin automatically tracks your simulator usage and supports configuration files for default simulators.

Config File Locations

Project-level (recommended for team consistency):

# .xcplugin in your project root
{
  "defaultSimulator": "platform=iOS Simulator,name=iPhone 15",
  "maxRecentHistory": 10
}

User-level (personal defaults across all projects):

# ~/.xcplugin/config.json
{
  "defaultSimulator": "platform=iOS Simulator,name=iPhone 15 Pro",
  "maxRecentHistory": 10
}

Precedence: Project config overrides user config.

How It Works

  1. Auto-resolution: Partial destinations like "platform=iOS Simulator,name=iPhone 15" automatically resolve to the latest OS version available

  2. Usage tracking: Every build/test automatically tracks which simulators you use

  3. Smart defaults: When no config exists, the plugin remembers your most recent simulator

Destination Format

The xcode_build and xcode_test tools accept three destination formats:

# 1. Auto-resolve (recommended) - finds latest OS automatically
"platform=iOS Simulator,name=iPhone 15"

# 2. Explicit - specify exact OS version
"platform=iOS Simulator,name=iPhone 15,OS=18.0"

# 3. UDID - direct device identifier
"id=ABC-123-DEF-456"

Quick Setup

  1. Create a config file (choose one):

    # Project-level
    echo '{"defaultSimulator": "platform=iOS Simulator,name=iPhone 15"}' > .xcplugin
    
    # User-level
    mkdir -p ~/.xcplugin
    echo '{"defaultSimulator": "platform=iOS Simulator,name=iPhone 15"}' > ~/.xcplugin/config.json
  2. Find your available simulators:

    xcrun simctl list devices available
  3. Use the simulator_list tool to see your devices:

    Ask Claude: "Show me available simulators"

Example Config

See .xcplugin.example in the plugin directory for a complete example.

Enable Minimal MCPs for Token Efficiency

  • Token efficiency: xc-build (~600 tokens) is 83% cheaper than xc-all (3500 tokens)

  • Mental clarity: Focused tools per workflow phase

  • Composable workflows: Enable xc-build + xc-launch together (~1000 tokens) for development loop

Guidelines:

  • Single workflow: Enable one focused MCP (e.g., xc-interact for UI testing only)

  • Development loop: Enable xc-build + xc-launch together for build β†’ install β†’ launch

  • Complex workflows: Enable xc-all when you

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Blitz-mcp gives AI agents full control over iOS/macOS development β€” boot simulators, interacts with physical iPhones, browse databases, trigger builds, and submit apps to App Store Connect via 30+ MCP tools.
    1,760
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Unified MCP server for Xcode + iOS Simulator β€” build, deploy, screenshot, and interact with your iOS app from Claude Code, Cursor, or any MCP client. Built in Swift. Single binary. No Node/Python runtime required.
    6
    10
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI to control iOS simulators through the MCP protocol. Supports device management, UI automation, and network interception including screenshot capture, text input, and HTTP request mocking.
    -