Skip to content

Commit 5295de0

Browse files
committed
Update README and CHANGELOG
1 parent 70cc6a0 commit 5295de0

2 files changed

Lines changed: 70 additions & 15 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

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+
39
## [v1.10.0] - 2025-06-10
410
### Added
511
- **App Lifecycle Management**: New tools for stopping running applications

README.md

Lines changed: 64 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,14 @@ A Model Context Protocol (MCP) server that provides Xcode-related tools for inte
2626
- [Installing via Smithery](#installing-via-smithery)
2727
- [MCP Compatibility](#mcp-compatibility)
2828
- [Incremental build support](#incremental-build-support)
29+
- [Dynamic Tools](#dynamic-tools)
30+
- [What is Dynamic Tools?](#what-is-dynamic-tools)
31+
- [How to Enable Dynamic Tools](#how-to-enable-dynamic-tools)
32+
- [Usage Example](#usage-example)
33+
- [Client Compatibility](#client-compatibility)
2934
- [Code Signing for Device Deployment](#code-signing-for-device-deployment)
3035
- [Troubleshooting](#troubleshooting)
3136
- [Diagnostic Tool](#diagnostic-tool)
32-
- [MCP Server Logs](#mcp-server-logs)
3337
- [Privacy](#privacy)
3438
- [What is sent to Sentry?](#what-is-sent-to-sentry)
3539
- [Opting Out of Sentry](#opting-out-of-sentry)
@@ -100,9 +104,8 @@ The XcodeBuildMCP server provides the following tool capabilities:
100104
For clients that support MCP resources XcodeBuildMCP provides efficient URI-based data access:
101105

102106
- **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
106109

107110
## Getting started
108111

@@ -173,6 +176,9 @@ Then configure your MCP client to use mise to install XcodeBuildMCP:
173176
> [!NOTE]
174177
> 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.
175178
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+
176182
#### Installing via Smithery
177183

178184
To install XcodeBuildMCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@cameroncooke/XcodeBuildMCP):
@@ -220,6 +226,60 @@ Example MCP client configuration:
220226
> [!IMPORTANT]
221227
> 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).
222228
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+
223283
## Code Signing for Device Deployment
224284

225285
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:
255315

256316
When reporting issues on GitHub, please include the full output from the diagnostic tool to help with troubleshooting.
257317

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:
261-
262-
Cursor:
263-
```bash
264-
find ~/Library/Application\ Support/Cursor/logs -name "Cursor MCP.log" -exec zip -r matching_logs.zip {} +
265-
```
266-
267-
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-
269318
## Privacy
270319

271320
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

Comments
 (0)