You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- CLI text mode prints a durable preflight block first
85
+
- interactive terminals then show active phases as live replace-in-place updates
86
+
- warnings, errors, failures, summaries, and next steps are durable output
87
+
- success output order is: front matter -> runtime state/diagnostics -> summary -> execution-derived footer -> next steps
88
+
- failed structured xcodebuild runs do not render next steps
89
+
- compiler/build diagnostics should be grouped into a readable failure block before the failed summary
90
+
- the final footer should only contain execution-derived values such as app path, bundle ID, app ID, or process ID
91
+
- requested values like scheme, project/workspace, configuration, and platform stay in front matter and should not be repeated later
92
+
- when the tool computes a concrete value during execution, prefer showing it directly in the footer instead of relegating it to a hint or redundant next step
93
+
94
+
For example, a successful build-and-run footer should prefer:
85
95
86
-
> Log capture started successfully. Session ID: 51e2142a-1a99-442a-af01-0586540043df.
rather than forcing the user to run another command just to retrieve a value the tool already knows.
103
+
104
+
MCP uses the same human-readable formatting semantics, but buffers the rendered output instead of streaming it to stdout live. It is the same section model and ordering, just a different sink.
105
+
106
+
`--output json` is still streamed JSONL events, not the human-readable section format.
xcodebuildmcp simulator test --scheme MyAppTests --simulator-name "iPhone 17 Pro"
116
+
117
+
# Run with pre-resolved test discovery and live progress
118
+
xcodebuildmcp simulator test --json '{"workspacePath":"./MyApp.xcworkspace","scheme":"MyApp","simulatorName":"iPhone 17 Pro","progress":true,"extraArgs":["-only-testing:MyAppTests"]}'
100
119
```
101
120
121
+
Simulator test output now pre-resolves concrete Swift XCTest and Swift Testing cases when it can, then streams filtered milestones for package resolution, compilation, and test execution plus a grouped failure summary instead of raw `xcodebuild` noise.
122
+
123
+
For reproducible performance comparisons against Flowdeck CLI, see [dev/simulator-test-benchmark.md](dev/simulator-test-benchmark.md).
124
+
102
125
For a full list of workflows and tools, see [TOOLS-CLI.md](TOOLS-CLI.md).
**Purpose**: Complete iOS development workflow for physical devices (iPhone, iPad, Apple Watch, Apple TV, Apple Vision Pro). (17 tools)
25
+
**Purpose**: Complete iOS development workflow for physical devices (iPhone, iPad, Apple Watch, Apple TV, Apple Vision Pro). (15 tools)
26
26
27
27
-`build` - Build for device.
28
-
-`build-and-run` - Build, install, and launch on physical device. Preferred single-step run tool when defaults are set.
28
+
-`build-and-run` - Build, install, and launch on physical device. Runtime logs are captured automatically and the log file path is included in the response. Preferred single-step run tool when defaults are set.
29
29
-`clean` - Clean build products.
30
30
-`discover-projects` - Scans a directory (defaults to workspace root) to find Xcode project (.xcodeproj) and workspace (.xcworkspace) files. Use when project/workspace path is unknown.
31
31
-`get-app-bundle-id` - Extract bundle id from .app.
-`stop-device-log-capture` - Stop device app and return logs.
43
41
-`test` - Test on device.
44
42
45
43
46
44
47
45
### iOS Simulator Development (`simulator`)
48
-
**Purpose**: Complete iOS development workflow for both .xcodeproj and .xcworkspace files targeting simulators. (23 tools)
46
+
**Purpose**: Complete iOS development workflow for both .xcodeproj and .xcworkspace files targeting simulators. (20 tools)
49
47
50
48
-`boot` - Defined in Simulator Management workflow.
51
49
-`build` - Build for iOS sim (compile-only, no launch).
52
-
-`build-and-run` - Build, install, and launch on iOS Simulator; boots simulator and attempts to open Simulator.app as needed. Preferred single-step run tool when defaults are set.
50
+
-`build-and-run` - Build, install, and launch on iOS Simulator; boots simulator and attempts to open Simulator.app as needed. Runtime logs are captured automatically and the log file path is included in the response. Preferred single-step run tool when defaults are set.
53
51
-`clean` - Defined in iOS Device Development workflow.
54
52
-`discover-projects` - Defined in iOS Device Development workflow.
55
53
-`get-app-bundle-id` - Defined in iOS Device Development workflow.
56
54
-`get-app-path` - Get sim built app path.
57
55
-`get-coverage-report` - Defined in Code Coverage workflow.
58
56
-`get-file-coverage` - Defined in Code Coverage workflow.
59
57
-`install` - Install app on sim.
60
-
-`launch-app` - Launch app on simulator.
61
-
-`launch-app-with-logs` - Launch sim app with logs.
58
+
-`launch-app` - Launch app on simulator. Runtime logs are captured automatically and the log file path is included in the response.
62
59
-`list` - Defined in Simulator Management workflow.
63
60
-`list-schemes` - Defined in iOS Device Development workflow.
64
61
-`open` - Defined in Simulator Management workflow.
65
62
-`record-video` - Record sim video.
66
63
-`screenshot` - Capture screenshot.
67
64
-`show-build-settings` - Defined in iOS Device Development workflow.
68
65
-`snapshot-ui` - Print view hierarchy with precise view coordinates (x, y, width, height) for visible elements.
69
-
-`start-simulator-log-capture` - Defined in Log Capture workflow.
70
66
-`stop` - Stop sim app.
71
-
-`stop-simulator-log-capture` - Defined in Log Capture workflow.
-`stop-device-log-capture` - Defined in iOS Device Development workflow.
96
-
-`stop-simulator-log-capture` - Stop sim app and return logs.
97
-
98
-
99
-
100
85
### macOS Development (`macos`)
101
86
**Purpose**: Complete macOS development workflow for both .xcodeproj and .xcworkspace files. Build, test, deploy, and manage macOS applications. (13 tools)
Copy file name to clipboardExpand all lines: docs/TOOLS.md
+10-25Lines changed: 10 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# XcodeBuildMCP MCP Tools Reference
2
2
3
-
This document lists MCP tool names as exposed to MCP clients. XcodeBuildMCP provides 82 canonical tools organized into 16 workflow groups for comprehensive Apple development workflows.
3
+
This document lists MCP tool names as exposed to MCP clients. XcodeBuildMCP provides 77 canonical tools organized into 15 workflow groups for comprehensive Apple development workflows.
4
4
5
5
## Workflow Groups
6
6
@@ -20,10 +20,10 @@ This document lists MCP tool names as exposed to MCP clients. XcodeBuildMCP prov
20
20
21
21
22
22
### iOS Device Development (`device`)
23
-
**Purpose**: Complete iOS development workflow for physical devices (iPhone, iPad, Apple Watch, Apple TV, Apple Vision Pro). (17 tools)
23
+
**Purpose**: Complete iOS development workflow for physical devices (iPhone, iPad, Apple Watch, Apple TV, Apple Vision Pro). (15 tools)
24
24
25
25
-`build_device` - Build for device.
26
-
-`build_run_device` - Build, install, and launch on physical device. Preferred single-step run tool when defaults are set.
26
+
-`build_run_device` - Build, install, and launch on physical device. Runtime logs are captured automatically and the log file path is included in the response. Preferred single-step run tool when defaults are set.
27
27
-`clean` - Clean build products.
28
28
-`discover_projs` - Scans a directory (defaults to workspace root) to find Xcode project (.xcodeproj) and workspace (.xcworkspace) files. Use when project/workspace path is unknown.
29
29
-`get_app_bundle_id` - Extract bundle id from .app.
@@ -35,18 +35,16 @@ This document lists MCP tool names as exposed to MCP clients. XcodeBuildMCP prov
-`stop_device_log_cap` - Stop device app and return logs.
41
39
-`test_device` - Test on device.
42
40
43
41
44
42
45
43
### iOS Simulator Development (`simulator`)
46
-
**Purpose**: Complete iOS development workflow for both .xcodeproj and .xcworkspace files targeting simulators. (23 tools)
44
+
**Purpose**: Complete iOS development workflow for both .xcodeproj and .xcworkspace files targeting simulators. (20 tools)
47
45
48
46
-`boot_sim` - Defined in Simulator Management workflow.
49
-
-`build_run_sim` - Build, install, and launch on iOS Simulator; boots simulator and attempts to open Simulator.app as needed. Preferred single-step run tool when defaults are set.
47
+
-`build_run_sim` - Build, install, and launch on iOS Simulator; boots simulator and attempts to open Simulator.app as needed. Runtime logs are captured automatically and the log file path is included in the response. Preferred single-step run tool when defaults are set.
50
48
-`build_sim` - Build for iOS sim (compile-only, no launch).
51
49
-`clean` - Defined in iOS Device Development workflow.
52
50
-`discover_projs` - Defined in iOS Device Development workflow.
@@ -55,18 +53,15 @@ This document lists MCP tool names as exposed to MCP clients. XcodeBuildMCP prov
55
53
-`get_file_coverage` - Defined in Code Coverage workflow.
56
54
-`get_sim_app_path` - Get sim built app path.
57
55
-`install_app_sim` - Install app on sim.
58
-
-`launch_app_logs_sim` - Launch sim app with logs.
59
-
-`launch_app_sim` - Launch app on simulator.
56
+
-`launch_app_sim` - Launch app on simulator. Runtime logs are captured automatically and the log file path is included in the response.
60
57
-`list_schemes` - Defined in iOS Device Development workflow.
61
58
-`list_sims` - Defined in Simulator Management workflow.
62
59
-`open_sim` - Defined in Simulator Management workflow.
63
60
-`record_sim_video` - Record sim video.
64
61
-`screenshot` - Capture screenshot.
65
62
-`show_build_settings` - Defined in iOS Device Development workflow.
66
63
-`snapshot_ui` - Print view hierarchy with precise view coordinates (x, y, width, height) for visible elements.
67
-
-`start_sim_log_cap` - Defined in Log Capture workflow.
68
64
-`stop_app_sim` - Stop sim app.
69
-
-`stop_sim_log_cap` - Defined in Log Capture workflow.
70
65
-`test_sim` - Test on iOS sim.
71
66
72
67
@@ -85,16 +80,6 @@ This document lists MCP tool names as exposed to MCP clients. XcodeBuildMCP prov
85
80
86
81
87
82
88
-
### Log Capture (`logging`)
89
-
**Purpose**: Capture and retrieve logs from simulator and device apps. (4 tools)
90
-
91
-
-`start_device_log_cap` - Defined in iOS Device Development workflow.
92
-
-`start_sim_log_cap` - Start sim log capture.
93
-
-`stop_device_log_cap` - Defined in iOS Device Development workflow.
94
-
-`stop_sim_log_cap` - Stop sim app and return logs.
95
-
96
-
97
-
98
83
### macOS Development (`macos`)
99
84
**Purpose**: Complete macOS development workflow for both .xcodeproj and .xcworkspace files. Build, test, deploy, and manage macOS applications. (13 tools)
100
85
@@ -216,10 +201,10 @@ This document lists MCP tool names as exposed to MCP clients. XcodeBuildMCP prov
216
201
217
202
## Summary Statistics
218
203
219
-
-**Canonical Tools**: 82
220
-
-**Total Tools**: 114
221
-
-**Workflow Groups**: 16
204
+
-**Canonical Tools**: 77
205
+
-**Total Tools**: 105
206
+
-**Workflow Groups**: 15
222
207
223
208
---
224
209
225
-
*This documentation is automatically generated by `scripts/update-tools-docs.ts` from the tools manifest. Last updated: 2026-03-16T20:47:13.697Z UTC*
210
+
*This documentation is automatically generated by `scripts/update-tools-docs.ts` from the tools manifest. Last updated: 2026-04-07T11:23:03.868Z UTC*
Copy file name to clipboardExpand all lines: docs/dev/ARCHITECTURE.md
+14-14Lines changed: 14 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,20 +38,20 @@ XcodeBuildMCP is a Model Context Protocol (MCP) server that exposes Xcode operat
38
38
- MCP server created with stdio transport
39
39
- Plugin discovery system initialized
40
40
41
-
3.**Plugin Discovery (Build-Time)**
42
-
-A build-time script (`build-plugins/plugin-discovery.ts`) scans the `src/mcp/tools/` and `src/mcp/resources/`directories
43
-
-It generates `src/core/generated-plugins.ts`and `src/core/generated-resources.ts` with dynamic import maps
44
-
-This approach improves startup performance by avoiding synchronous file system scans and enables code-splitting
45
-
- Tool code is only loaded when needed, reducing initial memory footprint
46
-
47
-
4.**Plugin & Resource Loading (Runtime)**
48
-
-At runtime, `loadPlugins()`and `loadResources()` use the generated loaders from the previous step
49
-
-All workflow loaders are executed at startup to register tools
50
-
- If `XCODEBUILDMCP_ENABLED_WORKFLOWS` is set, only those workflows (plus `session-management`) are registered; `workflow-discovery` is only auto-included when `XCODEBUILDMCP_EXPERIMENTAL_WORKFLOW_DISCOVERY=true`
51
-
52
-
5.**Tool Registration**
53
-
-Discovered tools automatically registered with server using pre-generated maps
54
-
-No manual registration or configuration required
41
+
3.**Manifest-Driven Discovery**
42
+
-YAML manifests in `manifests/tools/`, `manifests/workflows/`, and `manifests/resources/`define all metadata
43
+
-`loadManifest()` reads and validates all YAML files at startup against Zod schemas
44
+
-Tool and resource code modules are dynamically imported on demand
45
+
46
+
4.**Tool & Resource Loading (Runtime)**
47
+
-`registerWorkflowsFromManifest()` selects workflows based on config and predicate context, then dynamically imports tool modules
48
+
-`registerResources()`loads resource manifests, filters by predicates, and dynamically imports resource modules
49
+
-Both systems share the same `PredicateContext` for visibility filtering
50
+
- If `XCODEBUILDMCP_ENABLED_WORKFLOWS` is set, only those workflows (plus `session-management`) are registered; `workflow-discovery` is only auto-included when `XCODEBUILDMCP_EXPERIMENTAL_WORKFLOW_DISCOVERY=true`
51
+
52
+
5.**Tool & Resource Registration**
53
+
-Tools are registered via `server.registerTool()` after manifest-driven workflow selection
54
+
-Resources are registered via `server.resource()` after manifest-driven predicate filtering
55
55
- Environment variables control workflow selection behavior
0 commit comments