Skip to content

Commit 9ead85b

Browse files
cameroncookeclaude
andcommitted
docs: Unify installation sections and update for v2.0.0 stable
Restructure README and GETTING_STARTED installation sections into two clear paths (Homebrew vs npm/npx) with a single-package intro. Replace all stale @beta references with @latest to match the 2.0.0 stable release. Add Homebrew substitution note before client-specific config sections. Document AXe local bundling and release workflow modes. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 8e8fcc2 commit 9ead85b

5 files changed

Lines changed: 119 additions & 39 deletions

File tree

README.md

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,52 @@ A Model Context Protocol (MCP) server and CLI that provides tools for agent use
77

88
## Installation
99

10-
### CLI Installation
10+
XcodeBuildMCP ships as a single package with two modes: a **CLI** for direct terminal use and an **MCP server** for AI coding agents. Both installation methods give you both modes.
11+
12+
### Option A — Homebrew
1113

1214
```bash
13-
npm install -g xcodebuildmcp@latest
15+
brew tap cameroncooke/xcodebuildmcp
16+
brew install xcodebuildmcp
17+
```
18+
19+
Use the CLI:
20+
```bash
1421
xcodebuildmcp --help
1522
```
1623

17-
### MCP Server Installation
24+
MCP client config:
25+
```json
26+
"XcodeBuildMCP": {
27+
"command": "xcodebuildmcp",
28+
"args": ["mcp"]
29+
}
30+
```
31+
32+
Upgrade later with `brew update && brew upgrade xcodebuildmcp`.
1833

19-
Add XcodeBuildMCP to your MCP client configuration. Most clients use JSON configuration with the following server entry:
34+
### Option B — npm / npx (Node.js 18+)
2035

36+
**For CLI use**, install globally:
37+
```bash
38+
npm install -g xcodebuildmcp@latest
39+
xcodebuildmcp --help
40+
```
41+
42+
**For MCP server only**, no global install needed — add directly to your client config:
2143
```json
2244
"XcodeBuildMCP": {
2345
"command": "npx",
2446
"args": ["-y", "xcodebuildmcp@latest", "mcp"]
2547
}
2648
```
2749

50+
To pin a specific version, replace `@latest` with an exact version (e.g. `xcodebuildmcp@2.0.0`).
51+
52+
### Client-specific setup
53+
54+
The examples below use npx (Option B). If you installed via Homebrew, replace the command with `"command": "xcodebuildmcp", "args": ["mcp"]` instead.
55+
2856
<details>
2957
<summary>Cursor</summary>
3058
<br />
@@ -188,7 +216,7 @@ Add XcodeBuildMCP to your MCP client configuration. Most clients use JSON config
188216
tool_timeout_sec = 10000
189217
```
190218

191-
> **NOTE**:
219+
> **NOTE**:
192220
> Codex Agent when running in Xcode has a limited PATH by default. The above example should work for most users but if you find the server doesn't start or is not available, it's likely because npx is not found so you might have to adjust the above configuration accordingly.
193221
194222
<br />
@@ -217,23 +245,21 @@ Add XcodeBuildMCP to your MCP client configuration. Most clients use JSON config
217245
}
218246
```
219247

220-
> **NOTE**:
248+
> **NOTE**:
221249
> Claude Code Agent when running in Xcode has a limited PATH by default. The above example should work for most users but if you find the server doesn't start or is not available, it's likely because npx is not found so you might have to adjust the above configuration accordingly.
222250
223251
<br />
224252
</details>
225253

226254
<br />
227255

228-
For other installation options see [Getting Started](docs/GETTING_STARTED.md)
229-
230-
When configuring a client manually, ensure the command includes the `mcp` subcommand (for example, `npx -y xcodebuildmcp@latest mcp`).
256+
For other installation options see [Getting Started](docs/GETTING_STARTED.md).
231257

232258
## Requirements
233259

234260
- macOS 14.5 or later
235261
- Xcode 16.x or later
236-
- Node.js 18.x or later
262+
- Node.js 18.x or later (not required for Homebrew installation)
237263

238264
## Skills
239265

