zola-mcp 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  A [Model Context Protocol](https://modelcontextprotocol.io) server that connects Claude to [Zola](https://www.zola.com), giving you natural-language access to your wedding vendors, budget, guest list, seating chart, events, registry, inquiries, and more.
4
4
 
5
5
  > [!WARNING]
6
- > **AI-developed project.** This codebase was entirely built and is actively maintained by [Claude Sonnet 4.6](https://www.anthropic.com/claude). No human has audited the implementation. Review all code and tool permissions before use.
6
+ > **AI-developed project.** This codebase was entirely built and is actively maintained by [Claude Code](https://www.anthropic.com/claude). No human has audited the implementation. Review all code and tool permissions before use.
7
7
 
8
8
  ## What you can do
9
9
 
@@ -22,8 +22,8 @@ Ask Claude things like:
22
22
 
23
23
  - [Claude Desktop](https://claude.ai/download) or [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
24
24
  - [Node.js](https://nodejs.org) 20.6 or later
25
- - A [Zola](https://www.zola.com) account with the Zola iOS app installed (for initial auth setup)
26
- - [mitmproxy](https://mitmproxy.org) (`brew install mitmproxy`) — used once for auth token capture
25
+ - A [Zola](https://www.zola.com) account
26
+ - [Google Chrome](https://www.google.com/chrome/) — used once for the scripted auth flow (optional; you can copy the cookie manually instead)
27
27
 
28
28
  ## Installation
29
29
 
@@ -89,19 +89,29 @@ Add to Claude Desktop config:
89
89
 
90
90
  ### Getting your refresh token
91
91
 
92
- Run the setup script (one-time, token lasts ~1 year):
92
+ Sign in to zola.com and capture the `usr` cookie — a ~1-year JWT that doubles as the refresh token. The token lasts ~1 year; this is a one-time setup.
93
+
94
+ #### Option A — scripted (recommended)
93
95
 
94
96
  ```bash
95
- ./scripts/setup-auth.sh
97
+ npm run auth # prints the token to the console
98
+ npm run auth -- .env # writes ZOLA_REFRESH_TOKEN=<token> to .env
96
99
  ```
97
100
 
98
- This starts [mitmproxy](https://mitmproxy.org) (`brew install mitmproxy`), opens the Zola iOS app, captures the mobile API refresh token, and saves it to `.env`.
101
+ Launches Chrome with a dedicated profile at `~/.zola-mcp/chrome-profile`, waits for you to sign in at `zola.com/account/login`, captures the `usr` cookie (a ~1-year JWT), and either prints it (for pasting into Claude Desktop / MCPB / any config that doesn't read `.env`) or writes it to the file you pass. Requires Google Chrome installed locally; the script will install `puppeteer-core` on first run (~1 MB).
102
+
103
+ #### Option B — manual (DevTools)
104
+
105
+ 1. Sign in at [zola.com/account/login](https://www.zola.com/account/login) in any browser.
106
+ 2. Open DevTools → **Application** → **Cookies** → `https://www.zola.com`.
107
+ 3. Copy the value of the `usr` cookie.
108
+ 4. Paste it into `.env` as `ZOLA_REFRESH_TOKEN=<value>` (or into your Claude config `env` block).
99
109
 
100
- ### 4. Restart Claude Desktop
110
+ ### Restart Claude Desktop
101
111
 
102
112
  Quit completely (Cmd+Q on Mac) and relaunch.
103
113
 
104
- ### 5. Verify
114
+ ### Verify
105
115
 
106
116
  Ask Claude: *"How's wedding planning going?"* — it should show your wedding dashboard.
107
117
 
@@ -111,7 +121,7 @@ Only one credential is required:
111
121
 
112
122
  | Env var | Required | Notes |
113
123
  |---------|----------|-------|
114
- | `ZOLA_REFRESH_TOKEN` | Yes | Mobile API JWT (~1 year lifetime). Run `./scripts/setup-auth.sh` to capture. |
124
+ | `ZOLA_REFRESH_TOKEN` | Yes | Refresh token JWT (~1 year lifetime). Run `npm run auth` to capture via browser login, or copy the `usr` cookie from DevTools. |
115
125
  | `ZOLA_ACCOUNT_ID` | No | Auto-resolved from API on first use |
116
126
  | `ZOLA_REGISTRY_ID` | No | Auto-resolved from API on first use |
117
127
 
@@ -188,9 +198,9 @@ Only one credential is required:
188
198
 
189
199
  ## Troubleshooting
190
200
 
191
- **"ZOLA_REFRESH_TOKEN must be set"** — run `./scripts/setup-auth.sh` to capture your token.
201
+ **"ZOLA_REFRESH_TOKEN must be set"** — run `npm run auth` to capture your token.
192
202
 
193
- **"Zola session refresh failed"** — your refresh token has expired (~1 year). Re-run `./scripts/setup-auth.sh`.
203
+ **"Zola session refresh failed"** — your refresh token has expired (~1 year). Re-run `npm run auth`.
194
204
 
195
205
  **403 from mobile API** — the `x-zola-session-id` header may be missing. Update to the latest version.
196
206
 
package/dist/bundle.js CHANGED
@@ -30265,7 +30265,7 @@ var ZolaClient = class {
30265
30265
  const text = await response.text();
30266
30266
  throw new Error(
30267
30267
  `Zola session refresh failed (${response.status}): ${text}
30268
- To fix: log into the Zola iOS app \u2192 capture refresh token via mitmproxy \u2192 update ZOLA_REFRESH_TOKEN`
30268
+ To fix: run \`npm run auth\` (or \`./scripts/setup-auth.sh\`) to capture a fresh ZOLA_REFRESH_TOKEN via browser login.`
30269
30269
  );
30270
30270
  }
30271
30271
  const result = await response.json();
@@ -30986,7 +30986,7 @@ function registerDiscoverTools(server2) {
30986
30986
  // src/index.ts
30987
30987
  var server = new McpServer({
30988
30988
  name: "zola-mcp",
30989
- version: "1.0.4"
30989
+ version: "1.0.6"
30990
30990
  });
30991
30991
  registerVendorTools(server);
30992
30992
  registerBudgetTools(server);
package/dist/client.js CHANGED
@@ -163,7 +163,7 @@ export class ZolaClient {
163
163
  if (!response.ok) {
164
164
  const text = await response.text();
165
165
  throw new Error(`Zola session refresh failed (${response.status}): ${text}\n` +
166
- 'To fix: log into the Zola iOS app capture refresh token via mitmproxy → update ZOLA_REFRESH_TOKEN');
166
+ 'To fix: run `npm run auth` (or `./scripts/setup-auth.sh`) to capture a fresh ZOLA_REFRESH_TOKEN via browser login.');
167
167
  }
168
168
  const result = (await response.json());
169
169
  const { session_token } = result.data;
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import { registerEventTools } from './tools/events.js';
9
9
  import { registerDiscoverTools } from './tools/discover.js';
10
10
  const server = new McpServer({
11
11
  name: 'zola-mcp',
12
- version: '1.0.4',
12
+ version: '1.0.6',
13
13
  });
14
14
  registerVendorTools(server);
15
15
  registerBudgetTools(server);
package/package.json CHANGED
@@ -1,13 +1,28 @@
1
1
  {
2
2
  "name": "zola-mcp",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Zola wedding MCP server for Claude",
5
- "author": "Claude Sonnet 4.6 (AI) <https://www.anthropic.com/claude>",
5
+ "author": "Claude Code (AI) <https://www.anthropic.com/claude>",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/chrischall/zola-mcp.git"
9
9
  },
10
10
  "license": "MIT",
11
+ "keywords": [
12
+ "mcp",
13
+ "zola",
14
+ "wedding",
15
+ "wedding-planning",
16
+ "model-context-protocol",
17
+ "claude",
18
+ "ai",
19
+ "vendors",
20
+ "registry",
21
+ "guests",
22
+ "budget",
23
+ "seating",
24
+ "rsvp"
25
+ ],
11
26
  "files": [
12
27
  "dist",
13
28
  ".claude-plugin",
@@ -25,6 +40,7 @@
25
40
  "build": "tsc && npm run bundle",
26
41
  "bundle": "esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --outfile=dist/bundle.js",
27
42
  "dev": "node --env-file=.env dist/index.js",
43
+ "auth": "node scripts/setup-auth.mjs",
28
44
  "test": "vitest run",
29
45
  "test:watch": "vitest"
30
46
  },
@@ -36,6 +52,7 @@
36
52
  "@types/node": "^25.5.0",
37
53
  "@vitest/coverage-v8": "^4.1.2",
38
54
  "esbuild": "^0.28.0",
55
+ "puppeteer-core": "^24.0.0",
39
56
  "typescript": "^6.0.2",
40
57
  "vitest": "^4.1.2"
41
58
  }