Skip to main content
Glama
brewfather-mcp

brewfather-mcp

by plane636

Brewfather MCP

영문 문서 읽기

이것은 개인 컴퓨터에서 실행되는 모델 컨텍스트 프로토콜 서비스로, Brewfather API v2 및 Brewfather 3.1 공개 베타 인터페이스를 통해 Brewfather 레시피를 읽고, 검색하고, 생성하고, 안전하게 수정할 수 있습니다.

서비스는 로컬 표준 입력/출력 통신을 사용합니다. Brewfather 자격 증명은 사용자 자신의 컴퓨터에만 저장됩니다. 레시피를 생성하거나 수정하기 전에 단기 유효한 미리보기 확인 토큰을 사용해야 합니다. 이 서비스는 의도적으로 레시피 삭제 기능을 제공하지 않습니다.

가장 간단한 설치 방법: AI 어시스턴트에게 설치를 맡기기 (권장)

이 도구는 주로 터미널 명령에 익숙하지 않은 홈브루 애호가를 대상으로 합니다. 로컬 터미널에 접근할 수 있고 모델 컨텍스트 프로토콜을 지원하는 AI 어시스턴트(예: Codex, Claude Code, Cursor, Visual Studio Code의 AI 어시스턴트 또는 Gemini CLI 도구)에게 설치를 맡길 수 있습니다.

새 대화를 시작하고 아래 내용을 복사하여 에이전트에게 보내세요:

请帮我安装当前项目中的 brewfather-mcp,并注册到我正在使用的agent。

请你:
1. 检查本机是否有 Node.js 20 或更高版本;
2. 在当前项目目录安装依赖、构建项目并安装 brewfather-mcp 命令;
3. 自动识别我正在使用的智能助手,运行对应的 brewfather-mcp install 命令;
4. 如果打开本机授权页面,让我自己在页面中输入 Brewfather 用户编号和应用程序接口密钥。不要让我把密钥发到对话里,也不要输出或读取密钥内容;
5. 等我提交授权页面后,运行 brewfather-mcp doctor,并检查模型上下文协议服务是否已成功注册。

请直接开始执行;只有在必须由我操作授权页面时再提醒我。
  1. AI 어시스턴트가 로컬에서만 접근 가능한 인증 페이지를 엽니다. 페이지에 Brewfather API ID와 API 키를 입력하고 제출하세요.

  2. 설치가 완료되면 AI 어시스턴트를 재시작하거나 새 대화를 시작한 후 다음과 같이 말하세요:

使用 Brewfather 工具列出我最近的 5 个配方。

순수 웹 AI 어시스턴트는 일반적으로 사용자 컴퓨터에서 실행되는 로컬 서비스를 설치할 수 없습니다. 로컬 프로젝트와 터미널에 접근할 수 있는 데스크톱 버전, IDE AI 어시스턴트 또는 CLI AI 어시스턴트를 사용하세요.

Related MCP server: Brewfather MCP Server

사용 조건

  • Node.js 20 이상

  • Brewfather 프리미엄 또는 유효한 프리미엄 체험판

  • 레시피 생성 또는 수정 시 Brewfather 3.1 공개 베타 참여 필요

  • recipes.read 권한이 있는 Brewfather API 키, 레시피 쓰기에는 recipes.write 권한도 필요

소스 코드에서 설치

cd /path/to/brewfather-mcp
npm install
npm run build
npm link

로컬 자격 증명 페이지를 열고 서비스를 지정된 AI 어시스턴트에 등록하세요:

brewfather-mcp install codex

설정 페이지는 127.0.0.1의 임의 포트만 수신합니다. 읽기 전용 요청으로 자격 증명을 검증하고, 자격 증명을 로컬에 저장한 후 자동으로 종료됩니다. Brewfather의 "설정 → API"에서 키를 생성하세요. recipes.delete 권한은 부여할 필요가 없습니다. 이 서비스는 해당 권한을 사용하지 않습니다.

자격 증명 저장 위치

