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
Fixes:
* When `XCODEBUILDMCP_DEBUG` was true the `doctor` workflow doesn't load
* Doctor tool doesn't reflect run-time tool loading state
* Session-defaults tools not loaded implicitly when selective workflows are configured
-**Behavior**: Only the `discover_tools` tool is available initially. You can use this tool by providing a natural language task description. The server then uses an LLM call (via MCP Sampling) to identify the most relevant workflow group and dynamically loads only those tools. This conserves context window space.
129
+
XcodeBuildMCP loads tools at startup. To limit the toolset, set `XCODEBUILDMCP_ENABLED_WORKFLOWS` to a comma-separated list of workflow directory names (for example: `simulator,project-discovery`). The `session-management` workflow is always auto-included since other tools depend on it.
138
130
139
131
#### Claude Code Compatibility Workaround
140
132
-**Detection**: Automatic detection when running under Claude Code.
@@ -143,7 +135,7 @@ XcodeBuildMCP has two modes to manage its extensive toolset, controlled by the `
143
135
144
136
### Core Architecture Layers
145
137
1.**MCP Transport**: stdio protocol communication
146
-
2.**Plugin Discovery**: Automatic tool AND resource registration system
138
+
2.**Plugin Discovery**: Automatic tool AND resource registration system
147
139
3.**MCP Resources**: URI-based data access (e.g., `xcodebuildmcp://simulators`)
Copy file name to clipboardExpand all lines: CHANGELOG.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,9 @@
1
1
# Changelog
2
2
3
+
## [1.16.0] - 2025-12-30
4
+
- Remove dynamic tool discovery (`discover_tools`) and `XCODEBUILDMCP_DYNAMIC_TOOLS`. Use `XCODEBUILDMCP_ENABLED_WORKFLOWS` to limit startup tool registration.
-[Code Signing for Device Deployment](#code-signing-for-device-deployment)
37
32
-[Troubleshooting](#troubleshooting)
@@ -215,56 +210,11 @@ Example MCP configuration:
215
210
> [!IMPORTANT]
216
211
> Please note that incremental builds support is currently highly experimental and your mileage may vary. Please report any issues you encounter to the [issue tracker](https://github.com/cameroncooke/XcodeBuildMCP/issues).
217
212
218
-
## Dynamic Tools
213
+
## Workflow Selection
219
214
220
-
XcodeBuildMCP supports dynamic tool loading to optimize context window usage in AI assistants. This feature is particularly useful for managing the extensive toolset that XcodeBuildMCP provides.
221
-
222
-
### What is Dynamic Tools?
223
-
224
-
By default, XcodeBuildMCP loads all available tools at startup (Static Mode), which provides immediate access to the complete toolset but uses a larger context window. Dynamic Tools mode solves this by:
225
-
226
-
1.**Starting minimal**: Only essential tools like `discover_tools` and `discover_projs` are available initially
227
-
2.**AI-powered discovery**: When an AI agent identifies XcodeBuildMCP can help with development tasks, it automatically uses the `discover_tools` tool
228
-
3.**Intelligent loading**: The server uses an LLM call to identify the most relevant workflow group and dynamically loads only those tools
229
-
4.**Context efficiency**: Reduces the initial context footprint from the entire list of tools to just 2 discovery tools while maintaining full functionality
230
-
231
-
### How to Enable Dynamic Tools
232
-
233
-
To enable dynamic tools, set the `XCODEBUILDMCP_DYNAMIC_TOOLS` environment variable to `true`:
215
+
By default, XcodeBuildMCP loads all tools at startup. If you want a smaller tool surface for a specific workflow, set `XCODEBUILDMCP_ENABLED_WORKFLOWS` to a comma-separated list of workflow directory names. The `session-management` workflow is always auto-included since other tools depend on it.
234
216
235
217
Example MCP client configuration:
236
-
```json
237
-
"XcodeBuildMCP": {
238
-
...
239
-
"env": {
240
-
"XCODEBUILDMCP_DYNAMIC_TOOLS": "true"
241
-
}
242
-
}
243
-
```
244
-
245
-
### Usage Example
246
-
247
-
Once enabled, AI agents automatically discover and load relevant tools based on context. For example, when you mention working on an iOS app or the agent detects iOS development tasks in your workspace, it will automatically use the `discover_tools` tool to load the appropriate simulator and project tools needed for your workflow.
248
-
249
-
### Client Compatibility
250
-
251
-
Dynamic Tools requires MCP clients that support **MCP Sampling** for the AI-powered tool discovery to function:
252
-
253
-
| Editor | Dynamic Tools Support |
254
-
|--------|----------------------|
255
-
|**VS Code**| ✅ |
256
-
|**Cursor**| ❌ (No MCP Sampling) |
257
-
|**Windsurf**| ❌ (No MCP Sampling) |
258
-
|**Claude Code**| ❌ (No MCP Sampling) |
259
-
|**Claude Desktop**| ❌ (No MCP Sampling) |
260
-
261
-
> [!NOTE]
262
-
> For clients that don't support MCP Sampling, XcodeBuildMCP will automatically fall back to Static Mode, loading all tools at startup regardless of the `XCODEBUILDMCP_DYNAMIC_TOOLS` setting.
263
-
264
-
### Selective Workflow Loading (Static Mode)
265
-
266
-
For clients that don't support MCP Sampling but still want to reduce context window usage, you can selectively load only specific workflows using the `XCODEBUILDMCP_ENABLED_WORKFLOWS` environment variable:
267
-
268
218
```json
269
219
"XcodeBuildMCP": {
270
220
...
@@ -275,21 +225,17 @@ For clients that don't support MCP Sampling but still want to reduce context win
275
225
```
276
226
277
227
**Available Workflows:**
278
-
-`device` (14 tools) - iOS Device Development
279
-
-`simulator` (18 tools) - iOS Simulator Development
> The `XCODEBUILDMCP_ENABLED_WORKFLOWS` setting only works in Static Mode. If `XCODEBUILDMCP_DYNAMIC_TOOLS=true` is set, the selective workflow setting will be ignored.
0 commit comments