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.
| Tool | Description |
|---|---|
simctl_list | List available simulators, device types, runtimes, or device pairs |
simctl_boot | Boot a simulator device |
simctl_shutdown | Shutdown a simulator device or all simulators |
simctl_install | Install an app bundle on a simulator |
simctl_launch | Launch an app on a simulator |
simctl_terminate | Terminate a running app without shutting down the simulator |
simctl_uninstall | Uninstall an app from a simulator |
simctl_openurl | Open a URL or deep link on a simulator |
simctl_push | Send a push notification to an app |
simctl_location | Set or clear the simulated GPS location |
simctl_privacy | Grant, revoke, or reset privacy permissions for an app |
simctl_io_screenshot | Capture 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