자격 증명은 운영 체제의 사용자 구성 디렉터리에 JSON 형식으로 저장됩니다:

운영 체제

기본 경로

macOS

~/Library/Application Support/brewfather-mcp/config.json

Windows

%APPDATA%\\brewfather-mcp\\config.json

Linux

$XDG_CONFIG_HOME/brewfather-mcp/config.json, 설정되지 않은 경우 ~/.config/brewfather-mcp/config.json

BREWFATHER_MCP_CONFIG를 통해 다른 경로를 지정할 수 있습니다. Unix 계열 시스템에서 구성 디렉터리 권한은 0700, 구성 파일 권한은 0600으로 설정됩니다. 파일에는 평문 자격 증명이 포함되어 있으므로 동기화, 공유 또는 버전 관리 저장소에 커밋하지 마세요. 컨테이너 및 CI 환경에서는 BREWFATHER_USER_ID 및 BREWFATHER_API_KEY 환경 변수를 함께 사용할 수 있습니다.

일반적인 명령:

brewfather-mcp setup
brewfather-mcp doctor
brewfather-mcp config path
brewfather-mcp auth logout

다양한 AI 어시스턴트에 설치

설치 프로그램은 다음 AI 어시스턴트를 지원합니다:

brewfather-mcp install codex
brewfather-mcp install claude
brewfather-mcp install cursor
brewfather-mcp install vscode
brewfather-mcp install gemini
brewfather-mcp install all
brewfather-mcp install generic

설치 프로그램은 각 AI 어시스턴트의 공식 CLI 도구를 사용합니다:

  • Codex: codex mcp add

  • Claude Code: claude mcp add --scope user

  • Cursor: agent mcp add

  • Visual Studio Code: code --add-mcp

  • Gemini: gemini mcp add --scope user

generic은 다른 호환 클라이언트에서 사용할 수 있는 표준 mcpServers JSON 구성을 출력합니다. 등록 명령은 현재 Node.js 실행 파일과 이 소프트웨어 컴파일 진입점의 절대 경로를 사용하므로 AI 어시스턴트 구성에 Brewfather 자격 증명이 나타나지 않습니다.

새 대화에서 사용

새 AI 어시스턴트 대화를 시작한 후 다음과 같이 말하세요:

使用 Brewfather 工具列出我最近的 5 个配方,只读取,不要修改。

레시피를 수정하려면 다음과 같이 말할 수 있습니다:

使用 Brewfather 工具找到“West Coast IPA”,把其中的 Citra 干投增加 20 克。先显示修改预览,等我明确确认后再写入。

사용 가능한 도구

  • brewfather_connection_status

  • brewfather_list_recipes

  • brewfather_search_recipes

  • brewfather_get_recipe

  • brewfather_preview_recipe_create

  • brewfather_apply_recipe_create

  • brewfather_preview_recipe_update

  • brewfather_apply_recipe_update

Brewfather가 쓰기 시 데이터를 거부하거나 조용히 변경하는 것을 방지하기 위해 미리보기 생성 시 다음 검사가 먼저 수행됩니다:

  • Brewfather 쓰기 API는 문자열 태그를 허용하지 않습니다. 기존 레시피에서 전체 태그 객체를 복사하지 않는 한 tags는 생략해야 합니다.

  • 첨가물 단위는 g, mg, kg, ml, l, tsp, tbsp, pkg, items 또는 drops로 제한됩니다. tablet 및 dose와 같은 일반적인 별칭은 자동으로 items로 변환됩니다.

  • 맥아에 Lovibond 색도만 있고 color가 없는 경우, 도구가 자동으로 EBC를 계산하여 Brewfather가 색도를 0으로 저장하지 않도록 합니다.

  • 모든 자동 변환은 미리보기의 normalizations에 나열되며, 다른 변경 사항과 함께 사용자 확인을 받아야 합니다.

레시피 생성 및 수정 확인 토큰은 10분 후에 만료되며 한 번만 사용할 수 있습니다. 레시피를 수정하기 전에 서비스가 레시피를 다시 읽습니다. 미리보기 생성 후 레시피가 변경된 경우 이번 쓰기는 거부됩니다.

