A remote Model Context Protocol (MCP) server that lets Claude manage pour-over coffee recipes on your XBloom Studio machine. Send Claude a photo of your coffee bag, describe your beans, or paste a product link — and it designs a recipe tailored to your coffee that syncs directly to the xBloom iOS app.
Built with Deno and deployed as Supabase Edge Functions.
Already have a Claude account and an XBloom machine? You're 2 steps away.
Claude Desktop / Mobile / Web — Add this MCP server URL in your settings:
https://ramaokxdyszcqpqxmosv.supabase.co/functions/v1/xbloom-mcp
Where to find MCP settings:
- Claude Desktop — Settings > Integrations > Add MCP Server
- Claude Mobile (iOS/Android) — Settings > Integrations > Add Integration
- Claude Web (claude.ai) — Click your profile > Settings > Integrations
Claude Code (CLI) — Run this command:
claude mcp add xbloom --transport http https://ramaokxdyszcqpqxmosv.supabase.co/functions/v1/xbloom-mcpWhen prompted, approve the connection.
The first time you chat, Claude will ask for your XBloom email and password to connect to your account. Your recipes go to your xBloom app — not anyone else's.
That's it. Now just chat with Claude:
- Snap a photo of your coffee bag — Claude reads the label and creates a recipe matched to the roast, origin, and processing method
- Paste a link to a coffee product page — Claude pulls the details and designs a recipe
- Describe your beans — "I have a light roast Ethiopian natural, 15g dose" — Claude builds a recipe using brewing science
- Tweak by taste — "it was a bit sour" — Claude adjusts grind, temp, and pour structure
Your recipes sync instantly to the xBloom iOS app and are ready to brew on your machine.
"Here's a photo of my coffee. Make me a recipe for it."
"Create a recipe for a medium roast Colombian, 18g dose, I like it bright and clean."
"That last brew was a little bitter — can you adjust?"
"Show me all my recipes."
"Delete the old test recipe."
Want to self-host or modify the server? Read on.
- Photo-to-Recipe — Send Claude a photo of your coffee bag or a product link, and it'll design a tailored recipe and save it to your machine
- Recipe CRUD — Create, list, edit, and delete recipes on XBloom cloud
- Recipe Import — Fetch any shared recipe by URL
- OAuth 2.0 — Secure single-user auth flow for Claude desktop/mobile/web
- MCP Streamable HTTP — Standard JSON-RPC 2.0 over POST
- RSA Encryption — All API payloads encrypted with RSA-2048
| Tool | Description |
|---|---|
xbloom_list_recipes |
List all your recipes with IDs |
xbloom_create_recipe |
Create a new recipe and push to cloud |
xbloom_edit_recipe |
Update an existing recipe by ID |
xbloom_delete_recipe |
Permanently remove a recipe |
xbloom_fetch_recipe |
Import a recipe from a share URL |
- Supabase CLI
- Deno 2.x
- An XBloom account (email + password)
git clone https://github.com/denull0/xbloom-agent.git
cd xbloom-agent/xbloom-mcp-remoteNo environment variables needed — the server is multi-user. Each user logs in with their own XBloom account via the xbloom_login tool.
supabase functions deploy xbloom-mcp --no-verify-jwtAdd your MCP server URL in Settings > Integrations:
https://<your-project>.supabase.co/functions/v1/xbloom-mcp
Run this command to add the MCP server:
claude mcp add xbloom --transport http https://<your-project>.supabase.co/functions/v1/xbloom-mcpOr manually add to ~/.claude/settings.json:
{
"mcpServers": {
"xbloom": {
"type": "url",
"url": "https://<your-project>.supabase.co/functions/v1/xbloom-mcp"
}
}
}xbloom-agent/
├── xbloom-mcp-remote/
│ └── supabase/
│ ├── config.toml # Supabase project config
│ └── functions/
│ ├── xbloom-mcp/index.ts # Main MCP server + recipe tools
│ ├── xbloom-authorize/index.ts # OAuth /authorize endpoint
│ └── xbloom-token/index.ts # OAuth /token endpoint
└── xbloom-recipes/
└── claude-project/
├── custom-instructions.md # Claude project instructions
└── xbloom-brewing-reference.md # Coffee brewing science reference
All recipes target the Omni dripper. Hardware constraints:
| Parameter | Range | Notes |
|---|---|---|
grind_size |
40–120 | Lower = finer |
grind_rpm |
60–120 | Grinder speed |
dose_g |
1–31 | Coffee dose in grams |
temperature_c |
40–95 | Water temperature |
flow_rate |
3.0–3.5 | mL/s |
pattern |
centered, circular, spiral | Pour pattern |
pause_seconds |
0–255 | Pause between pours |
- Claude sends JSON-RPC requests over HTTP POST to the MCP server
- The server authenticates via OAuth 2.0 (RFC 8414 / RFC 9728)
- Recipe payloads are RSA-encrypted before hitting the XBloom cloud API
- Recipes sync to the xBloom iOS app in real-time
- Runtime: Deno 2.x
- Hosting: Supabase Edge Functions
- Protocol: MCP 2.0 (Streamable HTTP transport)
- Auth: OAuth 2.0 with dynamic client registration
- Encryption: RSA-2048 (PKCS#1 v1.5, hutool-style chunking)
MIT