Unofficial Monsieur Cuisine MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MC_LOG_LEVEL | No | Verbose 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_recipesA | Search Monsieur Cuisine recipes by free text and/or filters. IMPORTANT: Each result includes a |
| 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 |
| 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 Each result's top-level |
| 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 Requires a saved login session: run |
| add_favorite_recipeA | Add a recipe to the logged-in user's favorites (bookmarks). Requires a saved login session: run IMPORTANT: |
| remove_favorite_recipeA | Remove a recipe from the logged-in user's favorites (bookmarks). Requires a saved login session: run IMPORTANT: |
| search_ingredientsA | Search the Monsieur Cuisine ingredient database, returning matching
ingredients with their Use this to find the Requires a saved login session: run |
| 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 Requires a saved login session: run |
| 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 Requires a saved login session: run The valid step |
| 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
( Field meanings match create_recipe. IMPORTANT - collection fields REPLACE
the current value when supplied: passing |
| 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 Requires a saved login session: run |
| 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 |
| 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:
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 |
| 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 A recipe that fails the publish-completeness check stays as a draft and
its |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
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.
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.
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.
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.