수정 매개변수의 중첩 객체는 로컬에서 깊은 병합이 수행됩니다. Brewfather의 레시피 부분 업데이트 API는 최상위 필드에 대해서만 얕은 병합을 수행하므로 배열은 전체가 교체됩니다. 수정 전에 현재 레시피를 먼저 읽고 완전한 fermentables, hops, yeasts 또는 miscs 배열을 전달하세요.

Brewfather 수치는 모두 미터법 단위를 사용합니다: 리터, 킬로그램, 그램, 섭씨 및 비중.

개발

npm run typecheck
npm test
npm run build

빌드가 완료되면 모델 컨텍스트 프로토콜 검사기를 실행할 수 있습니다:

npx @modelcontextprotocol/inspector node dist/cli.js serve

프로토콜 통신은 표준 출력을 사용합니다. 실행 진단은 표준 오류에만 기록되며 인증 헤더와 API 키는 기록되지 않습니다.

API 설명

  • REST API 경로 버전은 여전히 /v2입니다. 레시피 쓰기 기능은 Brewfather 3.1 공개 베타에 속합니다.

  • API는 HTTP 기본 인증을 사용하며 Brewfather 사용자 ID가 사용자 이름입니다.

  • Brewfather는 현재 키당 시간당 최대 500회 호출로 제한합니다.

  • 이 서비스는 레시피 버전 생성, 잠금, 복원, 롤백 또는 삭제 기능을 제공하지 않습니다.

Brewfather API 문서 및 버전 3.1 공개 베타 설명을 참조하세요.

Available Tools

8 tools
brewfather_apply_recipe_createB

Create the recipe from a prior preview. This writes live Brewfather data. Only call after the user explicitly confirms that exact preview.

NameRequiredDescriptionDefault
confirmationTokenYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose that the tool 'writes live Brewfather data,' which is a key behavioral trait. It also states the confirmation requirement. However, it doesn't mention potential side effects (e.g., overwriting, undo-ability), failure modes, or permission needs. This partial transparency warrants a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action and a warning. Every clause adds value—the write intention and the confirmation gate are both critical. There is no fluff, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only one parameter and no output schema, the description still fails to explain the parameter's purpose or where it comes from. It also lacks information about response format or error handling. Given the tool's simplicity, this is inadequate. A 2 is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain the parameter, but it doesn't mention 'confirmationToken' at all. The description says 'after the user explicitly confirms' but gives no hint of what the token is or how to obtain it. The agent is left without guidance on the single required parameter. This is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create the recipe') and the context ('from a prior preview'). It distinguishes itself from sibling preview tools by explicitly noting it writes live Brewfather data, and the name itself suggests application of a preview. However, it doesn't explicitly compare to sibling apply/update tools, so a 4 is appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit condition: 'Only call after the user explicitly confirms that exact preview.' This tells the agent when to use it, and implies it should not be called without that confirmation. It doesn't reference alternative tools (like preview or update), but the condition is clear enough. A 4 is justified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brewfather_apply_recipe_updateA

Apply a previously previewed recipe update. This writes live Brewfather data. The server rejects the update if the recipe changed after preview. Only call after explicit user confirmation.

NameRequiredDescriptionDefault
confirmationTokenYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the write side effect ('writes live data'), a failure mode (rejection if recipe changed), and a safety gate (explicit user confirmation). It does not mention success return format, but with no output schema and a single param, this is reasonably transparent for a mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with no fluff. The first sentence states the purpose, the second provides behavioral context and a failure condition, the third gives an explicit usage prerequisite. Every sentence earns its place and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation with one parameter and no output schema, the description covers the essential action, prerequisites, and a failure mode. However, it omits where the confirmationToken comes from (likely the preview response) and what constitutes a successful apply. This leaves an agent slightly uncertain about the full call flow, though the sibling tools could fill in the gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is 0% schema description coverage and the description never explains what 'confirmationToken' is or where it originates. It implies it comes from a prior preview but does not explicitly state that. The only schema metadata is minLength, which is insufficient for an agent to know how to obtain or use the token correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Apply a previously previewed recipe update' with a specific verb and resource. It distinguishes from siblings like preview_recipe_update by implying this is the final write step, and from apply_recipe_create by specifying 'update'. The phrasing 'writes live Brewfather data' reinforces the mutation nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the prerequisite: 'Only call after explicit user confirmation' and a critical condition: 'server rejects if recipe changed after preview'. This implies the agent should have previewed first and should not call prematurely. It does not explicitly contrast with apply_recipe_create, but the name and sibling context make the distinction clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brewfather_connection_statusA

