Skip to content

denull0/xbloom-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

XBloom MCP Server

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.


Quick Start (No Coding Required)

Already have a Claude account and an XBloom machine? You're 2 steps away.

1. Add the XBloom integration to Claude

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-mcp

When prompted, approve the connection.

2. Log in with your XBloom account

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.

3. Start brewing

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.

Example prompts

"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."


For Developers

Want to self-host or modify the server? Read on.

Features

  • 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

MCP Tools

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

Prerequisites

Self-Hosting Setup

1. Clone the repo

git clone https://github.com/denull0/xbloom-agent.git
cd xbloom-agent/xbloom-mcp-remote

2. Deploy to Supabase

No 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-jwt

3. Connect Claude to your instance

Claude Desktop / Mobile / Web

Add your MCP server URL in Settings > Integrations:

https://<your-project>.supabase.co/functions/v1/xbloom-mcp

Claude Code (CLI)

Run this command to add the MCP server:

claude mcp add xbloom --transport http https://<your-project>.supabase.co/functions/v1/xbloom-mcp

Or manually add to ~/.claude/settings.json:

{
  "mcpServers": {
    "xbloom": {
      "type": "url",
      "url": "https://<your-project>.supabase.co/functions/v1/xbloom-mcp"
    }
  }
}

Project Structure

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

Recipe Parameters

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

How It Works

  1. Claude sends JSON-RPC requests over HTTP POST to the MCP server
  2. The server authenticates via OAuth 2.0 (RFC 8414 / RFC 9728)
  3. Recipe payloads are RSA-encrypted before hitting the XBloom cloud API
  4. Recipes sync to the xBloom iOS app in real-time

Tech Stack

  • 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)

License

MIT

About

MCP server for managing XBloom Studio coffee recipes with Claude

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages