SuperAPI AI Directory

mcp-recipes

Query Marmiton and the Wikibooks Cookbook together to compare recipes, and scale French and English ingredient lists, flagging what cannot be scaled.

Open website

About this tool

mcp-recipes is an MCP (Model Context Protocol) server designed to solve the problem of recipes being scattered across different websites in varying formats. It can search multiple recipe corpora at once, read recipes and present them in a unified format, and also supports rescaling ingredient lists. The server requires no API keys or accounts and can run locally.

Purpose

Recipes are usually distributed across multiple websites, each with its own language, units of measurement, and definition of servings. For example, French cooking websites publish in French, using their own systems of measurement; the English Wikibooks Cookbook includes equipment lists and prose descriptions. Querying a single website only yields that website's information. mcp-recipes reads six sources at once, letting users search, compare, and adjust recipes across sources.

Main capabilities

  • Multi-source search: Search all six sources with a single query. The sources include three French websites (Marmiton, Ptitchef, Supertoinette), two English websites (Wikibooks Cookbook, BBC Good Food), and one Spanish website (Pequerecetas).
  • Unified-format reading: Read a recipe from any source and return it in a unified format, including title, address, ingredients (each line with scaling information and whether it is equipment), steps, and the requested sections. Fields a source does not have are missing rather than invented.
  • Recipe comparison: Compare multiple versions of the same dish side by side, with all versions scaled to the same servings so quantities can be compared.
  • Ingredient scaling: Rescale any ingredient list without requesting any website. You can specify a scaling factor, or specify the original servings and target servings. Supports automatic detection of each line's language, or you can specify the language.
  • Independent source reporting: Each source's status is reported separately, with failure, not asked, and returning empty results distinguished as three different cases.

How to use

Installation

  • One-click installation: Suitable for Claude Desktop, Cursor, and any client using the standard configuration format. Requires Node 24 or later, with no environment variables to set.
  • Bundle installation: Download the latest version of mcp-recipes-4.0.0.mcpb and open it. Clients that support MCP bundles install it automatically, with no npm or editing configuration files needed. The bundle includes dependencies, and nothing is downloaded during installation.
  • npm installation: It can be installed via npm; the exact command is not provided in the source material.

Configuration

  • The container needs outbound HTTPS access to the following domains: www.marmiton.org, api.wikimedia.org, www.ptitchef.com, www.bbcgoodfood.com, www.supertoinette.com, and www.pequerecetas.com. No volumes, ports, or credentials are needed.
  • All variables are optional and can be set in the env block of the client configuration. Out-of-range values fall back to default values, with the reason written to stderr.

Typical query examples

  • "Find me carbonara recipes, from wherever you can."
  • "Compare the French and English versions of that dish."
  • "Read the second one for eight people."
  • "Which of them uses cream?"
  • "Scale this list from my notebook by 1.5."

Tools

  • search_recipes: Search all sources with a single question. Returns results (including id, source, source_name, title, url, image_url, excerpt) and a per_source report (including status, count, reported_total, reported_total_means, names_the_dish, order).
  • get_recipe: Read a recipe from any source in a unified format. Returns kind (recipe or collection), recipe or collection. recipe includes title, address, ingredients (each line with scaling and is_equipment), steps, and the requested sections. collection is an article that gathers other recipes, including the title and the recipes it points to.
  • compare_recipes: Compare multiple versions of the same dish side by side. Returns versions (one recipe per source, scaled to the same servings) and differences.
  • scale_ingredients: rescale any ingredient list without requesting any website. You can pass factor, or a from_servings and to_servings pair. auto reads each line separately, suitable for multilingual lists; specifying a language reads all lines in that language. Returns the scaled lines in the same format as get_recipe, with scaling on each line.

Scaling details

  • Quantities may be returned in different units, for example 200 g multiplied by twenty is displayed as 4 kg.
  • Ingredients differ in divisibility: a baguette can be cut into halves, thirds, or quarters; an egg cannot be divided. Quantities falling between the two are rounded, and the scaled recipe will deviate slightly from the original ratio. The line is marked rounded, and note explains what was done.
  • Sources write quantities in their own language, and lines are read in the language in which they are written. The numbers are the result of that server's arithmetic, and when displayed it should be stated that they are recalculated.

Source reports

Each answer separately explains the situation of each source. Failure, not being asked, and returning an empty result are three different cases, and are reported separately. Totals are kept together with the source that published them, and it explains what that source is counting: one website counts the entire category, another counts the lines it provides, and a third does not publish a total.

Error handling

Each failure carries one of six codes, a message, and (when useful) a hint for the next action. A failure of one source is reported per source rather than failing the entire answer, so one silent website does not hide the others.

Independently published layers

The layer that reads websites is published separately, including its pacing, caching, and errors, without the protocol.

  • searchRecipes(query, limitPerSource, sources?, options?) returns { rows, reports }: one report per source, stating whether it answered and what its count measures, so a failed source is never read as a source with no content.
  • getRecipe(id) returns { recipe, cached, read }, and throws an error with one of six codes.
  • client.profiles lists the sources the build registers.

The scaler is published separately at mcp-recipes/scale, where it can be offlineNo list is processed.

Rhythm and attribution

  • Each website has its own rhythm, one request at a time. Each website has its own floor, and no configuration can go below it: half a second for Marmiton and Cookbook, one second for Ptitchef and BBC Good Food, three seconds for Supertoinette and Pequerecetas. An interval set for all sources can raise a given website's interval, but never lower it.
  • The User-Agent always ends with the project identifier and an address where a person can be reached.
  • Each line carries the address of the recipe's own page and the name of the website that published it.
  • Cookbook pages are published under CC BY-SA 4.0, which requires that content built on them be shared under the same license. Marmiton, Ptitchef, BBC Good Food, Supertoinette and Pequerecetas do not state terms on their recipe pages, and their recipes belong to those websites and the chefs who wrote them. Silence is not a grant, so credit the website and link the page you took the recipe from.
  • Recipes that BBC Good Food reserves for subscribers are returned without ingredients and method, marked as reserved recipes, and with their page address. This server does not reconstruct what the website chooses to sell.
  • The two numbers a website publishes for difficulty and cost are not repeated here. Difficulty is a word each website writes in its own way, with no scale published, so it cannot be placed on any axis to compare two versions. Cost is a price in euros on one website and a rank within its list on another, and a single field holding both would tempt them to be compared.

When to use it

  • When you need to compare different versions of the same dish across languages.
  • When you need to adjust recipe servings or scale ingredient lists.
  • When you need to search for recipes from multiple sources and view them in a unified format.
  • When you need to consolidate recipe information from different websites.

Limitations

  • Requires Node 24 or later.
  • Some websites have request interval limits, and the server respects them.
  • BBC Good Food's subscriber-only recipes do not return ingredients and steps.
  • The difficulty and cost fields are not provided again.
  • This server is an unofficial project and is not affiliated with any of the websites it reads.
  • It collects no user data and sends nothing to the authors. It runs locally, contacts only the six websites mentioned above, and keeps answers in memory, not written to disk.
  • Tests run against generated fixtures and make no network requests. The live test suite npm run test:live runs nightly against the websites themselves, one request per route.
  • Please submit errors, issues and ideas to the issue tracker. Pull requests are welcome; opening an issue first helps reach agreement on the form of a change. See CONTRIBUTING.md.
  • The license is MIT, see LICENSE. Recipes belong to the websites that publish them and their authors.