Check whether local Brewfather credentials work. This is read-only and never returns credentials.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states that the action is read-only and that it never returns credentials, which are critical safety and privacy traits. It does not mention return format or potential side effects, but these are minor given the tool's simplicity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two short sentences, with the core purpose front-loaded and the behavioral caveat immediately following. Every word earns its place; there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description is mostly complete, but it fails to specify what the tool returns. The phrase 'check whether ... work' implies a boolean or status result, but this is not explicit. An agent would benefit from knowing the return shape to interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema description coverage is 100% (vacuously). Per the rules, the baseline is 4 when there are no parameters. The description adds no parameter semantics because there are none to explain, but it does not neglect anything.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('check') and resource ('local Brewfather credentials') along with the intended purpose ('whether they work'). It is immediately distinct from all sibling tools, which are recipe-oriented (list, search, get, preview, apply).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (to verify credentials) but does not explicitly mention alternatives or exclusions. Since no sibling tool overlaps in function, the usage context is clear enough but lacks explicit guidance on when not to use it or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brewfather_get_recipeA

Get one complete Brewfather recipe by its _id. Read-only. Call list or search first if only a recipe name is known.

NameRequiredDescriptionDefault
recipeIdYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses read-only behavior and completeness of the returned recipe. It does not mention error handling or auth, but for a simple get this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The main action is front-loaded, and usage guidance follows efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a single-parameter retrieval tool with no output schema. It explains what it does, how to obtain the ID, and that it is read-only. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. 'by its _id' clarifies the parameter is the recipe identifier, and the guidance to call list/search first explains its origin, adding meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get one complete Brewfather recipe by its _id', specifying the verb, resource, and identifier. It also notes 'Read-only', distinguishing it from create/update siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises 'Call list or search first if only a recipe name is known', telling the agent when to use alternative tools. This provides clear routing and prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brewfather_list_recipesC

List Brewfather recipes. Read-only. Results are compact unless complete=true. Use startAfter with the last _id for pagination.

NameRequiredDescriptionDefault
limitNo
includeNo
orderByNo
completeNo
startAfterNo
orderByDirectionNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It explicitly states 'Read-only', which is a critical safety disclosure. It also mentions that results are compact unless complete=true, and hints at pagination behavior. However, it does not disclose rate limits, authentication needs, error behavior, or what fields are present in compact vs. complete modes. These gaps are notable for a tool with no annotations and no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no fluff. The core purpose is front-loaded, and the pagination hint is placed after. Every sentence adds value, and there is no redundant information. It is appropriately concise, though it sacrifices depth for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 6 parameters, no output schema, no annotations, and very little description. The description does not cover parameter semantics, return format, error handling, or filtering capabilities. The agent would have to make educated guesses about how to construct a valid request. For a listing tool with multiple optional parameters, this is severely incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description does not elaborate on any of the six parameters. The mention of 'startAfter' and 'complete' is incidental but does not explain their meaning or usage. Parameters like 'limit', 'include', 'orderBy', and 'orderByDirection' are entirely undocumented in both the description and the schema (which has no descriptions). The agent is left to guess parameter formats and semantics, making this a severe deficiency.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('List') and resource ('Brewfather recipes'), which unambiguously defines the tool's primary function. It does not explicitly differentiate from the sibling 'brewfather_search_recipes', but the act of listing without filters is distinct enough that an agent can likely infer the difference. The read-only note further clarifies intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to choose this tool over its siblings like 'brewfather_search_recipes' or 'brewfather_get_recipe'. It only mentions pagination usage ('Use startAfter with the last _id'), which is a usage instruction for a parameter, not a tool-selection guideline. The agent receives no context about when listing is appropriate vs. searching or fetching a single recipe.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brewfather_preview_recipe_createA

Prepare and validate a new Brewfather recipe without writing it. Always call this before brewfather_apply_recipe_create. The preview reports unit/color normalizations so they can be reviewed before confirmation. All units must be metric. String tags and unsupported miscellaneous units are rejected here, before confirmation.

NameRequiredDescriptionDefault
recipeYesBrewfather recipe fields in metric units. Common fields: name, author, type, batchSize (L), boilTime (min), efficiency (%), fermentables (kg), hops (g), yeasts, miscs, equipment, mash, fermentation, water, style, and notes. For fermentables, color is EBC; if only lovibond is supplied, color is calculated automatically. Misc units: g, mg, kg, ml, l, tsp, tbsp, pkg, items, or drops; aliases such as tablet and dose are normalized to items. Brewfather write APIs reject string tags, so omit tags unless copying complete tag objects from an existing recipe.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It states that the tool does not write ('without writing it') and that it reports normalizations and rejections. However, it does not explicitly state it is read-only or describe the exact output format of the preview, leaving a minor gap for an agent to infer the response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: it starts with the core action and the required sequencing, then adds relevant constraints. Every sentence adds value, and there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single rich parameter and no output schema, the description covers what an agent needs to call it properly. The main omission is the exact shape of the response (what the preview returns), but given it's a validation step, the description communicates enough for correct invocation. A brief description of the return value would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The recipe parameter schema description is exceptionally detailed, covering common fields, metric units, color normalization (EBC vs lovibond), allowed misc units and aliases, and a warning about string tags. It adds substantial meaning beyond the bare schema, making it easy for an agent to construct valid inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Prepare and validate a new Brewfather recipe without writing it.' It uses a specific verb (prepare/validate) and resource (new recipe), and explicitly distinguishes from the sibling apply tool by saying 'Always call this before brewfather_apply_recipe_create.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: call this before the apply tool, and it warns about rejected inputs (string tags, unsupported miscellaneous units). It provides a clear ordering rule and constraints, leaving no ambiguity about when to use it versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brewfather_preview_recipe_updateA

Validate and preview a safe update without writing it. The preview reports unit/color normalizations. Nested objects are deep-merged locally; arrays replace the entire array, so fetch the recipe and send a complete ingredient array when changing fermentables, hops, yeasts, or miscs. String tags and unsupported miscellaneous units are rejected before confirmation.

NameRequiredDescriptionDefault
changesYesOnly fields to change. Nested objects may be partial. Array fields must contain the complete desired array.
recipeIdYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It accurately discloses merge semantics (deep-merge for objects, replace for arrays), the normalization report (unit/color), and rejection conditions (string tags, unsupported misc units). It does not mention any side effects, authentication, or rate limits, but for a preview tool these are less critical. The behavior described is consistent with the tool's name and purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the primary purpose, followed by essential behavioral details. Every sentence earns its place—no fluff, no repetition. The information is dense but organized logically: purpose, output, merge behavior, and error handling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a preview tool with two parameters, the description covers the key aspects: purpose, merge semantics, error conditions, and the need to fetch the recipe for arrays. It does not specify the exact structure of the preview report or what the 'confirmation' step entails, but that might be handled by the apply tool. Overall, it is adequate for an agent to correctly invoke the tool, with minor gaps around the exact response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers only the 'changes' parameter (with a description about partial objects and complete arrays), while 'recipeId' has no description. The tool description compensates by elaborating on array replacement ('send a complete ingredient array') and rejection criteria, which adds beyond the schema. However, it still lacks a precise description of what 'changes' can contain beyond the schema's generic object definition. Overall, it adds meaningful context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (validate and preview), the resource (recipe update), and the key distinction of not writing. It explicitly sets it apart from apply_recipe_update, and the mention of 'preview' makes the dry-run nature obvious even without reading the sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies when to use this tool (when you want to validate changes before applying) and provides operational guidance for nested objects and arrays. It does not explicitly name alternatives like 'apply_recipe_update' or 'preview_recipe_create', but the context of 'without writing it' and the sibling list makes the intended usage clear. A slight deduction for not explicitly mentioning alternatives when they exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brewfather_search_recipesB

