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
Copy file name to clipboardExpand all lines: CHANGELOG.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,11 @@
1
1
# Changelog
2
2
3
+
## [v1.11.0] - 2025-08-07
4
+
- Major refactor/rewrite to improve code quality and maintainability in preparation for future development
5
+
- Added support for dynamic tools (VSCode only for now)
6
+
- Added support for MCP Resources (devices, simulators, environment info)
7
+
- Workaround for https://github.com/cameroncooke/XcodeBuildMCP/issues/66 and https://github.com/anthropics/claude-code/issues/1804 issues where Claude Code would only see the first text content from tool responses
8
+
3
9
## [v1.10.0] - 2025-06-10
4
10
### Added
5
11
-**App Lifecycle Management**: New tools for stopping running applications
-[How to Enable Dynamic Tools](#how-to-enable-dynamic-tools)
32
+
-[Usage Example](#usage-example)
33
+
-[Client Compatibility](#client-compatibility)
29
34
-[Code Signing for Device Deployment](#code-signing-for-device-deployment)
30
35
-[Troubleshooting](#troubleshooting)
31
36
-[Diagnostic Tool](#diagnostic-tool)
32
-
-[MCP Server Logs](#mcp-server-logs)
33
37
-[Privacy](#privacy)
34
38
-[What is sent to Sentry?](#what-is-sent-to-sentry)
35
39
-[Opting Out of Sentry](#opting-out-of-sentry)
@@ -100,9 +104,8 @@ The XcodeBuildMCP server provides the following tool capabilities:
100
104
For clients that support MCP resources XcodeBuildMCP provides efficient URI-based data access:
101
105
102
106
-**Simulators Resource** (`xcodebuildmcp://simulators`): Direct access to available iOS simulators with UUIDs and states
103
-
104
-
> [!IMPORTANT]
105
-
> Please note that XcodeBuildMCP will request xcodebuild to skip macro validation. This is to avoid errors when building projects that use Swift Macros.
107
+
-**Devices Resource** (`xcodebuildmcp://devices`): Direct access to connected physical Apple devices with UDIDs and states
108
+
-**Environment Resource** (`xcodebuildmcp://environment`): Direct access to environment information such as Xcode version, macOS version, and Node.js version
106
109
107
110
## Getting started
108
111
@@ -173,6 +176,9 @@ Then configure your MCP client to use mise to install XcodeBuildMCP:
173
176
> [!NOTE]
174
177
> When using mise avoid using the @latest tag as mise will cache the package and may not update to the latest version automatically, instead prefer an explicit version number.
175
178
179
+
> [!IMPORTANT]
180
+
> Please note that XcodeBuildMCP will request xcodebuild to skip macro validation. This is to avoid errors when building projects that use Swift Macros.
181
+
176
182
#### Installing via Smithery
177
183
178
184
To install XcodeBuildMCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@cameroncooke/XcodeBuildMCP):
@@ -220,6 +226,60 @@ Example MCP client configuration:
220
226
> [!IMPORTANT]
221
227
> 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).
222
228
229
+
## Dynamic Tools
230
+
231
+
XcodeBuildMCP supports dynamic tool loading to optimize context window usage in AI assistants. This feature is particularly useful for managing the extensive toolset (80+ tools) that XcodeBuildMCP provides.
232
+
233
+
### What is Dynamic Tools?
234
+
235
+
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:
236
+
237
+
1.**Starting minimal**: Only essential tools like `discover_tools` and `discover_projs` are available initially
238
+
2.**AI-powered discovery**: When an AI agent identifies XcodeBuildMCP can help with development tasks, it automatically uses the `discover_tools` tool
239
+
3.**Intelligent loading**: The server uses an LLM call to identify the most relevant workflow group and dynamically loads only those tools
240
+
4.**Context efficiency**: Reduces the initial context footprint from 80+ tools to just 2 discovery tools while maintaining full functionality
241
+
242
+
### How to Enable Dynamic Tools
243
+
244
+
To enable dynamic tools, set the `XCODEBUILDMCP_DYNAMIC_TOOLS` environment variable to `true`:
245
+
246
+
Example MCP client configuration:
247
+
```json
248
+
{
249
+
"mcpServers": {
250
+
"XcodeBuildMCP": {
251
+
"command": "npx",
252
+
"args": [
253
+
"-y",
254
+
"xcodebuildmcp@latest"
255
+
],
256
+
"env": {
257
+
"XCODEBUILDMCP_DYNAMIC_TOOLS": "true"
258
+
}
259
+
}
260
+
}
261
+
}
262
+
```
263
+
264
+
### Usage Example
265
+
266
+
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.
267
+
268
+
### Client Compatibility
269
+
270
+
Dynamic Tools requires MCP clients that support **MCP Sampling** for the AI-powered tool discovery to function:
271
+
272
+
| Editor | Dynamic Tools Support |
273
+
|--------|----------------------|
274
+
|**VS Code**| ✅ |
275
+
|**Cursor**| ❌ (No MCP Sampling) |
276
+
|**Windsurf**| ❌ (No MCP Sampling) |
277
+
|**Claude Code**| ❌ (No MCP Sampling) |
278
+
|**Claude Desktop**| ❌ (No MCP Sampling) |
279
+
280
+
> [!NOTE]
281
+
> 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.
282
+
223
283
## Code Signing for Device Deployment
224
284
225
285
For device deployment features to work, code signing must be properly configured in Xcode **before** using XcodeBuildMCP device tools:
@@ -255,17 +315,6 @@ The diagnostic tool will output comprehensive information about:
255
315
256
316
When reporting issues on GitHub, please include the full output from the diagnostic tool to help with troubleshooting.
257
317
258
-
### MCP Server Logs
259
-
260
-
It can be helpful to have access to the log messages from the MCP server to identify any issues. The logs are captured by the client application, for example in Cursor:
If your MCP client doesn't have log files you can run the server directly using the MCP Inspector tool see [Debugging](docs/CONTRIBUTING.md#debugging) for more information on how to do this. Once running the MCP tool prints all log messages to it's error pane, which can be helpful in diagnosing issues.
268
-
269
318
## Privacy
270
319
271
320
This project uses [Sentry](https://sentry.io/) for error monitoring and diagnostics. Sentry helps us track issues, crashes, and unexpected errors to improve the reliability and stability of XcodeBuildMCP.
0 commit comments