Skip to main content
Glama

xcsift-mcp

An MCP (Model Context Protocol) server that wraps xcsift, enabling AI coding assistants to parse Xcode build output into structured, token-efficient formats.

Python 3.10+ License: MIT MCP

Overview

xcsift-mcp provides AI coding assistants (like Claude, OpenCode, Cursor, etc.) with tools to:

  • Parse raw xcodebuild or swift build/test output into structured JSON or TOON format

  • Execute build commands and get parsed results automatically

  • Extract errors, warnings, test failures, and linker errors with file/line information

  • Analyze code coverage from test runs

The output is optimized for token efficiency, with TOON format providing 30-60% fewer tokens compared to JSON.

Related MCP server: XcodeMCP

Installation

Prerequisites

  • Python 3.10+

  • macOS (xcsift is macOS-only)

  • pipx (install via brew install pipx)

Install from source

git clone https://github.com/johnnyclem/xcsift_mcp.git
cd xcsift_mcp
pipx install -e ".[dev]"

Install via Homebrew

brew install johnnyclem/xcsift-mcp/xcsift-mcp

xcsift Binary

The server will automatically download the xcsift binary from GitHub releases on first run if it's not already installed. The binary is cached in ~/.local/share/xcsift-mcp/bin/.

You can also install it manually via Homebrew:

brew install xcsift

Usage

Running the Server

# Run with stdio transport (default, for Claude Desktop/OpenCode)
xcsift-mcp

# Run with HTTP transport (for debugging/web clients)
xcsift-mcp --transport http --port 8000

Integration with AI Assistants

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "xcsift": {
      "command": "xcsift-mcp"
    }
  }
}

OpenCode

Add to your opencode.json (or opencode.jsonc):

{
  "mcp": {
    "xcsift": {
      "type": "local",
      "command": ["xcsift-mcp"]
    }
  }
}

Alternatively, run opencode mcp add and follow the interactive prompts.

Cursor

Add to your MCP configuration in Cursor settings, or add to .cursor/mcp.json:

{
  "mcpServers": {
    "xcsift": {
      "command": "xcsift-mcp"
    }
  }
}

Available Tools

Parsing Tools

Tool

Description

parse_xcodebuild_output

Parse raw xcodebuild/swift output into JSON or TOON format

extract_errors

Extract only errors with file/line information

extract_warnings

Extract only warnings with file/line/type

extract_test_failures

Extract failed tests with assertion messages

get_build_summary

Get a quick summary with error/warning counts

Build Execution Tools

Tool

Description

xcodebuild

Run xcodebuild and parse output automatically

swift_build

Run swift build for SPM projects

swift_test

Run swift test with optional coverage

run_shell_build_command

Run arbitrary build commands and parse output

Tool Parameters

parse_xcodebuild_output

Parameter

Type

Default

Description

output

string

required

Raw xcodebuild/swift output (use 2>&1 to capture stderr)

format

"json" | "toon"

"json"

Output format

include_warnings

bool

false

Include detailed warnings list

include_coverage

bool

false

Include coverage data if available

xcodebuild

Parameter

Type

Default

Description

action

"build" | "test" | "clean" | "analyze"

"build"

Build action

scheme

string

none

Scheme to build

project

string

none

Path to .xcodeproj

workspace

string

none

Path to .xcworkspace

destination

string

none

Destination (e.g., "platform=iOS Simulator,name=iPhone 15")

configuration

"Debug" | "Release"

none

Build configuration

enable_code_coverage

bool

false

Enable coverage for tests

output_format

"json" | "toon"

"json"

Output format

timeout

int

600

Timeout in seconds

swift_build

Parameter

Type

Default

Description

configuration

"debug" | "release"

"debug"

Build configuration

package_path

string

none

Path to Swift package

target

string

none

Specific target to build

output_format

"json" | "toon"

"json"

Output format

timeout

int

300

Timeout in seconds

swift_test

Parameter

Type

Default

Description

package_path

string

none

Path to Swift package

filter_test

string

none

Filter tests (e.g., "MyTests.testFoo")

enable_code_coverage

bool

false

Enable coverage collection

parallel

bool

true

Run tests in parallel

output_format

"json" | "toon"

"json"

Output format

timeout

int

600

Timeout in seconds

Example Usage

Parse existing build output

# In your AI assistant
result = parse_xcodebuild_output(
    output="<raw xcodebuild output>",
    format="toon",  # or "json"
    include_warnings=True
)

Run build and get parsed results

result = xcodebuild(
    action="build",
    scheme="MyApp",
    destination="platform=iOS Simulator,name=iPhone 15",
    output_format="json"
)

Run tests with coverage

result = swift_test(
    enable_code_coverage=True,
    output_format="toon"
)

