
Xcode
STDIOMCP server for Xcode builds, automation, and log parsing with AI assistant integration.
MCP server for Xcode builds, automation, and log parsing with AI assistant integration.
Model Context Protocol (MCP) server that controls Xcode directly through JavaScript for Automation (JXA). Available as both an MCP server and a standalone CLI.
brew install xclogparser
XcodeMCP can be used in two ways:
xcodecontrol
XCLogParser is recommended but optional:
brew install xclogparser
Run directly with npx:
npx -y xcodemcp@latest
Or install globally:
npm install -g xcodemcp
Add to your MCP configuration:
{ "mcpServers": { "xcodemcp": { "command": "npx", "args": ["-y", "xcodemcp@latest"], "env": { "LOG_LEVEL": "INFO" } } } }
To add XcodeMCP to Claude Code using the command line:
claude mcp add-json XcodeMCP '{ "command": "npx", "args": ["-y", "xcodemcp@latest"], "env": { "LOG_LEVEL": "INFO" } }'
For local development:
git clone https://github.com/lapfelix/XcodeMCP.git cd XcodeMCP npm install # Run in development mode (TypeScript) npm run dev:ts # Or build and run compiled version npm run build npm start
XcodeMCP includes a powerful CLI that provides 100% feature parity with the MCP server, allowing you to run any tool as a one-shot command:
Install globally to use the CLI:
npm install -g xcodemcp
# Show help and available tools xcodecontrol --help # Run a tool with flags xcodecontrol build --xcodeproj /path/to/Project.xcodeproj --scheme MyScheme # Get help for a specific tool xcodecontrol build --help # Use JSON input instead of flags xcodecontrol build --json-input '{"xcodeproj": "/path/to/Project.xcodeproj", "scheme": "MyScheme"}' # Output results in JSON format xcodecontrol --json health-check
The CLI supports both absolute and relative paths for convenience:
# Absolute paths (traditional) xcodecontrol build --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj --scheme MyApp # Relative paths (NEW in v2.0.0) xcodecontrol build --xcodeproj MyApp.xcodeproj --scheme MyApp xcodecontrol build --xcodeproj ../OtherProject/OtherProject.xcodeproj --scheme OtherApp # Works with file paths too xcodecontrol open-file --filePath src/ViewController.swift --lineNumber 42
Relative paths are resolved from your current working directory, making the CLI much more convenient to use when working within project directories.
Control logging output with verbosity flags:
# Verbose mode (shows INFO and DEBUG logs) xcodecontrol -v build --xcodeproj /path/to/Project.xcodeproj --scheme MyScheme # Quiet mode (only errors) xcodecontrol -q test --xcodeproj /path/to/Project.xcodeproj # Default mode (warnings and errors only) xcodecontrol run --xcodeproj /path/to/Project.xcodeproj --scheme MyScheme
# Check system health xcodecontrol health-check # Build a project xcodecontrol build --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj --scheme MyApp # Run the app xcodecontrol run --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj --scheme MyApp # Run tests xcodecontrol test --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj # Clean build directory xcodecontrol clean --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj # Browse XCResult files xcodecontrol xcresult-browse --xcresult-path /path/to/result.xcresult # Get UI hierarchy from test failure xcodecontrol xcresult-get-ui-hierarchy --xcresult-path /path/to/result.xcresult --test-id "MyTest/testMethod()" --timestamp 30.5
CLI commands use kebab-case instead of underscores:
xcode_build
→ build
xcode_test
→ test
xcode_run
→ run
xcode_health_check
→ health-check
xcresult_browse
→ xcresult-browse
find_xcresults
→ find-xcresults
Project Management:
xcode_open_project
- Open projects and workspacesxcode_get_workspace_info
- Get workspace status and detailsxcode_get_projects
- List projects in workspacexcode_open_file
- Open files with optional line numberBuild Operations:
xcode_build
- Build with detailed error parsingxcode_clean
- Clean build artifactsxcode_test
- Run tests with optional argumentsxcode_run
- Run the active schemexcode_debug
- Start debugging sessionxcode_stop
- Stop current operationConfiguration:
xcode_get_schemes
- List available schemesxcode_set_active_scheme
- Switch active schemexcode_get_run_destinations
- List simulators and devicesXCResult Analysis:
xcresult_browse
- Browse test results and analyze failuresxcresult_browser_get_console
- Get console output for specific testsxcresult_summary
- Quick overview of test resultsxcresult_get_screenshot
- Extract screenshots from test failuresxcresult_get_ui_hierarchy
- Get UI hierarchy as AI-readable JSON with timestamp selectionxcresult_get_ui_element
- Get detailed properties of specific UI elements by indexxcresult_list_attachments
- List all attachments for a testxcresult_export_attachment
- Export specific attachments from test resultsDiagnostics:
xcode_health_check
- Environment validation and troubleshootingXcodeMCP provides comprehensive tools for analyzing Xcode test results (.xcresult files), making it easy to debug test failures and extract valuable information:
t
=type, l
=label, f
=frame, c
=children, j
=index)# Browse test results xcresult_browse "/path/to/TestResults.xcresult" # Get console output to find failure timestamps xcresult_browser_get_console "/path/to/TestResults.xcresult" "MyTest/testMethod()" # Get UI hierarchy at specific timestamp (AI-readable slim version) xcresult_get_ui_hierarchy "/path/to/TestResults.xcresult" "MyTest/testMethod()" 45.25 # Get full UI hierarchy (with size warning) xcresult_get_ui_hierarchy "/path/to/TestResults.xcresult" "MyTest/testMethod()" 45.25 true # Get detailed properties of a specific UI element xcresult_get_ui_element "/path/to/ui_hierarchy_full.json" 15 # Extract screenshot at failure point xcresult_get_screenshot "/path/to/TestResults.xcresult" "MyTest/testMethod()" 30.71
XcodeMCP supports configurable logging to help with debugging and monitoring:
LOG_LEVEL
: Controls logging verbosity (default: INFO
)
SILENT
: No logging outputERROR
: Only error messagesWARN
: Warnings and errorsINFO
: General operational information (recommended)DEBUG
: Detailed diagnostic informationXCODEMCP_LOG_FILE
: Optional file path for logging
/tmp/xcodemcp.log
or ~/Library/Logs/xcodemcp.log
XCODEMCP_CONSOLE_LOGGING
: Enable/disable console output (default: true
)
false
to disable stderr logging (useful when using file logging only)Debug logging with file output:
{ "mcpServers": { "xcodemcp": { "command": "npx", "args": ["-y", "xcodemcp@latest"], "env": { "LOG_LEVEL": "DEBUG", "XCODEMCP_LOG_FILE": "~/Library/Logs/xcodemcp.log" } } } }
Silent mode (no logging):
{ "mcpServers": { "xcodemcp": { "command": "npx", "args": ["-y", "xcodemcp@latest"], "env": { "LOG_LEVEL": "SILENT" } } } }
File-only logging:
{ "mcpServers": { "xcodemcp": { "command": "npx", "args": ["-y", "xcodemcp@latest"], "env": { "LOG_LEVEL": "INFO", "XCODEMCP_LOG_FILE": "/tmp/xcodemcp.log", "XCODEMCP_CONSOLE_LOGGING": "false" } } } }
All logs are properly formatted with timestamps and log levels, and stderr output maintains compatibility with the MCP protocol.
If you see a warning that XCLogParser is not found even though it's installed:
Verify installation:
which xclogparser xclogparser version
Common issues and solutions:
PATH issue: If which xclogparser
returns nothing, add the installation directory to your PATH:
# For Homebrew on Intel Macs export PATH="/usr/local/bin:$PATH" # For Homebrew on Apple Silicon Macs export PATH="/opt/homebrew/bin:$PATH"
Wrong command: Older documentation may reference xclogparser --version
, but the correct command is xclogparser version
(without dashes)
Permission issue: Ensure xclogparser is executable:
chmod +x $(which xclogparser)
Environment validation: Run the health check to get detailed diagnostics:
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "xcode_health_check", "arguments": {}}}' | npx xcodemcp
Note: XcodeMCP can operate without XCLogParser, but build error parsing will be limited.
Build with errors:
❌ BUILD FAILED (2 errors)
ERRORS:
• /path/HandsDownApp.swift:7:18: Expected 'func' keyword in instance method declaration
• /path/MenuBarManager.swift:98:13: Invalid redeclaration of 'toggleItem'
Health check:
✅ All systems operational
✅ OS: macOS environment detected
✅ XCODE: Xcode found at /Applications/Xcode.app (version 16.4)
✅ XCLOGPARSER: XCLogParser found (XCLogParser 0.2.41)
✅ OSASCRIPT: JavaScript for Automation (JXA) is available
✅ PERMISSIONS: Xcode automation permissions are working