MCP Hub
Back to servers

xcode-mcp

MCP server for Xcode developer tools

Updated
Jan 24, 2026

xcode-mcp

MCP server for Xcode developer tools.

Installation

npm install
npm run build

Usage

Claude Desktop Configuration

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "xcode": {
      "command": "node",
      "args": ["/Users/YOUR_USERNAME/Projects/xcode-mcp/dist/index.js"]
    }
  }
}

Available Tools

iOS Simulator (simctl)

Control iOS Simulators via xcrun simctl.

ToolDescription
simctl_listList available simulators, device types, runtimes, or device pairs
simctl_bootBoot a simulator device
simctl_shutdownShutdown a simulator device or all simulators
simctl_installInstall an app bundle on a simulator
simctl_launchLaunch an app on a simulator
simctl_terminateTerminate a running app without shutting down the simulator
simctl_uninstallUninstall an app from a simulator
simctl_openurlOpen a URL or deep link on a simulator
simctl_pushSend a push notification to an app
simctl_locationSet or clear the simulated GPS location
simctl_privacyGrant, revoke, or reset privacy permissions for an app
simctl_io_screenshotCapture a screenshot from a simulator

Device Identification

All simulator tools that require a device accept:

  • Device UDID (e.g., "3A8C9B5F-1234-5678-9ABC-DEF012345678")
  • Device name (e.g., "iPhone 16 Pro")
  • Special value "booted" for the currently booted simulator

Examples

List all devices:

{"name": "simctl_list", "arguments": {"filter": "devices"}}

Boot a simulator:

{"name": "simctl_boot", "arguments": {"device": "iPhone 16 Pro"}}

Take a screenshot:

{"name": "simctl_io_screenshot", "arguments": {"device": "booted"}}

Send a push notification:

{
  "name": "simctl_push",
  "arguments": {
    "device": "booted",
    "bundle_id": "com.example.app",
    "payload": {
      "aps": {
        "alert": {
          "title": "Test",
          "body": "Hello from MCP!"
        }
      }
    }
  }
}

Set location:

{
  "name": "simctl_location",
  "arguments": {
    "device": "booted",
    "action": "set",
    "latitude": 37.7749,
    "longitude": -122.4194
  }
}

Grant camera permission:

{
  "name": "simctl_privacy",
  "arguments": {
    "device": "booted",
    "action": "grant",
    "service": "camera",
    "bundle_id": "com.example.app"
  }
}

Development

# Run in development mode
npm run dev

# Build
npm run build

# Test
npm test

License

MIT

Reviews

No reviews yet

Sign in to write a review