Swizzler MCP
Reads the Swizzler cocktail library snapshot that the Swizzler iOS app publishes to the user's private iCloud Drive folder (Library.swizzle), providing tools to search recipes by name, ingredient, spirit, collection or favourite, fetch a drink's full spec, list collections, check what can be made from the bottles on hand (and what's missing), view the Next Round queue, and review recipe history and ratings. Tool results report the snapshot's age so staleness from multi-device sync is visible.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Swizzler MCP what can I make with bourbon, sweet vermouth, and Campari?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
swizzler-mcp
An MCP server that lets an AI assistant read your Swizzler cocktail library — search recipes, pull up a spec, work out what you can make from the bottles on your shelf, and look at what you've actually been drinking. Works with Claude, Codex, and other MCP-compatible clients.
Read-only. Nothing here can change your library.
The iOS app is closed source; this server is not. It is the piece that runs on your own Mac and touches your recipe data, so it is the piece worth being able to read.
How it works
Swizzler stores recipes on-device in SwiftData, synced through your private CloudKit database. Neither of those is reachable from a desktop MCP server, so the app publishes a snapshot instead: turn on Settings → AI Assistants → Share Library, and Swizzler writes a photo-free copy of your library to its own iCloud Drive folder. This server reads that file from your Mac.
iPhone/iPad ──SwiftData──> private CloudKit (app's own sync, untouched)
│
└──snapshot──> iCloud Drive/Swizzler/Library.swizzle ──> swizzler-mcp ──> ClaudeFreshness
The snapshot only refreshes while Swizzler is running — it rewrites on every edit and when the app goes to the background. In practice that covers the single-device case completely, because your library can only change while the app is open in front of you.
Where it can lag is multi-device: edit on your iPad, then ask Claude on your Mac without
opening Swizzler on any device that has synced. So every tool result states the
snapshot's age, and past 24 hours it says so with a warning rather than answering as if
the data were current. Ask Claude to check snapshot_status any time you want to know.
Related MCP server: Bar Assistant MCP Server
Install
One command, the same for every client. It runs straight from npm — nothing to download, build, or keep up to date.
Claude Code
claude mcp add swizzler -- npx -y swizzler-mcpCodex
codex mcp add swizzler -- npx -y swizzler-mcpClaude Desktop — add this to claude_desktop_config.json:
{
"mcpServers": {
"swizzler": {
"command": "npx",
"args": ["-y", "swizzler-mcp"]
}
}
}Anything else that speaks MCP — run npx -y swizzler-mcp over stdio.
Node 20 or newer is the only requirement, and npx ships with it.
From a clone
git clone https://github.com/chrisscott/swizzler-mcp.git
cd swizzler-mcp
npm install
npm run build
claude mcp add swizzler -- node "$PWD/dist/index.js"By default it reads:
~/Library/Mobile Documents/iCloud~com~getswizzler~app/Documents/Library.swizzleSet SWIZZLER_LIBRARY_PATH to point somewhere else.
Tools
Tool | What it answers |
| How current is this data, and where did it come from? |
| Why are recipes missing or stale? Checks iCloud Drive on this Mac. |
| By name, ingredient, spirit, collection, or favourites |
| The full spec for one drink |
| The Next Round queue — what you've lined up to make |
| Your collections and their sizes |
| Given these bottles, what's within reach (and what's missing)? |
| What you've actually made, how often, and how you rated it |
Smart collections
Smart collections have no stored membership — the app evaluates their rules at query time. The snapshot resolves them into concrete memberships before writing, so the rule engine stays in Swift rather than being reimplemented here and drifting. Backup exports keep them as rules, so re-importing restores a smart collection rather than freezing today's matches.
Tests
npm testDrives the built server over stdio with a real MCP client against fixture libraries, covering search, detail rendering, staleness warnings, and the missing-snapshot path.
Releasing
On a v* tag, .github/workflows/release.yml runs the suite, creates a GitHub release,
and publishes to npm. npm is the only distribution channel — there is no download.
# bump the version in package.json first — the workflow fails the build if it
# disagrees with the tag
git tag v0.2.0 && git push --tagsnpm publishing uses OIDC trusted publishing, so there is no token in the repo. It needs
one-time setup on npmjs.com under the package's Settings → Trusted Publisher: repository
chrisscott/swizzler-mcp, workflow release.yml. That can only be configured for a
package that already exists, so the very first publish has to be done by hand.
A version already on the registry is skipped rather than failing the run, so re-running a release is safe.
workflow_dispatch runs the same build and tests without publishing, which is the way to
check the pipeline before tagging.
Troubleshooting
"No Swizzler library snapshot at …" — Check three things, in this order:
iCloud Drive is on for this Mac. System Settings → your name → iCloud → iCloud Drive. If it is off, nothing syncs down at all and
~/Library/Mobile Documents/will hold only an emptycom~apple~CloudDocs. To check from a terminal:defaults read MobileMeAccounts | grep -A2 MOBILE_DOCUMENTSEnabled = 0means iCloud Drive is off.Sharing is on in the app. Settings → AI Assistants → Share Library. The status row underneath reports what the last write actually did.
The snapshot has been published since you turned it on. Background the app to force a write, then give iCloud a minute.
The Swizzler folder doesn't appear in Finder — iOS caches the NSUbiquitousContainers
key, so the folder sometimes only shows up after the app's build number changes.
Recipes look out of date — Open Swizzler on the device you last edited on. The snapshot is republished when the app backgrounds.
Available Tools
8 toolsdiagnose_syncDiagnose syncA
Explain why the Swizzler library is missing or not updating, by checking iCloud Drive on this Mac and the state of the snapshot file. Use when recipes are missing or stale.
Inputs: no named parameters.
get_recipeGet recipeA
Full details for one recipe in the user's library, by name or id.
Inputs: name (required).
list_collectionsList collectionsA
List the user's recipe collections and how many recipes each holds.
Inputs: no named parameters.
recipe_historyRecipe historyB
What the user has actually made and how they rated it, from their "Made It" history. Use for questions like what they drink most or which recipes they rated highest.
Inputs: limit, minRating.
search_recipesSearch recipesA
Search the user's own cocktail library by name, ingredient, spirit, or collection. Returns one line per match. Omit every filter to list the whole library.
Inputs: limit, query, spirit, collection, +3 more.
snapshot_statusSnapshot statusA
Report how current the local Swizzler library snapshot is, and where it came from. Use this when the user asks whether their recipes are up to date, or when a recipe they expect seems to be missing.
Inputs: no named parameters.
what_can_i_makeWhat can I makeB
Given the bottles and ingredients the user has on hand, find recipes they can make. Set allowMissing above 0 to include near-misses and see what is missing.
Inputs: ingredients (required), limit, allowMissing.
whats_nextWhat's nextB
Recipes the user has flagged "Next Round" in Swizzler — the queue of drinks they mean to make next. Use for "what's up next", "what am I making next", "what's in my queue".
Inputs: limit.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Most tools have clearly distinct purposes (ingredient matching, search, history, queue, collections). The main overlap is snapshot_status vs diagnose_sync, both about library freshness/sync, though the descriptions differentiate reporting status from explaining causes.
All names use snake_case consistently, which is good. However, the verb/noun patterns vary: some are verb_noun (search_recipes, get_recipe, list_collections), others are plain nouns (recipe_history, snapshot_status) or question phrasing (what_can_i_make, whats_next).
Eight tools is well-scoped for a cocktail library assistant, each covering a distinct user intent without redundancy or bloat.
Read-side coverage is strong: discovery, search, detail, history, queue, collections, and sync troubleshooting. The surface appears read-only with no write operations (e.g. rating or adding recipes), a minor gap if mutation is in scope.
Maintenance
Related MCP Connectors
Cocktail recipes and an exact ingredient finder: what can I mix with what I have at home?
Cocktails from the bottles you own: recipes, bar terms, similar drinks, low and zero-proof picks.
Search 500 cocktail recipes, get full recipes, find drinks by ingredient, suggest random picks.
Recipe search, ingredient matching, nutrition filters and a private cookbook for any AI agent.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables intelligent cocktail discovery and recipe retrieval from Bar Assistant instances with natural language search, similarity matching, batch processing, and ingredient analysis capabilities.33MIT
- FlicenseAqualityDmaintenanceEnables management of your home bar inventory and cocktail discovery through Bar Assistant. View shelf ingredients, find cocktails you can make, and add or remove items from your bar collection.6-
- FlicenseAqualityDmaintenanceEnables natural language search for cocktail recipes and ingredient information through TheCocktailDB API. Supports searching by cocktail name, ingredient, category, or alcohol content to discover recipes and recommendations.5-
- AlicenseNot gradedqualityBmaintenanceEnables searching for cocktail recipes by name, ingredient, or randomly, and retrieving full cocktail details including ingredients, measurements, and instructions via TheCocktailDB API.308 npmMIT