Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MC_LOG_LEVELNoVerbose logs: set MC_LOG_LEVEL=DEBUG or pass --debug to either command.DEBUG

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
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_recipesA

Search Monsieur Cuisine recipes by free text and/or filters.

IMPORTANT: categories, ingredient_categories and complexity are language-dependent - their valid identifiers differ per language (e.g. category IDs and complexity labels for "pl-PL" are entirely different from "en-US"). Always call list_recipe_filters(language) first with the same language to get valid identifiers for these three arguments.

Each result includes a url field pointing at the recipe's web page - do not fetch that page directly. Instead, pass the result's id to the get_recipe tool, which returns the same data as clean JSON.

list_recipe_filtersA

List available recipe search filters and their valid option identifiers for a given language.

Call this before search_recipes whenever you need to pass categories, ingredient_categories or complexity, since their valid identifiers are specific to language and differ between locales.

get_recipeA

Fetch full details for a single recipe: ingredients, step-by-step instructions per serving size, and nutrients (calories/protein/ carbohydrate/fat).

Always call this tool to get recipe details instead of fetching the recipe's web page directly - the web page requires a headless browser to render and does not expose this data as clean JSON.

Works for public recipes without login. It also reads the caller's OWN unpublished recipes (draft / private-publish) - those aren't served by the public API, so it falls back to the authenticated endpoint, which needs a saved login session. (Own recipes come back in a slightly different shape.)

list_favorite_recipesA

List the logged-in user's favorite (bookmarked) recipes, with full recipe details for each one.

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand to log in manually in a browser window. If no session is saved, this tool raises an error telling the user to do that.

Each result's top-level translationId field is what remove_favorite_recipe expects - not the nested recipe's id field.

list_my_recipesA

List the logged-in user's OWN recipes - the web app's "My recipes" page.

This is the recipes the user authored (drafts, in-review, published and rejected), which is different from list_favorite_recipes (recipes the user bookmarked). Each entry's id is the numeric recipe id used by delete_recipe and get_recipe. Trashed/deleted recipes are never listed.

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand. If no session is saved, this tool raises an error telling the user to do that.

add_favorite_recipeA

Add a recipe to the logged-in user's favorites (bookmarks).

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand to log in manually in a browser window. If no session is saved, this tool raises an error telling the user to do that.

IMPORTANT: translation_id is the recipe's translationId field from a search_recipes/get_recipe result - NOT the numeric recipe id used by those same tools. Always call search_recipes or get_recipe first to look up the correct translationId for the recipe to add.

remove_favorite_recipeA

Remove a recipe from the logged-in user's favorites (bookmarks).

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand to log in manually in a browser window. If no session is saved, this tool raises an error telling the user to do that.

IMPORTANT: translation_id is the bookmark/recipe translationId field from a list_favorite_recipes result - NOT the numeric recipe id used by get_recipe/search_recipes. Always call list_favorite_recipes first to look up the correct translationId for the recipe to remove.

search_ingredientsA

Search the Monsieur Cuisine ingredient database, returning matching ingredients with their systemIngredientId.

Use this to find the system_ingredient_id for an ingredient before passing it to create_recipe, when you want to guarantee the exact database ingredient rather than relying on create_recipe's automatic first-match resolution of a plain name.

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand. If no session is saved, this tool raises an error telling the user to do that.

list_recipe_creation_optionsA

List the valid option identifiers for creating a recipe in a given language: complexity levels, categories, serving units, ingredient units and device types.

Call this before create_recipe whenever you need to set complexity_id or category_ids, since their valid ids are language-specific and differ between locales.

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand. If no session is saved, this tool raises an error telling the user to do that.

create_recipeA

Create a new recipe as a DRAFT under the logged-in user's account.

The recipe is created for the Monsieur Cuisine Smart (MC3.0), the only supported device. Only title is required. The recipe is saved as a draft (status "draft") and is NOT published. Pass image_path to attach a dish photo (see below). Publishing is a separate step: once the draft is complete, call publish_recipe (public review, or private=True for a private publish). A published recipe cannot be reverted to a draft; to take it down, switch it to private or delete it with delete_recipe.

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand. If no session is saved, this tool raises an error telling the user to do that.

