
Zola Mcp
io.github.chrischallPublished by GitHub account chrischallv2.2.2Updated Nov 7, 2026
Zola wedding planning for Claude — vendors, budget, guests, seating, registry, and RSVPs
Overview
Connects Claude to a Zola wedding-planning account so it can read and update vendors, budget, guests, seating, RSVPs, registry and the wedding website.
- What you can do
- Read and manage vendors, budget items and vendor inquiries
- List, add, update and remove guest groups, and track RSVPs and gifts
- View seating charts, list unseated guests and assign seats
- Manage events and which guest groups are invited
- Browse, add, update and reconcile registry items against the gift tracker
- Edit wedding website pages, settings, FAQs, things-to-do, travel, theme, and invitation card projects
- When to use it
- Useful when you plan a wedding on Zola and want to ask questions or make changes in natural language instead of clicking through the site — checking RSVP status, updating a budget line, seating a guest, or editing website content.
- Requirements
- Runs locally via npx or an MCPB bundle; needs Node.js 22 or later, a Zola account, and Claude Desktop or Claude Code. Authentication uses ZOLA_REFRESH_TOKEN (the usr cookie value), or the ContextMint Bridge Chrome extension to read that cookie from a signed-in zola.com tab. Optional variables control the token cache, account/registry/wedding IDs and write-confirmation behavior.
Installation
In SourceWeft
- Open Zola Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Zola MCP
A Model Context Protocol server that connects Claude to Zola, giving you natural-language access to your wedding vendors, budget, guest list, seating chart, events, registry, inquiries, and more.
[!WARNING] AI-developed project. This codebase was entirely built and is actively maintained by Claude Code. No human has audited the implementation. Review all code and tool permissions before use.
What you can do
Ask Claude things like:
- "How's wedding planning going?"
- "Find a photographer in Charlotte, NC"
- "Update the venue cost to $25,000"
- "Who hasn't RSVP'd yet?"
- "Seat Pat at Table 1"
- "Any new vendor messages?"
- "Add my cousin Mike to the guest list"
- "Show me the gift tracker"
Requirements
- Claude Desktop or Claude Code
- Node.js 22 or later
- A Zola account
- For the no-env-var path: the ContextMint Bridge Chrome extension (Safari is not available yet — use Chrome for now)
Acknowledgement of Terms
By using this MCP server, you acknowledge and agree to the following:
1. This server accesses your own Zola account. Auth happens via your own credentials. It does not — and cannot — access anyone else's wedding website, registry, or guest list.
2. Zola's Terms of Use govern your use of this server, just as they govern your direct use of zola.com. The clauses most relevant here:
[You may not use] any hardware or software intended to surreptitiously intercept or otherwise obtain any information… including but not limited to the use of any "scraping" or other data mining techniques, robots or similar data gathering and extraction tools.
And, critically, on agent-acting-as-you: "You are responsible for maintaining the confidentiality of your account and password… You accept full responsibility for all activities that occur under your account and password, even if such actions are undertaken by your Authorized Agent or other third party."
You are agreeing to those terms — read by the maintainer 2026-05-23 — every time you invoke a tool in this server. Zola's ToU is explicit: this MCP acting as your Authorized Agent counts as you.
3. Personal, non-commercial use only. This project is not affiliated with, endorsed by, sponsored by, or in partnership with Zola, Inc. It is a personal automation tool for one couple to manage their own wedding website, registry, vendor research, and guest list. Do not use it to bulk-extract Zola's vendor directory, scrape registries, or compete with Zola.
4. Stability is not guaranteed. This server may call internal Zola endpoints that change without notice. It may break.
5. You accept full responsibility for any consequences of using this server in connection with your Zola account — rate limiting, account warnings, suspension, or any enforcement action. Per Zola's ToU, anything this MCP does under your account is your action — review guest list edits, registry changes, and inquiries before confirming. If Zola objects to your use, stop using this server.
This section is the maintainer's good-faith summary of the terms — it is not legal advice and does not modify or supersede Zola's actual ToU.
Installation
Option A — MCPB (recommended)
Download the latest .mcpb bundle from Releases and install:
You'll be prompted for your ZOLA_REFRESH_TOKEN (see Getting your refresh token below).
Option B — npm
Add to your Claude config (.mcp.json or Claude Desktop config):
Option C — from source
Add to Claude Desktop config:
- Mac:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Getting your refresh token
You have two options. Both produce the same usr cookie value — a ~1-year JWT that doubles as the refresh token.
Option A — ContextMint Bridge (recommended)
-
Install ContextMint Bridge — Chrome: download the chrome zip from the latest release, unzip it, and load it unpacked at
chrome://extensions(Developer mode on). Safari is not available yet (it will ship inside the ContextMint app, which has no public download), so use Chrome for now.ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README (fetchproxy#extension) points to it. Its source is public at nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the
.sha256file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256). -
Sign in at zola.com/account/login in that browser.
-
Leave
ZOLA_REFRESH_TOKENunset in your Claude config.
On the first tool call, the MCP asks the extension for the HttpOnly usr cookie via chrome.cookies.get, then operates direct-to-API from Node — the bridge is never in the hot path.
That cookie is the ~1-year refresh token, so it is cached at $MCP_DATA_DIR/.zola-mcp/refresh-token.json (falling back to $HOME, mode 0600). Later starts read it from there and need no browser at all, which is what makes the server usable on a remote host where none exists. If the API ever rejects the cached token — you signed out, or it aged past its year — it is discarded automatically and the extension is asked again. To re-auth, just sign back in to zola.com. Set ZOLA_TOKEN_CACHE=false to keep nothing on disk and ask the browser every time.
You can opt out of this fallback with ZOLA_DISABLE_FETCHPROXY=1 (e.g. in headless / CI environments where no extension is available).
Option B — manual (DevTools)
- Sign in at zola.com/account/login in any browser.
- Open DevTools → Application → Cookies →
https://www.zola.com. - Copy the value of the
usrcookie. - Paste it into
.envasZOLA_REFRESH_TOKEN=<value>(or into your Claude configenvblock).
Restart Claude Desktop
Quit completely (Cmd+Q on Mac) and relaunch.
Verify
Ask Claude: "How's wedding planning going?" — it should show your wedding dashboard.
Credentials
Available tools
77 tools across 12 areas. The Permission column says what stands between a call and a change:
- Auto — read-only; runs without asking.
- Host prompt — a write. Clients that prompt before non-read-only tools (Claude Code, Claude Desktop) ask you first; the server itself does not, so on a client with no prompt (claude.ai) it runs on the first call.
- Server gate — a write that cannot be undone or that changes what guests see, so the server confirms it itself on every client.
The server-gated writes are remove_guest, update_event, update_wedding_settings, remove_faq, remove_home_section, remove_poi, remove_travel_item, remove_registry_item, set_event_guests and remove_event_invitation (set_event_guests only when it uninvites anyone). Each first shows a preview naming the household, event, item or page content and exactly what changes (for a slug change, the old and new website URL; a registry item on a private or passcode-gated registry, or outside the default collection, is shown by id because only the public page names it), then proceeds only once you approve — see MCP_CONFIRM_MODE above.
Vendors
Budget
Guests
Seating
Inquiries
Events & RSVPs
Registry & Gifts
Wedding website — pages & settings
Wedding website — content (FAQs, home, things to do, travel)
Wedding website — theme
Invitations & save-the-dates
Discovery & health
Upgrading
next release
preview_qrcode now hands the image back through the shared delivery ladder. A normal QR preview is unchanged: one image content block, PNG. What changed are the edge cases:
- An image type is always a bare media type (
image/png, neverimage/png;charset=UTF-8), which a host's image renderer would reject. - A non-image type that Zola might return comes back as an embedded
resourceblock locally (it was mislabelled as animageblock), and as a download link on a hosted install. - An image over 10 MiB is never inlined. On a hosted install it comes back as one text block of JSON,
{ via: "link", fileName, mimeType, sizeBytes, url, expiresAt, note }, whereurlis a signed link that expires atexpiresAt. With no blob store the tool fails with atoo_largeerror.
Troubleshooting
"Zola auth: set ZOLA_REFRESH_TOKEN, or install the ContextMint Bridge extension…" — either set ZOLA_REFRESH_TOKEN in your config or install the ContextMint Bridge extension and sign into zola.com.
"Zola session refresh failed" — your refresh token has expired (~1 year) or been revoked. Either capture a new usr cookie (DevTools) or sign back into zola.com with the ContextMint Bridge extension installed.
403 from mobile API — the x-zola-session-id header may be missing. Update to the latest version.
Tools not appearing in Claude — go to Claude Desktop → Settings → Developer to see connected servers. Make sure you fully quit and relaunched after editing the config.
Security
- The refresh token lives only in your local
.envor config file (when set) or in the user's browser cookie store (fetchproxy path) - It is passed as an environment variable and never logged
- The server authenticates with Zola's mobile API using the same flow as the iOS app
- Account and registry IDs are auto-resolved from the API (no manual configuration needed)
Development
Project structure
Auth flow
All tools use the Zola mobile API (mobile-api.zola.com) with Bearer JWT auth:
POST /v3/sessions/refreshwith refresh token JWT → returns 30-min session token- All API calls use
Authorization: Bearer <session_token>+x-zola-session-idheader - On 401, auto-refreshes and retries once
- Session tokens are cached for their lifetime (30 min)
Building the MCPB bundle
The .mcpb bundle is built automatically by the Release workflow when a version tag is pushed. To build locally:
This produces zola-mcp.mcpb using the configuration in manifest.json. The bundle includes the compiled dist/bundle.js and user config prompts for ZOLA_REFRESH_TOKEN.
Releasing
Releases are automated via GitHub Actions:
- Run the Cut & Bump workflow (manual trigger) — tags the current version and bumps patch
- The tag push triggers the Release workflow which:
- Runs CI (build + test)
- Packages
.skilland.mcpbbundles - Publishes to npm
- Creates a GitHub Release with the bundles
License
MIT
Source: README.md at commit f089e06
Tools
0Version history
17- v2.2.2LatestNov 7, 2026
- v2.2.1Nov 5, 2026
- v2.2.0Nov 4, 2026
- v2.1.12Nov 3, 2026
- v2.1.11Oct 16, 2026
- v2.1.10Oct 10, 2026
- v2.1.9Oct 7, 2026
- v2.1.8Oct 5, 2026
- v2.1.7Oct 3, 2026
- v2.1.5Sep 28, 2026
- v2.1.4Sep 25, 2026
- v2.1.3Sep 23, 2026
- v2.1.2Sep 23, 2026
- v2.1.1Sep 21, 2026
- v2.1.0Sep 20, 2026
- v2.0.0Sep 19, 2026
- v1.12.4Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts