Sabor
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SABOR_HOST | No | Host to bind the server to | 0.0.0.0 |
| SABOR_PORT | No | Port to bind the server to | 8080 |
| BRING_EMAIL | No | Optional Bring! email for shopping-list sync and item additions | |
| MEMORY_FILE | No | Path to persistent local memory file for feedback, pantry notes, and learned preferences | |
| BRING_PASSWORD | No | Optional Bring! password | |
| GEMINI_API_KEY | No | Optional API key for Gemini to analyze videos and import extracted recipes | |
| MEALIE_BASE_URL | Yes | Base URL of the Mealie instance | |
| SABOR_HOST_PORT | No | Docker host port for publishing the service | 9170 |
| MEALIE_API_TOKEN | Yes | Mealie API token | |
| SABOR_NUTRITION_DB | No | Path to the nutrition SQLite database | |
| MERCADONA_WAREHOUSE | No | Warehouse selected for Mercadona product search, prices, cost estimates, and price drops | |
| SPOONACULAR_API_KEY | No | Optional API key for Spoonacular recipe search, nutrient search, and ingredient nutrition | |
| SABOR_NUTRITION_ENABLED | No | Opt-in flag to enable nutrition support; off by default | false |
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 |
|---|---|
| import_recipeB | Preview or import recipes. Video previews may download media and incur LLM costs. Image creation has no read-only preview. Local media paths are unsupported. |
| search_recipesC | Search recipes by stable filter IDs with upstream pagination; sort by name. |
| get_recipeB | Read structured ingredients, instructions, taxonomy and times; unknowns stay null. |
| update_recipeC | Preview or PATCH selected fields. Arrays replace whole lists, not individual entries. |
| suggest_recipesC | Suggest recipes from food/tool IDs, preserving missing foods and tools. |
| create_recipeA | Create a recipe in Mealie using structured fields, not URL import. |
| get_shopping_listsA | Devuelve todas las listas de compra del hogar con sus IDs y nombres. |
| create_shopping_listC | Crea una nueva lista de compra vacia con el nombre indicado. |
| delete_shopping_listA | Preview deletion of a shopping list; pass confirm=True to delete it permanently. |
| clear_shopping_listA | Preview removal of all shopping items; pass confirm=True to clear the list. |
| get_or_create_shopping_listA | Busca una lista de compra por nombre; si no existe, la crea. Devuelve siempre el ID. |
| add_to_shopping_listB | Add exactly one source to a list. The client must get user approval before calling. Items remain unparsed notes; recipe scaling uses the explicit servings multiplier. |
| get_shopping_list_itemsB | Read one list's items, optionally filter checked state, then paginate locally. |
| check_shopping_list_itemsC | Set checked state only after verifying every requested item belongs to the list. |
| remove_shopping_list_itemsA | Preview item removal; confirm=True deletes exactly the verified item IDs. |
| get_mealplan_weekB | Obtiene el plan de comidas para un rango de fechas (YYYY-MM-DD). |
| set_mealplan_entryC | Anade una entrada al calendario de Mealie. entry_type: lunch|dinner|breakfast|side. |
| delete_mealplan_entryC | Elimina una entrada del plan de comidas por su ID. |
| clear_mealplan_weekA | Preview entries removed in a date range; pass confirm=True to clear them. |
| get_or_create_tagA | Busca un tag por nombre (case-insensitive); si no existe, lo crea. |
| tag_recipeB | Asigna etiquetas a una receta. Conserva tags existentes y anade los nuevos. |
| add_recipe_commentC | Anade un comentario a una receta en Mealie (rating, notas, feedback). |
| log_cooking_eventC | Registra un evento en el timeline de una receta (cooking log / historial). |
| sabor_capabilitiesA | Describe configured toolsets and the actual registered tool surface. |
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 24 tools
Tools are grouped by resource (recipes, shopping lists, meal plans, tags), and most actions are distinct. However import_recipe vs create_recipe and create_shopping_list vs get_or_create_shopping_list can be confused, and delete/clear/remove shopping-list tools require careful selection.
Almost all tools use snake_case with verb_noun or verb_preposition_noun patterns. Outliers like sabor_capabilities and compound get_or_create_* names slightly break the pattern but remain readable and consistent in casing.
24 tools is heavy for a single MCP server; the broad domain justifies many but still sits in the borderline 16-25 range. Some meta or compound tools could potentially be consolidated.
Core workflows for recipes, shopping lists, and meal plans are covered with preview/confirm patterns. But there is no delete_recipe, no read/delete for recipe comments or cooking events, and no list/delete tags, leaving notable lifecycle gaps.