WHAT IT CONNECTS
What devyhan xcode mcp gives an AI Agent
- Xcode project information retrieval and scheme listing
- Enhanced build capabilities with clean and custom output options
- Comprehensive test execution with granular control
- App archiving and IPA export for distribution
- Code signing and provisioning profile management
- Swift Package Manager integration
- iOS Simulator management via simctl
- **NEW: Real Device App Deployment and Launch** with automatic Xcode installation detection and improved device management
- Intelligent handling of app installation failures with auto-retry
- Smart caching of device and Xcode information for better performance
- Open Claude Desktop config file:
- Add or modify the following configuration:
- Restart Claude Desktop.
- `projectPath` (required): Path to the Xcode project (.xcodeproj) or workspace (.xcworkspace)
- `projectPath` (required): Path to the Xcode project (.xcodeproj) or workspace (.xcworkspace)
- `projectPath` (required): Path to the Xcode project (.xcodeproj) or workspace (.xcworkspace)
- `scheme` (required): The scheme to build
- `configuration` (optional): Build configuration (e.g., Debug, Release)
- `destination` (optional): Build destination (e.g., 'platform=iOS Simulator,name=iPhone 14')
- `extraArgs` (optional): Additional xcodebuild arguments as array of strings
- `outputDir` (optional): Custom build output directory (SYMROOT)
- `clean` (optional): Whether to perform clean build (default: false)
- `projectPath` (required): Path to the Xcode project (.xcodeproj) or workspace (.xcworkspace)
- `scheme` (required): The scheme to test
- `destination` (required): Test destination (e.g., 'platform=iOS Simulator,name=iPhone 14')
- `testPlan` (optional): Name of the test plan to use
- `onlyTesting` (optional): Array of specific test identifiers to run
- `skipTesting` (optional): Array of test identifiers to skip
- `resultBundlePath` (optional): Path to save test result bundle
- `buildForTesting` (optional): Build for testing only without running tests
- `testWithoutBuilding` (optional): Run tests without building
- `projectPath` (required): Path to the Xcode project (.xcodeproj) or workspace (.xcworkspace)
- `scheme` (required): The scheme to archive
- `configuration` (optional): Build configuration (e.g., Release)
- `archivePath` (required): Path to save the .xcarchive file
- `exportPath` (optional): Path to export the archive (e.g., IPA file)
- `exportOptionsPlist` (optional): Path to the exportOptions.plist file
- `projectPath` (required): Path to the Xcode project (.xcodeproj) or workspace (.xcworkspace)
- `target` (optional): Specific target name
- `command` (required): SPM command to execute ("init", "update", "resolve", "reset", "clean")
- `packageDir` (required): Directory path of the Swift Package
- `extraArgs` (optional): Additional SPM arguments as array of strings
- `command` (required): SimCtl command ("list", "create", "boot", "shutdown", "erase", "install", "launch", "delete")
- `extraArgs` (optional): Additional simctl arguments as array of strings
- `projectPath` (required): Path to the Xcode project (.xcodeproj) or workspace (.xcworkspace)
- `scheme` (required): The scheme to build and run
- `device` (required): Device identifier or name (supports Korean names)
- `configuration` (optional): Build configuration (e.g., Debug, Release)
- `streamLogs` (optional): Whether to stream device logs after launching
- `startStopped` (optional): Whether to start the app in a paused state for debugger attachment
- `environmentVars` (optional): Environment variables to pass to the app (key1=value1,key2=value2 format)
- `xcodePath` (optional): Xcode application path (default: "/Applications/Xcode-16.2.0.app")
- `listDevices` (optional): Display all detected devices with their IDs before running
- `skipBuild` (optional): Skip the build and install step for already installed apps
- `extraLaunchArgs` (optional): Additional arguments to pass to the devicectl launch command
- `directBundleId` (optional): Directly specify the bundle ID instead of extracting from project
- The tool identifies both Xcode UDID and CoreDevice UUID for the specified device
- It uses the Xcode UDID for building and installing the app
- It uses the CoreDevice UUID for launching the app with `devicectl`
- It retrieves the app's bundle identifier
- If requested, it streams the device logs
- Ability to specify bundleId directly without needing a project
- Skip build and install step for already installed apps
- Support for additional devicectl launch command arguments
- Better device model and OS version information display
- Improved path handling and logging for devicectl commands
- First, use the xcode-list-schemes tool to get all available schemes for my project at /Users/username/Projects/MyApp/MyApp.xcodeproj
- After you see the schemes, run tests for the first available scheme on the iPhone 14 simulator.
- Then archive the app for distribution using the Release configuration.
- Claude will execute the `xcode-list-schemes` tool to retrieve all schemes:
- Claude will execute the `xcode-test` tool with the identified scheme:
- Claude will then use the `xcode-archive` tool to create an archive:
- Get the list of available devices (including connected physical devices)
- Run my app on my connected iPhone
- Claude will first get the list of devices:
- Claude will identify your physical device and run the app on it:
- For quick re-launch without rebuilding:
- Only use with trusted Xcode projects.
- Be cautious with projects from unknown sources.
- Do not include sensitive information in build parameters.
- Node.js 16 or higher
- npm 6 or higher
- Xcode 14 or higher (for all features)
- Xcode 16 or higher (required for `devicectl` and real device features)
SECURITY
An MCP listing is not a security review
An MCP server may receive model context, credentials, local files, or permission to call external systems. Review its code, requested environment variables, network behavior, package provenance, and maintenance status before connecting it to an agent.