Skip to main content
Glama
sanatillayev

xcode-build-optimizer-mcp

by sanatillayev
README.md
# xcode-build-optimizer-mcp

An MCP server for deterministic Xcode build-time optimization: build-timing
analysis, DerivedData/module-cache management, and build-speed config
linting — for AI coding agents (Claude Code, Claude Desktop, and other MCP
clients).

This is deliberately *not* a build/test/simulator orchestration tool — use
it alongside [XcodeBuildMCP](https://github.com/cameroncooke/XcodeBuildMCP)
or any other build runner.

## Install

```
npx xcode-build-optimizer-mcp
```

Add to your MCP client config (e.g. Claude Code `~/.claude.json` or Claude
Desktop `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "xcode-build-optimizer": {
      "command": "npx",
      "args": ["xcode-build-optimizer-mcp"]
    }
  }
}
```

## Tools

| Tool | Purpose |
| --- | --- |
| `build_run` | Run an instrumented `xcodebuild` build; returns structured errors/warnings and a `buildId`. |
| `build_timing_report` | Ranked slow build task categories/functions/expressions for a `build_run` result. |
| `cache_inspect` | DerivedData/module-cache size, staleness, and bloat report. |
| `cache_clean` | Delete a specific cache path reported by `cache_inspect` (requires `confirm: true`). |
| `config_lint` | Scan `.pbxproj`/`.xcconfig` for 8 known build-speed anti-patterns. |

## Requirements

- macOS with Xcode Command Line Tools installed.
- Node.js >= 20.

For per-expression timing, pass `deep: true` to `build_run`; `build_timing_report`
then reports `deepSource: "debug-time-function-bodies"`.

> **Not yet implemented:** an opportunistic
> [XCLogParser](https://github.com/MobileNativeFoundation/XCLogParser) enhancement
> was prototyped but is **not** wired up in v0.1 — its JSON output shape and the
> `.xcactivitylog` naming convention it depends on have not been verified against
> a real XCLogParser install. `build_timing_report` never invokes `xclogparser`,
> whether or not it is on `PATH`.

## Contributing

Issues and PRs welcome. Run `npm test` before submitting; `npm run test:integration` additionally requires a full Xcode install and runs a real build against the fixture project in `test/integration/`.

## License

MIT

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: build execution, cache inspection, cache cleanup, timing analysis, and config linting. No overlap in functionality, and the descriptions further distinguish their roles.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (build_run, cache_inspect, cache_clean, build_timing_report, config_lint). This is uniform and predictable, making tool selection straightforward.

Tool Count5/5

Five tools is well-scoped for an Xcode build optimizer server. Each tool serves a distinct part of the optimization workflow without redundancy, and the count feels neither thin nor overwhelming for the purpose.

Completeness4/5

The tool set covers the primary lifecycle: running builds, inspecting and cleaning caches, analyzing timing, and linting configs. A minor gap is the absence of a tool to directly apply optimizations (e.g., modify configs), but the existing tools enable identification and manual fixes.

Maintenance

ActivitySlowing
ResponsivenessNo issues