Search Brewfather recipes by name, author, type, style, or equipment. Read-only. Search paginates locally and can use several API calls.

NameRequiredDescriptionDefault
limitNo
queryYes
maxPagesNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does state 'Read-only' and that pagination is local and 'can use several API calls,' which is a useful heads-up about possible latency/cost. However, it doesn't disclose what happens on pagination (does it auto-fetch all pages? does it cap?), any rate limits, or error behavior. It's above minimal but lacks rich detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero fluff. The first sentence front-loads the action and searchable facets, the second adds critical behavioral notes (read-only, pagination). Every word earns its place; it is appropriately terse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description doesn't describe the return shape (what a result contains, ordering, total hits). It mentions pagination but doesn't specify how many results per page or how 'maxPages' affects the response. An agent inferring from the schema knows only that three numeric constraints exist. For a search tool, this lacks important operational details like result format and pagination semantics, so it is incomplete for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has zero descriptions (0% coverage), so the description must explain the parameters. It lists the search fields (name, author, type, style, equipment) but does not clarify how they map to the single 'query' parameter—is it a free-text search across those fields or a structured filter object? 'limit' and 'maxPages' are self-evident from names and numeric bounds, but the description adds no guidance on how they interact or what values are sensible. The description only partially compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('search') and resource ('Brewfather recipes') and enumerates searchable attributes (name, author, type, style, equipment). This clearly differentiates it from siblings like list_recipes (which likely returns all recipes) and get_recipe (which fetches by ID). It stops short of naming those siblings explicitly, so it's not a top score, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus the sibling list_recipes or get_recipe. The description implies filtering is the use case ('by name, author...'), but it never says 'use this when you need to filter' or contrasts it with listing all recipes. Without that, an agent could pick the wrong tool for a straightforward list request. No when-not or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.1
    • First observedbrewfather_apply_recipe_create
    • First observedbrewfather_apply_recipe_update
    • First observedbrewfather_connection_status
    • First observedbrewfather_get_recipe
    • First observedbrewfather_list_recipes
    • First observedbrewfather_preview_recipe_create
    • First observedbrewfather_preview_recipe_update
    • First observedbrewfather_search_recipes

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: connection check, listing, searching, retrieving, previewing/creating, and previewing/updating. The list vs. search tools are differentiated by description (compact vs. filtered) and the preview/apply pairs are unambiguous.

Naming Consistency4/5

Most tools follow the pattern 'brewfather_' + verb + '_' + noun (e.g., list_recipes, get_recipe, apply_recipe_create). However, 'brewfather_connection_status' deviates as a noun phrase rather than an action, creating a minor inconsistency.

Tool Count5/5

With 8 tools, the server is well-scoped for recipe management. It covers connection validation, read operations (list/search/get), and a two-phase create/update workflow, each tool earning its place without bloat.

Completeness3/5

The surface covers read (list/search/get) and create/update with preview/apply, but there is no delete operation, leaving a notable gap in the lifecycle. Other potential operations (e.g., duplicate, export) are absent but the core is covered.

Maintenance

ActivityStale
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Wraps the Brewman Web (V7) API to read and write Brewman data (orders, outlets, stock, config) via tools, with the API token stored securely as an environment variable.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Read-only MCP server exposing Brewfather brewing data—batches, recipes, fermentation readings, and inventory—as tools for natural language queries.
    9
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables LLM clients to read batches, recipes, fermentation readings, and inventory, and to perform routine writes such as updating batch status, logging measurements, and adjusting stock.
    13
    MIT