The valid step program names and their params are listed in full under steps below - you do NOT need another call to enumerate them. Only complexity_id and category_ids are language-specific ids you cannot guess: call list_recipe_creation_options(language) first (same language) to get those, or omit them (a draft is valid without them).

edit_recipeA

Edit one of the logged-in user's own recipes (the "Edit" button in the web app). Only the fields you pass are changed; everything else is kept.

This is the counterpart to create_recipe: it fetches the recipe and re-saves it as a whole (the update is a full replace), so any argument left unset keeps its current value. The recipe keeps its current status; a published recipe is re-saved in place and must stay complete (the server rejects an edit that would make it incomplete). Requires a saved login session (uv run monsieur-cuisine-mcp-login).

Field meanings match create_recipe. IMPORTANT - collection fields REPLACE the current value when supplied: passing steps replaces ALL steps, and passing ingredients and/or ingredient_groups replaces ALL ingredient groups (so re-send the full list, not just the changed entries). Nutrients are merged instead: only the calories/protein/carbohydrate/fat you pass are overwritten. image_path replaces the cover photo. See create_recipe for the step/ingredient/program shapes.

delete_recipeA

Delete one of the logged-in user's own recipes (moves it to trash).

This is the "Delete" action from the web app's "My recipes" list ("..." menu): it sets the recipe's status to "trash", so it disappears from the recipe list. The web app has no trash view or restore button, so on the website this is effectively permanent. Technically it's a soft delete - the data is kept server-side and can be brought back with restore_recipe - but there is no hard-delete endpoint, so a trashed recipe stays in trash forever. Works for the user's own recipes in any status; it cannot delete recipes that are not the user's own.

Because this changes the user's account, only call it for a recipe the user has clearly asked to delete, identified by its recipe_id (from list_my_recipes / the create_recipe result). The result reports the deleted recipe's title and previous status.

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand.

restore_recipeA

Restore a trashed recipe (undo delete_recipe), bringing it back as a draft.

delete_recipe only moves a recipe to "trash" and keeps its data, so this can undo it. The web app can't (it has no trash view), but the API allows it. The recipe comes back as a DRAFT no matter what it was before deletion, so if it was published, re-publish it with publish_recipe afterwards. Find trashed recipes to restore with list_my_recipes(status="trash").