Extract just the errors

errors = extract_errors(output="<raw xcodebuild output>")
# Returns: [{"file": "main.swift", "line": 15, "message": "..."}]

Output Formats

JSON Format

Standard structured JSON output:

{
  "status": "failed",
  "summary": {
    "errors": 1,
    "warnings": 3,
    "failed_tests": 0,
    "linker_errors": 0,
    "build_time": "3.2s"
  },
  "errors": [
    {
      "file": "main.swift",
      "line": 15,
      "message": "use of undeclared identifier 'unknown'"
    }
  ],
  "warnings": [
    {
      "file": "view.swift",
      "line": 20,
      "message": "variable 'temp' was never used",
      "type": "compile"
    }
  ]
}

TOON Format (Token-Optimized)

30-60% fewer tokens than JSON:

status: failed
summary:
  errors: 1
  warnings: 3
  failed_tests: 0
  linker_errors: 0
  build_time: 3.2s
errors[1]{file,line,message}:
  main.swift,15,"use of undeclared identifier 'unknown'"
warnings[1]{file,line,message,type}:
  view.swift,20,"variable 'temp' was never used","compile"

When to use each format:

  • JSON: When you need to parse the output programmatically or integrate with other tools

  • TOON: When sending to an LLM to reduce token usage and API costs

Available Resources

Resource URI

Description

xcsift://version

xcsift version and installation info

xcsift://config-template

Example .xcsift.toml configuration

xcsift://output-formats

Documentation about output formats

xcsift://help

Comprehensive help documentation

Available Prompts

Prompt

Description

Arguments

analyze_build_failure

Template for analyzing build failures

errors, code_context

fix_compiler_errors

Template for fixing Swift/ObjC compiler errors

errors, file_content

improve_test_coverage

Template for improving test coverage

coverage_report, target_coverage

debug_test_failures

Template for debugging test failures

test_output, test_code

fix_linker_errors

Template for fixing linker errors

linker_errors, project_structure

analyze_build_performance

Template for analyzing build performance

build_info

Development

Running Tests

pytest

Running Tests with Coverage

pytest --cov=xcsift_mcp

Code Formatting

ruff format .
ruff check .

Project Structure

xcsift_mcp/
├── src/xcsift_mcp/
│   ├── __init__.py           # Package init
│   ├── __main__.py           # Entry point
│   ├── server.py             # FastMCP server
│   ├── xcsift_installer.py   # Auto-download xcsift
│   ├── resources.py          # MCP resources
│   ├── prompts.py            # Prompt templates
│   └── tools/
│       ├── parse.py          # Parsing tools
│       └── build.py          # Build execution tools
├── tests/
│   ├── fixtures/             # Sample build outputs
│   └── test_*.py             # Test files
├── pyproject.toml
└── README.md

Architecture

┌─────────────────────────────────────────────────────────────────┐
│                 AI Assistant (Claude, OpenCode, etc.)           │
└─────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                     MCP Protocol (stdio/HTTP)                    │
└─────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                     xcsift MCP Server (Python)                   │
│  ┌─────────────────┐  ┌──────────────────┐  ┌────────────────┐  │
│  │   Tools (9)     │  │  Resources (4)   │  │  Prompts (6)   │  │
│  │ - parse_output  │  │ - version        │  │ - analyze      │  │
│  │ - xcodebuild    │  │ - config         │  │ - fix_errors   │  │
│  │ - swift_build   │  │ - formats        │  │ - coverage     │  │
│  │ - swift_test    │  │ - help           │  │ - debug        │  │
│  └─────────────────┘  └──────────────────┘  └────────────────┘  │
└─────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                     xcsift CLI (subprocess)                      │
└─────────────────────────────────────────────────────────────────┘

Troubleshooting

xcsift not found

If xcsift cannot be downloaded automatically, install it manually:

brew install xcsift

Permission denied

Ensure the xcsift binary has execute permissions:

chmod +x ~/.local/share/xcsift-mcp/bin/xcsift

Build timeout

Increase the timeout parameter for long builds:

xcodebuild(scheme="MyApp", timeout=1200)  # 20 minutes

License

MIT License - see LICENSE for details.

Credits

  • xcsift - The Swift CLI tool that does the actual parsing

  • MCP Python SDK - Model Context Protocol implementation

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    An MCP server that provides tools for programmatically interacting with Xcode projects, enabling users to manage targets, schemes, and files. It supports essential development tasks including building, testing, and cleaning projects through the Xcode command-line tools.
    Last updated
    29
    MIT

View all related MCP servers

Related MCP Connectors

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • MCP server for generating rough-draft project plans from natural-language prompts.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/johnnyclem/xcsift-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server