Unofficial Monsieur Cuisine MCP
Integrates with Lidl's Monsieur Cuisine recipe service using your own Lidl account, enabling recipe search and reading, favorite management, and authoring/editing/publishing of recipes with ingredients, nutrients, steps, device programs, and cover photos.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Unofficial Monsieur Cuisine MCP Create a private 450 kcal high-protein lunch for two with smart steps."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Unofficial Monsieur Cuisine MCP
An unofficial MCP server (built with FastMCP) that lets an AI assistant search, read, create, edit, and publish recipes on the Monsieur Cuisine service (Lidl's Monsieur Cuisine / LidlMix) using your own account.
This is a vibe-coded prototype. The whole thing was built conversationally, end to end. It works and it's been tested against a real account — but treat it as a proof-of-concept, not production-grade code. There are no unit tests, the API is reverse-engineered from the web app (so it can break any time Lidl changes something), and every "authoring" tool writes to your real account. Have fun with it, but don't build anything important on top of it.
Monsieur Cuisine Smart (MC3.0) only. The recipe-authoring features (device programs and automatic step modes) are built and tested exclusively for the Monsieur Cuisine Smart (MC3.0). Other models expose a different, smaller program set that isn't supported here, so creating/editing recipes for them may fail or produce wrong steps.
Disclaimer
Unofficial and not affiliated with, endorsed by, or supported by Lidl, Monsieur Cuisine, or TecPal. "Monsieur Cuisine" and "Lidl" are trademarks of their respective owners. Use at your own risk, and be nice to the servers.
You are responsible for complying with Monsieur Cuisine's Terms of Service. This MCP was built for personal use — to get more enjoyment out of your own kitchen robot — not for disrupting the service or infringing anyone's intellectual property. Don't hammer the servers, don't scrape or redistribute content that isn't yours, and don't publish recipes or photos you don't own the rights to. How you use it is on you.
Related MCP server: Paprika MCP Server
What it does
Monsieur Cuisine has no official API. This server talks to the same endpoints the web app uses — the public recipe API, plus the site's session-authenticated proxy for your own recipes and favorites — and exposes them as clean MCP tools. Point any MCP-capable assistant at it and you can say things like "build me a 450-kcal high-protein lunch for two and save it privately" and it'll actually do it.
Cool things to try
These are just natural-language prompts to your assistant — it picks the tools.
🎯 Hit an exact calorie & macro target.
"Create a private recipe for a high-protein lunch bowl at about 450 kcal with 40 g protein, 30 g carbs and 15 g fat, 2 servings. Add realistic ingredient amounts and step-by-step Monsieur Cuisine smart instructions, then publish it privately."
🧊 Cook from whatever's in the fridge.
"I've got chicken thighs, a zucchini, half an onion, garlic and some rice. Find recipes I can make on my Monsieur Cuisine — and if nothing fits, draft a new one that uses them and set the device programs for each step."
⚖️ Rescale servings.
"Take my 'Zupa jarzynowa' recipe and change it from 3 servings to 6 — scale the ingredient amounts accordingly and bump the times if it needs it."
🥗 Nutrition-tune an existing recipe.
"Edit my pancake recipe to bring it down to ~300 kcal per serving and raise protein to 20 g, keeping everything else the same."
📸 Recipe with a cover photo, ready to publish.
"Create a draft for oatmeal with berries, attach
~/photos/oatmeal.jpgas the cover, fill in nutrients and steps, then publish it privately."
🧹 Tidy up.
"List all my recipes, publish the two soup drafts privately, and delete the empty test ones."
Requirements
Python ≥ 3.10 (developed on 3.12)
uv for dependency management
A real Monsieur Cuisine / Lidl account (login happens in a real browser)
A Monsieur Cuisine Smart (MC3.0) — the recipe-authoring features target this model only
Dependencies (installed via
uv sync):fastmcp,httpx,playwright
Setup
# 1. Install dependencies
uv sync
# 2. Install the browser used for the one-time login (once)
uv run playwright install chromium
# 3. Log in — a real browser window opens; sign in normally (CAPTCHA/2FA included)
uv run monsieur-cuisine-mcp-loginLidl's login (accounts.lidl.com) is interactive and CAPTCHA-protected, so
there's no headless login — you log in manually in the browser window that
opens. Once the session is established, the cookies are saved to
~/.monsieur-cuisine-mcp/storage_state.json and reused until they expire.
Re-run the login command whenever the session lapses.
The login uses your installed Google Chrome when it's available (falling
back to the bundled Chromium) and keeps its own browser profile in
~/.monsieur-cuisine-mcp/browser-profile, so repeat logins look like the same
returning device. If a login fails, it writes a timestamped trace — navigations,
request statuses, console errors — to ~/.monsieur-cuisine-mcp/last-login.log.
No passwords and no request/response bodies are ever recorded.
Run the server
uv run monsieur-cuisine-mcp # starts the MCP server over stdioConnect it to an MCP client
Claude Code:
claude mcp add monsieur-cuisine -- uv run --directory /path/to/Unofficial-Monsieur-Cuisine-MCP monsieur-cuisine-mcp…or the generic JSON config most MCP clients understand:
{
"mcpServers": {
"monsieur-cuisine": {
"command": "uv",
"args": ["run", "--directory", "/path/to/Unofficial-Monsieur-Cuisine-MCP", "monsieur-cuisine-mcp"]
}
}
}Verbose logs: set MC_LOG_LEVEL=DEBUG or pass --debug to either command.
Tools
Fourteen tools, grouped by what they touch.
Discover & read — public, no login needed
Tool | What it does |
| Search the public catalog with rich filters: category, complexity, duration, rating, device type, and even nutrient ranges (kcal / protein / carbs / fat). |
| List the valid filter option ids (categories, complexity, …) for a language — feed these into |
| Full details for a recipe by id: ingredients, per-serving steps, and nutrients. Also reads your own drafts/private recipes when you're logged in. |
Your account — login required
Tool | What it does |
| Your own authored recipes, filterable by status (draft / in-review / private / published). |
| Your bookmarked recipes. |
| Bookmark or un-bookmark a recipe. |
| Search the ingredient database (returns the ingredient ids used to link steps to real ingredients). |
Author recipes — login required
Tool | What it does |
| Valid complexity/category/unit/device ids plus the full device-program catalog (customized, steaming, sous-vide, cooking eggs, …). |
| Create a draft: title, description, servings, prep/ready times, whole-number nutrients, ingredient groups, steps with automatic device programs, and an optional cover photo. |
| Change any fields of one of your recipes — only what you pass is updated, everything else is preserved. |
| Publish a draft privately, or submit it for public editorial review. Also flips an already-published recipe between private and public. |
| Move one of your recipes to trash (works from any status). |
| Bring a trashed recipe back as a draft (undo a delete). |
How it works
Public API (
mc-api.tecpal.com) — search, filters, and public recipe details. No auth.Session proxy (
/proxy-api) — everything tied to your account (favorites, your own recipes, create/edit/publish/delete), authenticated with the browser cookies from the manual login.WordPress admin-ajax — the recipe-creation "guide" (valid categories, units, devices).
The code lives in a small package split by concern: client (the authenticated
proxy call + error handling), search, favorites, ingredients, nutrients,
media (cover-photo upload), payloads (recipe read→write mapping), devices
(the device-program catalog and step builder), lifecycle (status changes +
listing), and authoring (create/edit).
Good to know / limitations
It's your real account. Authoring tools create, change, publish, and trash real recipes.
delete_recipemoves a recipe to trash — it vanishes from the site (which has no trash view or restore button, so treat it as permanent there), but the data is kept andrestore_recipecan bring it back as a draft. There's no hard-delete, so trashed recipes linger server-side forever.Nutrients must be whole numbers — fractional values are rounded.
Every step needs a title and every ingredient group needs a name to be publishable; the tools auto-fill sensible defaults ("Step 1", "General Ingredients") so drafts stay publishable.
Publishing is a one-way street away from "draft". A published recipe can be switched between private and public, or deleted — but it cannot be reverted to a draft (the platform forbids it).
Public vs. private publish. "Private" is instant; "public" submits the recipe for Monsieur Cuisine's editorial review and only goes live after they approve it.
Some categories aren't assignable.
list_recipe_creation_optionsreturns a few categories the create API rejects; if you hitInvalid category, pick a different one.Rate limiting. Bursts of write calls can get temporarily throttled — space them out.
Vibe-coded extensions in this fork
This fork (published as monsieur-cuisine-mcp-vibe) was built conversationally on
top of the original server — i.e. vibe-coded, end to end, with an AI coding
assistant driving the changes. It keeps the original tools intact and adds:
English (
en-US) by default for all Monsieur Cuisine operations (the upstream default is Polishpl-PL), including the matching login locale.Paprika import (
list_paprika_recipes,get_paprika_recipe,import_paprika_recipes): reads a Paprika.paprikarecipes.zipexport and converts each recipe — splitting ingredient lines into amount/unit/name, mapping Thermomix free-text notation (3 sec/speed 7,15 min/100°C/speed 1,212°F/reverse speed 1,weigh 50 g, oven/Varoma settings) onto Monsieur Cuisine Smart device programs (customized,slow_cooking,roasting,steaming,kneading,scale), parsing servings/times/nutrition, uploading the embedded photo as the cover image, mapping categories/difficulty onto the locale's ids, then creating and (optionally) publishing each recipe. Re-runs are idempotent viaskip_existing.Automatic
scaleweigh steps wherever a recipe calls for weighing, so gram-weighted ingredients actually get a weighing step.Pre-publish analysis (
analyze_recipe) and a publish gate:publish_recipenow runs the analyzer first and refuses to publish recipes with blocking issues (missing quantities, empty step titles, missing cover photo).Cookidoo import (
cookidoo_login,cookidoo_status,get_cookidoo_recipe,import_cookidoo_recipe): logs in to Cookidoo (Thermomix's official recipe platform) via the unofficialcookidoo-apipackage and imports a recipe by id or URL, converting Thermomix steps to MC Smart programs, parsing nutrition, uploading the cover photo, and creating/publishing. Credentials viaCOOKIDOO_EMAIL/COOKIDOO_PASSWORDenv vars or a.envfile (gitignored); the auth token is cached in.cookidoo_token.
Treat this fork with the same caution as the upstream: reverse-engineered API, no unit tests, writes to your real account.
License
Apache-2.0.
Available Tools
22 toolsadd_favorite_recipeAdd 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.
Inputs: translation_id (required), language. Returns: object
analyze_recipeAnalyze RecipeB
Deeply analyze one of the user's own recipes BEFORE publishing it.
Inputs: recipe_id (required), language. Returns: object
cookidoo_loginCookidoo 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.
Inputs: email, country, language, password. Returns: object
cookidoo_statusCookidoo StatusA
Report whether Cookidoo credentials and a cached token are available.
Inputs: no named parameters. Returns: object
create_recipeCreate 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).
Inputs: title (required), fat, steps, protein, +13 more. Returns: object
delete_recipeDelete 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.
Inputs: recipe_id (required), language. Returns: object
edit_recipeEdit 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.
Inputs: recipe_id (required), fat, steps, title, +14 more. Returns: object
get_cookidoo_recipeGet 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.
Inputs: recipe_ref (required), email, country, language, +2 more. Returns: object
get_paprika_recipeGet 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.
Inputs: name (required), zip_path (required), language. Returns: object
get_recipeGet 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.)
Inputs: recipe_id (required), language. Returns: object
import_cookidoo_recipeImport 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).
Inputs: recipe_ref (required), email, country, private, +4 more. Returns: object
import_paprika_recipesImport 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).
Inputs: zip_path (required), limit, names, private, +3 more. Returns: object
list_favorite_recipesList 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.
Inputs: page, language, page_size, sort_field, +1 more. Returns: object
list_my_recipesList 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.
Inputs: page, status, keyword, language, +3 more. Returns: object
list_paprika_recipesList 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.
Inputs: zip_path (required). Returns: object
list_recipe_creation_optionsList 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.
Inputs: language. Returns: object
list_recipe_filtersList 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.
Inputs: language. Returns: object
publish_recipePublish 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.
Inputs: recipe_id (required), private, language. Returns: object
remove_favorite_recipeRemove 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.
Inputs: translation_id (required), language. Returns: object
restore_recipeRestore 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.
Inputs: recipe_id (required), language. Returns: object
search_ingredientsSearch 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.
Inputs: query (required), count, language. Returns: object
search_recipesSearch 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.
Inputs: page, media, query, source, +19 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
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.
Related MCP Connectors
Recipe search, ingredient matching, nutrition filters and a private cookbook for any AI agent.
Search, save, organize, cook, and share recipes with any AI assistant.
Search structured recipes, scale servings, match pantry ingredients, and build shopping lists.
Your recipes as plain files in your own Google Drive, searchable by your AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Saffron recipe management functionality, including creating and updating recipes, importing from websites or text, and organizing cookbooks. Provides comprehensive recipe management capabilities through Saffron's API with support for ingredients, instructions, timing, and metadata.4 npmMIT
- AlicenseAqualityDmaintenanceEnables AI assistants to search, read, and update recipes in Paprika Recipe Manager, allowing natural language interaction with your recipe collection including ingredients, directions, and metadata.45MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to search recipes, compose nutritionally balanced meals, optimize weekly meal plans based on macro targets for family members, and generate consolidated grocery lists from a personal recipe database.-
- AlicenseAqualityDmaintenanceEnables LLMs to upload and manage Thermomix recipes on Cookidoo, including structured steps with Thermomix settings, images, and access to shopping lists and meal planning.11MIT