docs/GETTING_STARTED.md

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
## Prerequisites
44
- macOS 14.5 or later
55
- Xcode 16.x or later
6-
- Node.js 18.x or later
6+
- Node.js 18.x or later (not required for Homebrew installation)
77

88
## Choose Your Interface
99

@@ -16,40 +16,50 @@ XcodeBuildMCP provides a unified CLI with two modes:
1616

1717
Both share the same tools and configuration.
1818

19-
## MCP Server Installation
19+
## Installation
2020

21-
Most MCP clients use JSON configuration. Add the following server entry to your client's MCP config:
21+
Both methods give you the CLI and the MCP server.
2222

23+
### Option A — Homebrew (no Node.js required)
24+
25+
```bash
26+
brew tap cameroncooke/xcodebuildmcp
27+
brew install xcodebuildmcp
28+
```
29+
30+
Use the CLI:
31+
```bash
32+
xcodebuildmcp --help
33+
```
34+
35+
MCP client config:
2336
```json
2437
"XcodeBuildMCP": {
25-
"command": "npx",
26-
"args": [
27-
"-y",
28-
"xcodebuildmcp@beta",
29-
"mcp"
30-
]
38+
"command": "xcodebuildmcp",
39+
"args": ["mcp"]
3140
}
3241
```
3342

34-
## CLI Installation
35-
36-
```bash
37-
# Install globally
38-
npm install -g xcodebuildmcp@beta
39-
40-
# Verify installation
41-
xcodebuildmcp --version
43+
Upgrade later with `brew update && brew upgrade xcodebuildmcp`.
4244

43-
# List available tools
44-
xcodebuildmcp tools
45+
### Option B — npm / npx (Node.js 18+)
4546

46-
# View CLI help
47+
**For CLI use**, install globally:
48+
```bash
49+
npm install -g xcodebuildmcp@latest
4750
xcodebuildmcp --help
51+
```
4852

49-
# View tool help
50-
xcodebuildmcp <workflow> <tool> --help
53+
**For MCP server only**, no global install needed — add directly to your client config:
54+
```json
55+
"XcodeBuildMCP": {
56+
"command": "npx",
57+
"args": ["-y", "xcodebuildmcp@latest", "mcp"]
58+
}
5159
```
5260

61+
Using `@latest` ensures clients resolve the newest version on each run.
62+
5363
See [CLI.md](CLI.md) for full CLI documentation.
5464

5565
## Project config (optional)
@@ -63,6 +73,8 @@ See [CONFIGURATION.md](CONFIGURATION.md) for the full schema and examples.
6373

6474
## Client-specific configuration
6575

76+
The examples below use npx (Option B). If you installed via Homebrew, replace the command with `"command": "xcodebuildmcp", "args": ["mcp"]` instead.
77+
6678
### Cursor
6779
Recommended (project-scoped): create `.cursor/mcp.json` in your project root:
6880

@@ -71,7 +83,7 @@ Recommended (project-scoped): create `.cursor/mcp.json` in your project root:
7183
"mcpServers": {
7284
"XcodeBuildMCP": {
7385
"command": "npx",
74-
"args": ["-y", "xcodebuildmcp@beta", "mcp"]
86+
"args": ["-y", "xcodebuildmcp@latest", "mcp"]
7587
}
7688
}
7789
}
@@ -86,7 +98,7 @@ If you use a global Cursor config at `~/.cursor/mcp.json`, use this variant to a
8698
"command": "/bin/zsh",
8799
"args": [
88100
"-lc",
89-
"cd \"${workspaceFolder}\" && exec npx -y xcodebuildmcp@beta mcp"
101+
"cd \"${workspaceFolder}\" && exec npx -y xcodebuildmcp@latest mcp"
90102
]
91103
}
92104
}
@@ -99,7 +111,7 @@ Codex uses TOML for MCP configuration. Add this to `~/.codex/config.toml`:
99111
```toml
100112
[mcp_servers.XcodeBuildMCP]
101113
command = "npx"
102-
args = ["-y", "xcodebuildmcp@beta", "mcp"]
114+
args = ["-y", "xcodebuildmcp@latest", "mcp"]
103115
env = { "XCODEBUILDMCP_SENTRY_DISABLED" = "false" }
104116
```
105117

@@ -115,10 +127,10 @@ https://github.com/openai/codex/blob/main/docs/config.md#connecting-to-mcp-serve
115127
### Claude Code CLI
116128
```bash
117129
# Add XcodeBuildMCP server to Claude Code
118-
claude mcp add XcodeBuildMCP -- npx -y xcodebuildmcp@beta mcp
130+
claude mcp add XcodeBuildMCP -- npx -y xcodebuildmcp@latest mcp
119131

