mcp-server-brewfather
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BREWFATHER_API_KEY | Yes | Your Brewfather API key, generated in Brewfather under Settings → API → Generate API Key. Its scopes are the trust boundary (e.g. batches.read, recipes.read, inventory.read, and optionally batches.write, recipes.write, inventory.write). | |
| BREWFATHER_USER_ID | Yes | Your Brewfather User ID, shown alongside the API key in Brewfather under Settings → API. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| find_batchesA | Find batches by name (case-insensitive substring) and/or status. |
| get_batchB | Read one batch: summary, fermentation/bottling dates, estimated targets (OG, FG, IBU, color), all measured values, and the embedded recipe (target stats + ingredient bill). Units are metric (SG, L, °C). |
| get_readingsA | Read a batch's sensor readings (hydrometer, e.g. Tilt/iSpindel), newest last. |
| update_batchA | Update a batch's status and/or measured values. |
| find_recipesA | Find recipes by name (case-insensitive substring; empty returns all). |
| get_recipeA | Read one recipe: summary, target stats (batchSize, og, fg, abv, ibu, color, …) and ingredient bill (fermentables, hops, miscs, yeasts). Units are metric. Stats are as last saved in the Brewfather app, so they can be stale after update_recipe. |
| update_recipeA | Edit a recipe's settings and/or ingredient bill. |
| list_inventoryA | List inventory items of one |
| set_inventoryA | Change the stock of one inventory item. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Each tool targets a distinct resource+action pair: find/get/update for batches, get for readings, find/get/update for recipes, list/set for inventory. The find-versus-get distinction (search by name/status vs. read one by id) is spelled out in descriptions, leaving little room for misselection.
All tools use consistent snake_case verb_noun form and the read/update pattern repeats cleanly across batches and recipes. Minor deviation: retrieval uses three different verbs (find_*, get_*, list_*) and mutation uses both update_* and set_*, which is defensible but slightly inconsistent.
Nine tools is well within a comfortable range and the surface is tightly scoped to the domain's three entities (batches, recipes, inventory). Every tool earns its place with no redundancy.
Coverage is read- and update-heavy: batches and recipes can be searched, read, and edited, but there are no create or delete operations for batches, recipes, or inventory items. This is a notable lifecycle gap for an agent trying to start new batches or add recipes, though the operational update path is solid.