Brie — Recipe MCP, Meal Plans & Groceries

Save and adapt recipes, plan household dinners for review, and manage shared grocery lists.

사용해야 할까요

품질 및 안전성

A
설명 품질
98%
스키마 완전성
81%
이름 품질
100%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,515토큰 (도구 정의)
~3.7 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.75%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "brie": {
      "url": "https://api.withbrie.app/mcp"
    }
  }
}

원격 엔드포인트

https://api.withbrie.app/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (8)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢search_recipes(query, limit)

Search the connected household's saved recipes. Returns matches with sources and saved version IDs. Use get_recipe for ingredients and directions.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300
    },
    "limit": {
      "default": 10,
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "schema_version": {
      "type": "string",
      "const": "1"
    },
    "result": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "schema_version",
    "result"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_recipe(recipe_id, version_id)

Read a recipe from the connected household, including ingredients, directions, and source. Supply version_id for a specific saved version or omit it for the current recipe. Display display_text as the current ingredient wording; raw_text is original source wording. Keep version_id, version_revision, and ingredient_id values for update_recipe.

입력 스키마

{
  "type": "object",
  "properties": {
    "recipe_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "version_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "required": [
    "recipe_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "schema_version": {
      "type": "string",
      "const": "1"
    },
    "result": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "schema_version",
    "result"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡import_recipe(operation_id, url, text, title, creator, ...)

Import a public recipe URL or supplied recipe text when the user asks to save it, preserving its creator and source. Returns a background job; check it with get_import_status. Use create_recipe for a new recipe developed in the conversation.

입력 스키마

{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "string",
      "minLength": 16,
      "maxLength": 128,
      "description": "A unique ID for this user-requested action. Reuse this exact ID and payload after a timeout; use a new ID only for a new action."
    },
    "url": {
      "type": "string",
      "maxLength": 2048,
      "format": "uri"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60000
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "creator": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "publication": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300
    },
    "servings": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "operation_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "schema_version": {
      "type": "string",
      "const": "1"
    },
    "result": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "schema_version",
    "result"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_import_status(job_id)

Check an import job by ID. Report its status; if it needs more information, direct the user to the import in Brie. Poll this job rather than importing again.

입력 스키마

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "required": [
    "job_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "schema_version": {
      "type": "string",
      "const": "1"
    },
    "result": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "schema_version",
    "result"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡create_recipe(operation_id, title, description, servings, prep_minutes, ...)

Save a complete new recipe only after the user asks to save it. Supply ingredients, servings, times, and ordered directions; keep unknown, qualitative, or ranged quantities null and preserve their wording in raw_text. Never invent source facts or macros. Returns the saved recipe immediately; external services prepare its image and optional estimated nutrition in the background. Use get_recipe to check readiness.

입력 스키마

{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "string",
      "minLength": 16,
      "maxLength": 128,
      "description": "A unique ID for this user-requested action. Reuse this exact ID and payload after a timeout; use a new ID only for a new action."
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "description": {
      "default": "",
      "type": "string",
      "maxLength": 2000
    },
    "servings": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "prep_minutes": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1440
    },
    "cook_minutes": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10080
    },
    "difficulty": {
      "type": "string",
      "enum": [
        "easy",
        "moderate",
        "challenging"
      ]
    },
    "cuisine": {
      "default": "Home cooking",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "meal_types": {
      "minItems": 1,
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "breakfast",
          "lunch",
          "dinner"
        ]
      }
    },
    "ingredients": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "raw_text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 100000
              },
              {
                "type": "null"
              }
            ]
          },
          "unit": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              {
                "type": "null"
              }
            ]
          },
          "quantity_text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "section": {
            "type": "string",
            "enum": [
              "Produce",
              "Meat",
              "Dairy",
              "Pantry",
              "Frozen",
              "Household"
            ]
          },
          "optional": {
            "default": false,
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "raw_text",
          "amount",
          "unit",
          "section"
        ],
        "additionalProperties": false
      }
    },
    "instructions": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 3000
      }
    },
    "tags": {
      "default": [],
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 50
      }
    }
  },
  "required": [
    "operation_id",
    "title",
    "servings",
    "prep_minutes",
    "cook_minutes",
    "difficulty",
    "meal_types",
    "ingredients",
    "instructions"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "schema_version": {
      "type": "string",
      "const": "1"
    },
    "result": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "schema_version",
    "result"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴update_recipe(operation_id, recipe_id, expected_version_id, expected_revision, version_label, ...)

Update an existing recipe as a named version only after the user reviews the changes and asks to save them. First use get_recipe; copy version_id and version_revision into the expected fields. Submit the complete revised recipe: omitted ingredients and directions are removed. Map existing ingredient_id values to source_ingredient_id; use null for new ingredients. Keep current display_text and preserve qualitative or ranged quantities as null. Retains the recipe ID, image, source, earlier versions, and versions used by planned meals. External services may prepare optional nutrition and search updates. On version_conflict, read and review again before a new operation; never silently rebase or create a duplicate.

입력 스키마

{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "string",
      "minLength": 16,
      "maxLength": 128,
      "description": "A unique ID for this user-requested action. Reuse this exact ID and payload after a timeout; use a new ID only for a new action."
    },
    "recipe_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "expected_version_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "The current version_id returned by get_recipe before discussing this edit."
    },
    "expected_revision": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Copy version_revision from that same get_recipe result. On conflict, reload and review with the user; never silently overwrite."
    },
    "version_label": {
      "default": "Our edited version",
      "description": "A short descriptive name, such as Less sweet. Use the version label requested by the user, if any.",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "change_summary": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    },
    "servings": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "prep_minutes": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1440
    },
    "cook_minutes": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1440
    },
    "difficulty": {
      "type": "string",
      "enum": [
        "easy",
        "moderate",
        "challenging"
      ]
    },
    "ingredients": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "source_ingredient_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^ingredient_[1-9]\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "description": "Copy ingredient_id from the base recipe for retained or changed rows; null only for a newly added ingredient. Omit removed rows."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 180
          },
          "display_text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 100000
              },
              {
                "type": "null"
              }
            ]
          },
          "unit": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              {
                "type": "null"
              }
            ]
          },
          "quantity_text": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 160
              },
              {
                "type": "null"
              }
            ]
          },
          "group": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "preparation": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 180
              },
              {
                "type": "null"
              }
            ]
          },
          "note": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 300
              },
              {
                "type": "null"
              }
            ]
          },
          "optional": {
            "type": "boolean"
          }
        },
        "required": [
          "source_ingredient_id",
          "name",
          "display_text",
          "amount",
          "unit",
          "quantity_text",
          "group",
          "preparation",
          "note",
          "optional"
        ],
        "additionalProperties": false
      }
    },
    "instructions": {
      "minItems": 1,
      "maxItems": 80,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 2000
      }
    }
  },
  "required": [
    "operation_id",
    "recipe_id",
    "expected_version_id",
    "expected_revision",
    "change_summary",
    "title",
    "description",
    "servings",
    "prep_minutes",
    "cook_minutes",
    "difficulty",
    "ingredients",
    "instructions"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "schema_version": {
      "type": "string",
      "const": "1"
    },
    "result": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "schema_version",
    "result"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡add_grocery_item(operation_id, item)

Add a grocery item to the connected household's private grocery list in Brie.

입력 스키마

{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "string",
      "minLength": 16,
      "maxLength": 128,
      "description": "A unique ID for this user-requested action. Reuse this exact ID and payload after a timeout; use a new ID only for a new action."
    },
    "item": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "required": [
    "operation_id",
    "item"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "schema_version": {
      "type": "string",
      "const": "1"
    },
    "result": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "schema_version",
    "result"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_grocery_list(scope, include_checked, offset, limit)

Read the connected household's grocery list. shop-now covers Upcoming; all-planned includes future planned meals. Returns paginated results; follow next_offset until null to retrieve the complete list.

입력 스키마

{
  "type": "object",
  "properties": {
    "scope": {
      "default": "shop-now",
      "type": "string",
      "enum": [
        "shop-now",
        "all-planned"
      ]
    },
    "include_checked": {
      "default": false,
      "type": "boolean"
    },
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 10000
    },
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "schema_version": {
      "type": "string",
      "const": "1"
    },
    "result": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "schema_version",
    "result"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 8개