Meaningful only on a trashed recipe: on an already-published recipe it fails (a live recipe can't be moved back to draft); on a draft it's a no-op.

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand.

publish_recipeA

Publish one of the logged-in user's own DRAFT recipes.

The workflow is: create_recipe makes a draft, then this tool publishes it. Two modes, mirroring the web app's publish dialog:

  • private=False (default): PUBLIC publish - submits the recipe for editorial review (status "pending"); it goes public only after the Monsieur Cuisine team approves it. The web app requires confirming the recipe and photo are your own original content; publishing here asserts the same, so only do it when the user intends to submit their original recipe for public review.

  • private=True: PRIVATE publish (status "private-publish") - published only to the user's own account, no review.

The recipe must be complete or the server refuses to publish (a clear "not complete" error lists what is missing): cover photo, complexity, categories, a serving size, at least one ingredient, and a non-empty title on every step and ingredient group.

Also switches an already-published recipe between public and private. NOTE: a published recipe cannot be reverted to a draft (the platform forbids it) - to take one down, switch it to private (private=True) or use delete_recipe.

Requires a saved login session: run uv run monsieur-cuisine-mcp-login once beforehand.

analyze_recipeB

Deeply analyze one of the user's own recipes BEFORE publishing it.

list_paprika_recipesA

List the recipes inside a Paprika app export archive (.paprikarecipes.zip).

Read-only preview of what the export contains: one entry per recipe with its name, servings, difficulty, Paprika categories and whether it has an embedded photo. Use get_paprika_recipe to preview the full Monsieur Cuisine conversion of one recipe, or import_paprika_recipes to create and publish them on the user's account.

get_paprika_recipeA

Preview how ONE recipe from a Paprika export converts to a Monsieur Cuisine Smart recipe, without creating anything.

Returns the parsed Paprika fields plus the converted payload: ingredients split into amount/unit/name, direction sentences mapped onto device programs (Thermomix "3 sec/speed 7" -> customized, "5 min/120°C/speed 1" -> customized, "212°F/reverse speed 1" -> customized reverse, "weigh 50 g" -> scale, oven/simmer notation -> roasting/slow_cooking/steaming/kneading), mapped category/complexity ids, parsed servings/times/nutrition, and the extracted cover-image file. Review a tricky conversion here, fix it with create_recipe/edit_recipe if needed - or skip straight to import_paprika_recipes, which does the same conversion automatically.

import_paprika_recipesA

Import recipes from a Paprika export archive onto the user's Monsieur Cuisine account, converting each one and (by default) publishing it.

For every selected recipe this: splits the ingredient lines into amount/unit/name ("30 g olive oil"), maps the Thermomix-style directions onto Monsieur Cuisine Smart device programs (customized / slow_cooking / roasting / steaming / kneading / scale - including a scale weighing step wherever the recipe calls for weighing), parses servings, prep/total times and the nutritional_info block, uploads the embedded photo as cover image, maps the Paprika categories/difficulty onto the language's MC category and complexity ids, then creates the recipe and (publish=True) publishes it immediately - private=True publishes only to the user's own account (no editorial review), private=False submits it for public review.

A recipe that fails the publish-completeness check stays as a draft and its publish_error is reported; fix it with edit_recipe + analyze_recipe, then publish_recipe. Re-running with skip_existing=True never creates duplicates (recipes already among the user's own are skipped).

cookidoo_loginA

Log in to Cookidoo (Thermomix's official recipe platform) and cache the auth token, so Cookidoo recipes can be imported afterwards.

Credentials can be passed explicitly here, or set once via the COOKIDOO_EMAIL / COOKIDOO_PASSWORD environment variables (and optionally COOKIDOO_COUNTRY, default 'gb', and COOKIDOO_LANGUAGE, default 'en-GB') in a .env file in the project root. The token is cached in .cookidoo_token and reused on later calls.

cookidoo_statusA

Report whether Cookidoo credentials and a cached token are available.

get_cookidoo_recipeA

Preview how ONE Cookidoo recipe converts to a Monsieur Cuisine Smart recipe, without creating anything.

Accepts a Cookidoo recipe id (e.g. 'r59322') or a full Cookidoo URL (e.g. 'https://cookidoo.co.uk/recipes/recipe/en-GB/r59322'). Requires a prior cookidoo_login (or COOKIDOO_EMAIL/COOKIDOO_PASSWORD env vars).

Returns the parsed Cookidoo fields plus the converted payload: ingredients (amount/unit/name), steps with detected device programs (Thermomix '3 sec/speed 7' -> customized, '15 min/100°C/speed 1' -> customized, oven/Varoma -> roasting/steaming/slow_cooking/kneading, 'weigh N g' -> scale), mapped category/complexity ids, parsed servings/times/nutrition, and the downloaded cover-image file.

import_cookidoo_recipeA

Import ONE Cookidoo recipe into the user's Monsieur Cuisine account.

Fetches the recipe from Cookidoo (Thermomix settings included), converts it (ingredients split, Thermomix -> MC Smart device programs, times, servings, nutrition, cover photo), creates the recipe and (publish=True) publishes it. private=True publishes only to the user's own account (no editorial review).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 22 tools

Disambiguation4/5

Tools are mostly clearly distinct: search vs get vs create/edit/delete/restore/publish form a recognizable lifecycle, and the Paprika vs Cookidoo import triplets are separated by verb (list/get/import). A few boundaries require reading descriptions (list_my_recipes vs list_favorite_recipes, list_recipe_filters vs list_recipe_creation_options, analyze_recipe has a vague description), but overlaps are minor.

Naming Consistency4/5

Nearly all names follow snake_case verb_noun (search_recipes, create_recipe, import_paprika_recipes). The only deviation is cookidoo_status (noun-first), which is a small, understandable exception for a status tool. Overall predictable and readable.

Tool Count4/5

22 tools is a bit above the ideal 3-15 range but each maps to a real operation across recipe CRUD, favorites, filters, ingredients, Paprika import and Cookidoo import. Nothing feels redundant or padding, though the surface is on the heavy side.

Completeness4/5

The recipe lifecycle is well covered: search/get/create/edit/delete/restore/publish/analyze, favorites add/remove/list, plus filters and two external import pipelines. Minor gaps exist (no ratings/comments, no public-recipe listing, no hard delete), but agents can work around them.