Skip to main content
Glama

xcode-mcp

MCP (Model Context Protocol) server that bridges AI assistants with Xcode, enabling full control over Xcode projects, builds, simulators, testing, and debugging — all without touching Xcode manually.

macOS only. Xcode 14+ required. Node 18+ required.

Quick Install

macOS / Linux:

curl -sL https://raw.githubusercontent.com/Raunaksplanet/xcode-mcp-server/main/install.sh | bash
# or locally:
./install.sh

Windows (PowerShell):

.\install.ps1

The installer: checks prerequisites, installs deps, builds, prompts for your Xcode project path, and registers with OpenCode automatically.

Manual Setup

npm install
npm run build
export XCODE_PROJECT_PATH=/path/to/YourApp.xcodeproj
npm start

OpenCode Integration

Clone the repo and add to ~/.config/opencode/opencode.json:

{
  "mcpServers": {
    "xcode": {
      "command": "node",
      "args": ["path/to/xcode-mcp/dist/index.js"],
      "env": {
        "XCODE_PROJECT_PATH": "/path/to/YourApp.xcodeproj",
        "XCODE_DEFAULT_SCHEME": "YourApp"
      }
    }
  }
}

Environment Variables

Variable

Required

Description

XCODE_PROJECT_PATH

Yes

Path to .xcodeproj or .xcworkspace

XCODE_DEFAULT_SCHEME

No

Default scheme for build/test operations

XCODE_DEFAULT_SIMULATOR

No

Default simulator UDID or name

XCODE_DERIVED_DATA_PATH

No

Custom DerivedData path

XCODE_MCP_LOG_LEVEL

No

Log level: debug/info/warn/error (default: info)

XCODE_MCP_BUILD_TIMEOUT

No

Build timeout in seconds (default: 300)

XCODE_MCP_TEST_TIMEOUT

No

Test timeout in seconds (default: 600)

Configuration File

Place .xcode-mcp.json next to your .xcodeproj:

{
  "default_scheme": "MyApp",
  "default_simulator": "iPhone 16 Pro",
  "excluded_paths": ["Pods", "vendor"],
  "build_pre_hooks": ["echo 'Starting build...'"],
  "build_post_hooks": ["echo 'Build complete!'"],
  "custom_destinations": ["platform=iOS Simulator,name=iPhone 16,OS=latest"]
}

Available Tools

Project Management

  • xcode_open_project — Open project in Xcode

  • xcode_get_project_info — Get project info (targets, schemes, configs)

  • xcode_list_targets — List all targets

  • xcode_list_schemes — List all schemes

  • xcode_list_files — List project files

  • xcode_add_file — Add file to project

  • xcode_remove_file — Remove file from project

  • xcode_get_build_settings — Get resolved build settings

  • xcode_set_build_setting — Modify build settings

  • xcode_resolve_packages — Resolve SPM dependencies

Build Tools

  • xcode_build — Build the project

  • xcode_build_for_testing — Build for testing

  • xcode_archive — Archive for distribution

  • xcode_clean — Clean build artifacts

  • xcode_get_build_errors — Parse build errors/warnings

  • xcode_get_analyzer_results — Run static analyzer

Simulator Control

  • xcode_list_simulators — List available simulators

  • xcode_boot_simulator — Boot a simulator

  • xcode_shutdown_simulator — Shutdown simulator

  • xcode_install_app — Install app on simulator

  • xcode_launch_app — Launch app on simulator

  • xcode_terminate_app — Terminate app

  • xcode_get_simulator_logs — Fetch simulator logs

  • xcode_screenshot_simulator — Take screenshot

  • xcode_record_simulator — Record video

  • xcode_open_url_simulator — Open URL (deep link testing)

  • xcode_set_simulator_location — Set location

  • xcode_push_notification_simulator — Simulate push notification

  • xcode_reset_simulator — Reset to factory state

Testing

  • xcode_run_tests — Run all tests

  • xcode_run_single_test — Run specific test

  • xcode_get_test_results — Parse xcresult bundle

  • xcode_get_code_coverage — Get coverage report

Code Management

  • xcode_read_file — Read file content

  • xcode_write_file — Write file content

  • xcode_edit_file — Find and replace in file

  • xcode_get_swift_symbols — Extract Swift symbols

  • xcode_format_file — Format with swift-format

  • xcode_search_in_project — Search across project files

Code Signing

  • xcode_list_certificates — List signing certificates

  • xcode_list_provisioning_profiles — List provisioning profiles

  • xcode_set_signing — Configure signing settings

  • xcode_validate_signing — Verify code signature

Diagnostics

  • xcode_get_warnings — Get build warnings

  • xcode_profile_app — Profile with Instruments

  • xcode_add_spm_package — Add SPM dependency

Resources

  • xcode://project/structure — Project file tree

  • xcode://project/settings — All build settings

  • xcode://build/latest_log — Latest build log

  • xcode://build/errors — Parsed build errors

  • xcode://simulators/list — Available simulators

Prompts

  • fix_build_error — Fix a build error with context

  • create_swift_feature — Implement a Swift feature

  • write_xctest — Generate XCTest cases

  • review_swift_code — Swift best practices review

Architecture

xcode-mcp/
├── src/
│   ├── index.ts          # Entry point
│   ├── server.ts         # MCP server setup
│   ├── tools/            # Tool implementations
│   ├── lib/              # Core libraries
│   │   ├── xcode_runner.ts    # xcodebuild/xcrun wrappers
│   │   ├── pbxproj_parser.ts  # PBXProject parser
│   │   ├── pbxproj_writer.ts  # PBXProject writer
│   │   ├── simulator_manager.ts # simctl wrapper
│   │   ├── process_manager.ts  # Process lifecycle
│   │   ├── logger.ts           # Structured logging
│   │   ├── error_handler.ts    # Error mapping
│   │   └── config.ts          # Configuration
│   ├── types/            # TypeScript type definitions
│   ├── resources/        # MCP resource providers
│   └── prompts/          # MCP prompt templates
├── package.json
└── tsconfig.json

Security

  • All file paths are validated against the project root

  • Command injection prevented via execFile with args arrays

  • Sensitive data (certificates, keys) never logged

  • Concurrent xcodebuild calls are queued (max 2)

  • Path traversal detection on all file operations

License

MIT

F
license - not found
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/Raunaksplanet/xcode-mcp-server'

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