Skip to content

MCP server for Xcode that wraps its AppleScript interface & uses XCLogParser to return clear build results

Notifications You must be signed in to change notification settings

lapfelix/XcodeMCP

Repository files navigation

XcodeMCP

npm version Test Status

MCP server for Xcode build automation and log parsing.

What it does

  • Opens Xcode projects and triggers builds in Xcode, not using xcodebuild. 1
  • Parses build logs to extract errors and warnings with precise line:column numbers using XCLogParser
  • Provides MCP tools for AI assistants to interact with Xcode

⚠️ Warning: This tool directly controls Xcode through JavaScript for Automation (JXA). It may interfere with your active Xcode session and trigger builds that could overwrite unsaved work. Use with caution in active development environments.

Requirements

  • macOS with Xcode installed
  • Node.js 18+
  • XCLogParser: brew install xclogparser

Usage

Quick Install

Install in VS Code Install in VS Code Insiders Install MCP Server

Install from npm

Run directly with npx:

brew install xclogparser
npx -y xcodemcp@latest

Or install globally:

brew install xclogparser
npm install -g xcodemcp

MCP Configuration

Add to your MCP configuration:

{
  "mcpServers": {
    "xcodemcp": {
      "command": "npx",
      "args": ["-y", "xcodemcp@latest"],
      "env": {}
    }
  }
}

Claude Code CLI Setup

To add XcodeMCP to Claude Code using the command line:

claude mcp add-json XcodeMCP '{
  "command": "npx",
  "args": ["-y", "xcodemcp@latest"],
  "env": {}
}'

Or clone locally:

git clone https://github.com/lapfelix/XcodeMCP.git
cd XcodeMCP
npm install
node index.js

Available Tools

  • xcode_open_project - Open Xcode projects and workspaces
  • xcode_build - Build with optional scheme and destination, returns errors/warnings with line:column numbers
  • xcode_clean - Clean build artifacts
  • xcode_test - Run unit and UI tests with optional command line arguments
  • xcode_run - Run the active scheme with optional command line arguments
  • xcode_debug - Start debugging session with optional scheme
  • xcode_stop - Stop current build/run/test operation
  • xcode_get_schemes - List all available schemes with active status
  • xcode_set_active_scheme - Switch between schemes
  • xcode_get_run_destinations - List simulators and devices with platform info
  • xcode_get_workspace_info - Get workspace details and current status
  • xcode_get_projects - List projects in workspace
  • xcode_open_file - Open specific files in Xcode with optional line number

Example

echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "xcode_build", "arguments": {}}}' | node index.js

Output:

❌ BUILD FAILED (1 errors)
ERRORS:
  • /path/file.swift:42:10: Expected expression

⚠️ BUILD COMPLETED WITH WARNINGS (2 warnings)
WARNINGS:  
  • /path/file.swift:25: Variable 'unused' was never mutated; consider changing to 'let' constant
  • /path/file.swift:30:5: Initialization of immutable value 'data' was never used

Footnotes

  1. For an alternative that uses xcodebuild, see XcodeBuildMCP

About

MCP server for Xcode that wraps its AppleScript interface & uses XCLogParser to return clear build results

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •