Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MEALIE_URLYesThe URL of your Mealie instance
MEALIE_API_KEYYesYour Mealie API token

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

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_recipesA

Search recipes by keyword with optional category/tag filters.

Args: query: Search text (name, description, ingredients) page: Page number (default 1) per_page: Results per page (default 10) categories: Filter by category slugs tags: Filter by tag slugs

get_recipeA

Get full recipe details including ingredients, instructions, and nutrition.

Args: slug: Recipe slug identifier (from search results)

get_recipe_ingredientsA

Get just the ingredient list for a recipe.

Args: slug: Recipe slug identifier

create_recipe_from_urlA

Import a recipe by scraping a URL. Mealie will extract the recipe data automatically.

Args: url: URL of the recipe page to import

create_recipeA

Create a new recipe manually.

Args: name: Recipe name description: Short description recipe_yield: Yield description (e.g. "15–18 rolls", "1 loaf") servings: Numeric serving count that enables scaling (e.g. 6, 8, 15) total_time: Total time (e.g. "45 minutes") prep_time: Prep time perform_time: Cook time ingredients: List of ingredient dicts, each with optional keys: - section (str): creates a visual section header (no other fields used) - quantity (float): numeric amount (e.g. 300, 2.5) - unit (str): unit name or abbreviation (e.g. "g", "cup", "tbsp") - food (str): ingredient name (e.g. "bread flour", "butter") - comment (str): extra info shown alongside (e.g. "softened", "about 1¾ tsp") instructions: List of instruction steps — each may be a plain string or a dict with: - text (str): step body - title (str, optional): step heading shown in UI - summary (str, optional): one-line takeaway for cook mode - ingredient_refs (list[str], optional): UUIDs of linked ingredients categories: Category names to assign tags: Tag names to assign notes: List of note dicts, each with: - title (str): section label (e.g. "Non-Negotiables") - text (str): note body extras: Arbitrary JSON metadata (e.g. {"isFoundation": true})

update_recipeA

Update fields on an existing recipe. Only provided fields are changed.

Args: slug: Recipe slug to update name: New recipe name description: New description recipe_yield: Yield description (e.g. "15–18 rolls", "1 loaf") servings: Numeric serving count that enables scaling (e.g. 6, 8, 15) total_time: New total time prep_time: New prep time perform_time: New cook time ingredients: Replace ingredient list. Each dict has optional keys: - section (str): creates a visual section header (no other fields used) - quantity (float): numeric amount (e.g. 300, 2.5) - unit (str): unit name or abbreviation (e.g. "g", "cup", "tbsp") - food (str): ingredient name (e.g. "bread flour", "butter") - comment (str): extra info shown alongside (e.g. "softened", "about 1¾ tsp") instructions: Replace instruction steps — each may be a plain string or a dict with: - text (str): step body - title (str, optional): step heading shown in UI - summary (str, optional): one-line takeaway for cook mode - ingredient_refs (list[str], optional): UUIDs of linked ingredients categories: Replace categories tags: Replace tags notes: Replace note blocks. Each dict has: - title (str): section label (e.g. "Non-Negotiables") - text (str): note body extras: Replace arbitrary JSON metadata (e.g. {"isFoundation": true})

delete_recipeA

Delete a recipe permanently.

Args: slug: Recipe slug to delete

get_shopping_listsA

List all shopping lists.

get_shopping_listA

Get a shopping list with all its items.

Args: list_id: Shopping list ID (from get_shopping_lists)

create_shopping_listB

Create a new empty shopping list.

Args: name: Name for the new list

delete_shopping_listC

Delete a shopping list.

Args: list_id: Shopping list ID to delete

add_shopping_list_itemB

Add an item to a shopping list.

Args: list_id: Shopping list ID note: Item description (e.g. "2 lbs chicken breast") quantity: Numeric quantity (optional, for structured items) unit_id: Unit ID from get_units (optional) food_id: Food ID from search_foods (optional)

remove_shopping_list_itemB

Remove an item from a shopping list.

Args: list_id: Shopping list ID (for context) item_id: Item ID to remove (from get_shopping_list)

check_shopping_list_itemA

Check or uncheck a shopping list item.

Args: list_id: Shopping list ID item_id: Item ID to check/uncheck checked: True to check, False to uncheck (default True)

add_recipe_to_shopping_listB

Add all ingredients from a recipe to a shopping list.

Args: list_id: Shopping list ID recipe_slug: Recipe slug to add ingredients from

get_meal_plansB

Get meal plan entries for a date range.

Args: start_date: Start date (YYYY-MM-DD) end_date: End date (YYYY-MM-DD)

create_meal_plan_entryA

Add a meal plan entry for a specific date.

Args: date: Date for the entry (YYYY-MM-DD) entry_type: Meal type — "breakfast", "lunch", "dinner", or "side" recipe_slug: Recipe slug to plan (use this OR title/note) title: Free-text title (for non-recipe entries) note: Additional note text

delete_meal_plan_entryA

Remove a meal plan entry.

Args: entry_id: Meal plan entry ID (from get_meal_plans)

generate_random_meal_planA

Auto-fill a date range with random recipes from your collection.

Args: start_date: Start date (YYYY-MM-DD) end_date: End date (YYYY-MM-DD) entry_type: Meal type — "breakfast", "lunch", "dinner", or "side" (default "dinner")

get_categoriesA

List all recipe categories.

get_tagsA

List all recipe tags.

get_cookbooksA

List all cookbooks.

get_cookbook_recipesB

Get recipes in a cookbook.

Args: cookbook_slug: Cookbook slug identifier page: Page number (default 1) per_page: Results per page (default 10)

create_categoryA

Create a new recipe category.

Args: name: Category name

create_tagA

Create a new recipe tag.

Args: name: Tag name

search_foodsC

Search the foods database.

Args: query: Search text page: Page number (default 1) per_page: Results per page (default 10)

get_unitsA

List all measurement units available in Mealie.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 27 tools

Disambiguation4/5

Each tool targets a distinct resource/action pair, and the descriptions clarify boundaries. Minor overlap exists between get_recipe/get_recipe_ingredients and add_recipe_to_shopping_list/add_shopping_list_item, but an agent should be able to disambiguate.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (get_, create_, delete_, search_, update_, add_, remove_, check_, generate_). Even compound tools like create_recipe_from_url stay within the convention.

Tool Count3/5

27 tools is on the heavy side and above the typical 3-15 range, but the server covers several coherent subdomains: recipes, meal planning, shopping lists, and taxonomy. The count is manageable because almost every tool maps to a distinct operation, though a few convenience tools could be consolidated.

Completeness4/5

Recipe CRUD, import, search, meal-plan management, and shopping-list item workflows are well covered. Minor gaps remain for updating/deleting categories, tags, and cookbooks, and for updating meal-plan entries or shopping-list items.

Maintenance

ActivityInactive
ResponsivenessNo issues