Gaggiuino MCP
Remote MCP server for your Gaggiuino espresso machine's shots and profiles
Connector by ljcl · GitHub account verified by the MCP Registry
Install
Pick your client. Read the repository before you give any tool access to your data.
No install instructions from the source yet. Check the repository for setup steps.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 13 read · 3 write · 1 delete · 3 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Docker image
Tools by what they do 20
Read from the source code; the running server may list different tools.
Read 13 · Look things up without changing anything.
get_dial_in_guidanceget_latest_shot_idget_machine_settingsget_maintenance_statusget_previous_shot_jsonget_profile_infoget_shot_dataget_shot_raw_dataget_shot_raw_jsonget_statuslist_profileslist_recent_shots
Show 1 more tools
view_shot_graph
Write 3 · Create, change, send or run things.
dial_in_new_bagselect_profileupload_profile
Delete 1 · Delete, drop, revoke or wipe things.
delete_profile
Not yet classified 3 · We could not tell from the name and description.
choose_profilediagnose_last_shotespresso_shot_analyst
Tools (20)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
choose_profileChoose a brew profiledelete_profileDelete a brew profilecan change or delete dataPermanently delete a brew profile from the machine. There is no undo and this server cannot restore a deleted profile, so only call this when the user has asked for this specific profile to be deleted, in this conversation, by name. Never delete a profile on your own initiative — not to tidy up, not to remove a duplicate you created, not as a step in some other task. Requires the profile's exact name in confirm_name as well as its id, so the deletion cannot be an off-by-one: read the name from list_profiles and pass it back exactly as reported. Refuses to delete the profile the machine current…
diagnose_last_shotDiagnose the last shotdial_in_new_bagDial in a new bagespresso_shot_analystEspresso shot analystget_dial_in_guidanceGet dial-in guidanceread-onlyGet the expert system prompt for espresso dial-in: how to read a shot, which variable to change next, and the documented profiles. Call this before giving dial-in advice so the advice matches this machine and this user's setup.
get_latest_shot_idGet latest shotread-onlyGet the most recently recorded shot: its id, and the headline numbers for it — duration, final weight against target, peak pressure, time to first drip, temperature stability. This is the entry point for any shot question that does not already name an id, and for 'how was my last shot' it is the only call needed. Use the returned id with get_shot_data for the phase-by-phase breakdown, or with view_shot_graph to chart it.
get_machine_settingsGet machine settingsread-onlyRead the machine's configuration: boiler and steam setpoints, temperature offset, scale and predictive-stop settings, and whatever else this firmware exposes. Useful as dial-in context — a brew temperature that never matches the profile usually shows up here as an offset rather than in the shot data. The fields are whatever the machine sends, so treat unfamiliar names as firmware-specific.
get_maintenance_statusGet machine service historyread-onlyRead the service history the machine tracks for itself: when it last recorded a descale and a backflush, and how many shots it has pulled since each. Reach for it when the shot data points at the machine rather than the coffee — scale build-up shows up as flow that will not match the profile's targets and a brew temperature that will not hold, at a grind setting that used to work. The machine records a descale at 50% of the descale cycle and a backflush once pressure holds above 10 bar in flush mode for more than two seconds, so a service done by hand is not in these numbers, and the shot coun…
get_previous_shot_jsonGet previous shot JSONread-onlyRaw data for the shot recorded before the given one, for the shot graph UI's comparison overlay. The server finds the real previous id rather than assuming ids are contiguous. Not intended for the model — call list_recent_shots to reason about a run of shots.
get_profile_infoGet brew profile detailsread-onlyGet everything known about one brew profile: the machine's own definition of it — brew temperature, the phases it runs with their targets and stop conditions, and the recipe it was written around — plus this server's prose documentation when it has any, whether the profile is on the machine, and the id select_profile takes. This is the right tool for 'what does this profile actually do', including a profile the user built themselves. The definition comes back in the machine's own wire format, so it can be edited and handed to upload_profile. Accepts a documented id, a machine profile id, or th…
get_shot_dataGet shot summaryread-onlySummarize one shot: duration, final weight against the profile's target, peak pressure, water pumped, time to first drip, temperature stability, and a phase-by-phase breakdown with pressure/flow/weight sampled at each phase's entry, midpoint, and exit. This is the right tool for dial-in advice and for comparing shots — prefer it over get_shot_raw_data, which returns hundreds of raw samples to say the same thing.
get_shot_raw_dataGet raw shot datapointsread-onlyGet every raw datapoint recorded for one shot: the full pressure, flow, weight, and temperature time series, already converted out of the machine's scaled wire format. The response is large. Only reach for it when the summary from get_shot_data is genuinely not enough — for example to inspect the exact shape of a pressure ramp.
get_shot_raw_jsonGet raw shot JSONread-onlyRaw shot data as a JSON document, for the shot graph UI to plot. Not intended for the model — call get_shot_data for anything you need to reason about.
get_statusGet machine statusread-onlyRead the espresso machine's live state: boiler temperature and target, group pressure, scale weight, water level, switch positions, and uptime. Use this to answer 'is it ready', 'what profile is loaded', or 'is it low on water'. Values are instantaneous — call again for a fresh reading rather than reusing an old one.
Show 5 more tools
list_profilesList brew profilesread-onlyList the brew profiles on the machine, each merged with this server's documentation for it — control type, suited roast levels, target ratio, target time. Returns each profile in full, so no follow-up call is needed to describe one. A profile the user built on the machine appears with its documentation fields null; a profile this server documents that is not currently loaded appears with onMachine false. If the machine cannot be reached the bundled documentation is returned instead, and 'source' and 'note' say so.
list_recent_shotsList recent shotsread-onlyList the most recent shots, newest first, each with the headline numbers: duration, final weight against target, peak pressure, time to first drip, temperature stability. Use this for questions about a run of shots — how the last five trended, whether a change helped — rather than calling get_shot_data once per id. The machine keeps a limited history and deleted shots leave gaps, so fewer shots than requested is a normal answer, not an error.
select_profileSelect brew profileSwitch the machine to a different brew profile. This changes the machine, so confirm the profile with the user before calling it — do not select one on your own initiative from dial-in advice. Takes the id from list_profiles (either the documented id or the machineProfileId). The profile must already be on the machine; this cannot create one. Refuses unless this server has an authorization server configured, since an unauthenticated server exposed over a tunnel would let anyone reach it.
upload_profileSave a new brew profileSave a new brew profile to the machine. This creates something the user will see on the machine's own screen, so before calling it, show them the whole profile you intend to write — name, brew temperature, and every phase's target and stop conditions — and get an explicit yes. Do not upload a profile you invented while giving dial-in advice. It creates and never updates: the machine assigns a fresh id and ignores any id you send, so calling this twice leaves two profiles, and this server deliberately will not retry it for you — if a call fails without a clear answer, call list_profiles to see …
view_shot_graphView shot graphread-onlyRenders an interactive espresso shot graph. Shows pressure, flow, weight flow, and weight over time with target profiles overlaid. Automatically annotates key metrics (peak pressure, first drip) on the chart. Optionally compares two shots side by side — the user can also click 'Compare previous' in the graph to load the prior shot without a new tool call.
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 65
- Last commit
- Oct 20, 2026 (9 days ago)
- Last release
- Oct 5, 2026 (24 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.ljcl/gaggiuino-mcp- Version
- 6.0.0
- Auth
- API key
- Packages
- oci
ghcr.io/ljcl/gaggiuino-mcp:6.0.0 - License
- MIT
- Repository
- github.com/ljcl/gaggiuino-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from ljcl
Cite this page
Gaggiuino MCP. Agent Mart. https://agentmart.dev/connectors/ljcl-gaggiuino-mcp (last updated 2026-10-24)