manage_profileLABSCO SUMMARY
Telemetry and taste notes in one loop, with the machine's controls deliberately out of reach.
analyze_shot is what makes the rest useful: it turns a binary shot log into labelled indicators, so the assistant can say why a shot ran sour instead of reciting numbers at you. Every write is fenced — no shot control, clamped temperature and pressure, and deletes limited to the profiles it made.
What it is
A server for a Gaggimate-modded espresso machine: it reads shot telemetry, manages profiles on the device, records tasting feedback, and keeps local notes on coffees, grind settings and what has worked.
What you get
- manage_profile — create, view, update, delete and list brewing profiles on the device, with partial updates so temperature or phases can change without respecifying the rest
- analyze_shot — the raw shot log parsed into puck resistance, channeling risk, temperature deviation, pressure and flow stability and profile compliance
- Every number in that analysis carrying a plain-language band label, so the assistant can read it without knowing the thresholds
- Three depths on that same call — a summary for triage, a per-phase breakdown, or the full time series
- manage_shot_notes — ratings, tasting notes, grind setting and dose recorded against a shot and synced back to the machine
- list_recent_shots — shot history with ids, timestamps, profile names and any ratings you have given
- diagnose_connection — automated checks for reachability and common misconfigurations
- manage_coffee, manage_user_setup, manage_grind_map and manage_brewing_insights — local records of each coffee, your equipment, the grind settings that worked, and patterns noticed across coffees
- Readable resources for the bundled espresso knowledge files, coffee records, setup, grind map and accumulated insights
Requirements
A Gaggimate-modded espresso machine reachable on the same network, and Python with uv from a checkout. No account, no key. The server cannot start, stop or trigger a shot; temperatures and pressures written into profiles are clamped to safe ranges, and it can only delete profiles it created itself.
Setup effort
Build from source — git clone https://github.com/julianleopold/gaggimate-mcp.git
USE CASES
Dialling in a new bag of coffee
Record the beans and your setup, get a starting profile written to the machine, then adjust it as the shots come in.
Working out why a shot tasted sour
Analyze the shot at summary depth first, then go per-phase to find which stage caused it.
Keeping a record of what you tasted
Save the rating and tasting notes against the shot so the next analysis has the taste side too.
Reusing a grind setting that worked before
Look up the grind map for a similar coffee rather than starting from scratch.
The machine not answering
Run the connection diagnosis for reachability and configuration problems before you go looking at the network.
9 tools
Listed in project docs. Your client may show a different list.
analyze_shotmanage_shot_noteslist_recent_shotsdiagnose_connectionmanage_coffeemanage_user_setupmanage_grind_mapmanage_brewing_insightsBEFORE YOU INSTALL
What to know first
Tools you get
9 tools named in the project's documentation.
Requires
Python 3.11+
INSTALLATION
Connect your client
Server setup
git clone https://github.com/julianleopold/gaggimate-mcp.git
cd gaggimate-mcp
uv syncMCP Clients
Claude Desktop
{
"mcpServers": {
"gaggimate": {
"command": "/opt/homebrew/bin/uv",
"args": [
"--directory",
"/Users/<YOUR_USERNAME>/code/gaggimate-mcp",
"run",
"mcp",
"run",
"src/gaggimate_mcp/server.py"
]
}
}
}Any MCP client
uv --directory <YOUR_PATH_TO_GAGGIMATE_MCP> run mcp run src/gaggimate_mcp/server.py