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 +21 -11
- package/dist/bundle.js +2 -2
- package/dist/client.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +19 -2
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
|
|
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
|
|
26
|
-
- [
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
110
|
+
### Restart Claude Desktop
|
|
101
111
|
|
|
102
112
|
Quit completely (Cmd+Q on Mac) and relaunch.
|
|
103
113
|
|
|
104
|
-
###
|
|
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 |
|
|
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
|
|
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
|
|
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:
|
|
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.
|
|
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:
|
|
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.
|
|
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.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "Zola wedding MCP server for Claude",
|
|
5
|
-
"author": "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
|
}
|