120132
# Or with environment variables
121-
claude mcp add XcodeBuildMCP -e XCODEBUILDMCP_SENTRY_DISABLED=false -- npx -y xcodebuildmcp@beta mcp
133+
claude mcp add XcodeBuildMCP -e XCODEBUILDMCP_SENTRY_DISABLED=false -- npx -y xcodebuildmcp@latest mcp
122134
```
123135

124136
Note: XcodeBuildMCP requests xcodebuild to skip macro validation to avoid Swift Macro build errors.

docs/dev/CONTRIBUTING.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,22 @@ brew tap cameroncooke/axe
5151
brew install axe
5252
```
5353

54+
#### Optional: Using a Local AXe Checkout for Bundling
55+
56+
`npm run bundle:axe` defaults to downloading pinned AXe release artifacts from GitHub.
57+
58+
To bundle from a local AXe source checkout instead:
59+
60+
```bash
61+
AXE_USE_LOCAL=1 AXE_LOCAL_DIR=/absolute/path/to/AXe npm run bundle:axe
62+
```
63+
64+
Rules:
65+
- Local mode is enabled only when `AXE_USE_LOCAL=1`.
66+
- `AXE_LOCAL_DIR` must point to a valid AXe repository (must contain `Package.swift`).
67+
- If `AXE_USE_LOCAL=1` and `AXE_LOCAL_DIR` is missing/invalid, bundling fails fast.
68+
- `AXE_FORCE_REMOTE=1` overrides local mode and forces remote artifact download.
69+
5470
### Installation
5571

5672
1. Clone the repository

docs/dev/RELEASE_PROCESS.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,35 @@ If the latest changelog section is `## [Unreleased]` and no matching version hea
1414
Preview release notes locally:
1515

1616
```bash
17-
node scripts/generate-github-release-notes.mjs --version 2.0.0-beta.1
17+
node scripts/generate-github-release-notes.mjs --version 2.0.0
1818
```
1919

20+
## Release Workflow Modes
21+
22+
The release workflow (`.github/workflows/release.yml`) has two execution modes:
23+
24+
### Tag push (`push` on `v*`)
25+
26+
Production release behavior:
27+
- Publishes package to npm.
28+
- Creates GitHub release and uploads npm tarball.
29+
- Builds and verifies portable macOS artifacts (`arm64`, `x64`, `universal`).
30+
- Uploads portable artifacts to GitHub release assets.
31+
- Updates the Homebrew tap repository (`cameroncooke/homebrew-xcodebuildmcp`) directly when `HOMEBREW_TAP_TOKEN` is configured.
32+
- Attempts Smithery and MCP Registry publishes (best effort based on configured secrets).
33+
34+
### Manual dispatch (`workflow_dispatch`)
35+
36+
Validation behavior only (no production deployment):
37+
- Runs formatting/build/tests and packaging checks.
38+
- Runs npm publish in `--dry-run` mode.
39+
- Builds and verifies portable artifacts for release-pipeline validation.
40+
- Does **not** publish to npm.
41+
- Does **not** create GitHub release.
42+
- Does **not** upload portable assets to a release.
43+
- Does **not** update Homebrew tap.
44+
- Does **not** run Smithery or MCP Registry publish jobs.
45+
2046
## Step-by-Step Development Workflow
2147

2248
### 1. Starting New Work

src/version.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export const version = '2.0.0-beta.1';
1+
export const version = '2.0.0';
22
export const iOSTemplateVersion = 'v1.0.8';
33
export const macOSTemplateVersion = 'v1.0.5';

0 commit comments

Comments
 (0)