xcode-pilot-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| xcode_buildC | Build an Xcode project or workspace with the specified scheme and configuration |
| xcode_cleanB | Clean build artifacts for the specified scheme |
| xcode_archiveC | Create an Xcode archive for distribution |
| xcode_exportB | Export an IPA from an Xcode archive using an export options plist |
| xcode_testA | Run unit and UI tests for the specified scheme and destination |
| xcode_test_without_buildingB | Run tests on previously built code without rebuilding |
| xcode_listB | List available schemes, targets, and configurations in the project |
| xcode_build_settingsA | Show resolved build settings for a scheme and configuration |
| simulator_listA | List all iOS simulators with their state (Booted, Shutdown, etc.) |
| simulator_createB | Create a new iOS simulator with specified device type and runtime |
| simulator_bootC | Boot a simulator device so it can be used |
| simulator_shutdownB | Shutdown a simulator or all simulators |
| simulator_deleteA | Delete a simulator device. Use "unavailable" to remove all unavailable devices |
| simulator_eraseB | Erase all content and settings from a simulator |
| simulator_openC | Open Simulator.app and display the specified device |
| simulator_list_runtimesA | List available simulator runtimes (iOS, watchOS, tvOS, visionOS) |
| simulator_list_device_typesA | List available simulator device types (iPhone, iPad, Apple Watch, etc.) |
| simulator_cloneA | Clone an existing simulator to create an identical copy |
| app_installC | Install a .app bundle on a simulator |
| app_uninstallC | Uninstall an app from a simulator by bundle ID |
| app_launchB | Launch an installed app on a simulator |
| app_terminateB | Terminate a running app on a simulator |
| app_get_containerB | Get the file system path to an app's container (app bundle, data, or app group) |
| app_listA | List all installed apps on a simulator |
| app_open_urlA | Open a URL on a simulator for deep link and universal link testing |
| app_privacyB | Grant, revoke, or reset privacy permissions for an app on a simulator |
| log_streamC | Stream live logs from a simulator for a specified duration |
| log_collectA | Collect recent logs from a simulator with time range and predicate filtering |
| screenshotB | Capture a screenshot from a simulator as PNG |
| screen_recordA | Record the simulator screen as MP4 for a specified duration |
| diagnosticsB | Collect a diagnostic report from the simulator subsystem |
| device_appearanceC | Set the simulator to light or dark mode |
| location_setB | Set a simulated GPS location on a simulator |
| location_clearB | Clear the simulated GPS location on a simulator |
| push_notificationA | Send a push notification to an app on a simulator via APNs payload JSON |
| status_bar_overrideB | Override the simulator status bar display (time, battery, wifi, cellular, etc.) |
| status_bar_clearB | Reset the simulator status bar to default values |
| signing_identitiesA | List all code signing identities available on this machine |
| provisioning_profilesA | List all installed provisioning profiles with name, UUID, team, and expiration |
| profile_inspectB | Decode and inspect a provisioning profile to see its full contents |
| keychain_listB | List all keychains on this machine |
| entitlements_checkB | Show the entitlements embedded in a built app bundle |
| spm_resolveC | Resolve Swift Package Manager dependencies for a project |
| spm_updateB | Update Swift Package Manager dependencies to their latest allowed versions |
| spm_show_dependenciesB | Show the Swift Package Manager dependency tree as JSON |
| pod_installB | Run CocoaPods install to set up pod dependencies |
| pod_updateC | Update CocoaPods dependencies (all or a specific pod) |
| pod_outdatedC | Check for outdated CocoaPods dependencies |
| project_createA | Create a new Xcode app project (source tree + XcodeGen project.yml). If xcodegen is installed on PATH, runs |
| scaffold_viewB | Generate a SwiftUI View file with optional preview provider |
| scaffold_viewmodelB | Generate an @Observable ViewModel class |
| scaffold_coredata_modelB | Generate a Core Data NSManagedObject subclass with attributes |
| scaffold_widgetA | Generate a WidgetKit extension: 'static' uses TimelineProvider/StaticConfiguration, 'configurable' uses the AppIntents-based WidgetConfigurationIntent/AppIntentConfiguration API (iOS 17+) |
| ipa_analyzeA | Analyze an IPA file: size, bundle ID, version, architectures, embedded frameworks |
| ipa_permissionsA | List privacy usage descriptions (NSCameraUsageDescription, etc.) from an IPA's Info.plist |
| binary_sizeA | Analyze Mach-O binary size breakdown by segment |
| dsym_verifyB | Verify that a dSYM file matches a binary by comparing UUIDs |
| swiftlint_runA | Run SwiftLint analysis and report violations as JSON |
| swiftlint_fixB | Auto-fix SwiftLint violations in the specified path |
| swift_format_runA | Run swift-format lint to check formatting |
| build_warningsB | Extract and summarize warnings from the most recent Xcode build log |
| physical_device_listB | List connected physical iOS devices (requires Xcode 15+ with devicectl) |
| physical_device_installC | Install an app on a connected physical device |
| physical_device_launchC | Launch an installed app on a connected physical device |
| physical_device_consoleA | Launch an app on a physical device and stream its console output for N seconds |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 65 tools
Most tools are clearly separated by domain prefixes (xcode_, simulator_, app_, physical_device_) and have distinct descriptions. A few related pairs like ipa_analyze vs binary_size or log_stream vs log_collect overlap enough that an agent may need to read carefully.
The majority of tools follow a predictable resource_action snake_case pattern such as simulator_boot, app_launch, and xcode_build. However, noun-only names like signing_identities and diagnostics, plus verb-first scaffold_* tools, break the pattern slightly.
With 65 tools, this is far beyond the well-scoped range and presents an extreme selection burden for agents. Even with a broad Xcode/iOS domain, many tools could be consolidated, such as the simulator list variants, scaffold_* generators, and IPA/binary analysis tools.
The tool set covers the major iOS development workflow: build, test, archive, export, simulator/app lifecycle, dependency management, signing, and static analysis. Minor gaps exist around physical-device management, such as no uninstall or app listing, but most workflows do not hit dead ends.