Search Ptitchef recipes, read one, and rescale it to any servings. No API key.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Ptitchef is a French cooking site where home cooks publish their recipes. Each one gives its ingredients, its steps, often photographed one by one, its preparation and cooking times, its cost, its nutrition figures and the ratings its readers left. The site files its recipes under a tree of ingredient families, and publishes many of them in several languages.
This server connects a chat client to that site. You can walk the tree of categories, search the recipes by dish or by ingredient, browse a category or one of the site's standing lists, ask what can be made from what is in the fridge, read one recipe with its ingredients rescaled to the number of people at your table, and find the other languages a recipe was published in. It needs no API key and no account.
One-click install
Claude Code
Claude Desktop, Cursor, and any client using the standard config format
Node 24 or later is required, and no environment variable has to be set.
-i keeps stdin open, which is where the protocol travels, and -t is left out
because a TTY rewrites the stream. The container needs outbound HTTPS to
www.ptitchef.com, and nothing else: no volume, no port, no credential.
Download mcp-ptitchef-1.0.1.mcpb from
the latest release
and open it. A client that supports MCP bundles installs it on its own, with no
npm and no configuration file to edit. The bundle carries its dependencies, so
nothing is fetched at install time.
Ptitchef is a French site, so its recipes are found in French. The ordinary path
runs from a listing to a recipe: a row carries an id, and get_recipe takes
that id.
| Tool | What it does |
|---|---|
list_categories | Walks the tree of ingredient families the site files under. |
search_recipes | Finds recipes by dish or by ingredient. |
browse_recipes | Reads a category page by page, or a standing list. |
search_by_ingredients | Answers what can be made from what a cook already has. |
get_recipe | Reads one recipe, rescaled to a number of servings on request. |
scale_ingredients | Rescales any ingredient list, with no request to the site. |
get_recipe_translations | Lists the other languages a recipe was published in. |
Start at list_categories. The site gives you the right addresses, which
saves building one by hand: an address built that way lands on the site's front
page.
list_categoriesReads the tree the site files its recipes under. Called with no argument it
returns the families; pass a family's slug back as family to read what it
holds.
| Argument | Type | Required | What it does |
|---|---|---|---|
family | string, 1 to 80 characters | no | A family's slug, to read the categories under it. |
limit | integer, 1 to 200, default 20 | no | Rows to serve. |
In return: rows carrying slug, which comes back as family or as
category; title in the site's own wording; url; description, which is
null where the page carries none; and sample_children for the categories one
level below.
search_recipesSearches the recipes for a dish or an ingredient.
| Argument | Type | Required | What it does |
|---|---|---|---|
query | string, 1 to 120 characters | yes | A dish or an ingredient, in French. |
limit | integer, 1 to 100, default 20 | no | Rows to serve. |
In return: results, rows carrying id, title, url, image_url,
rating, rating_count and review_count, a counter the page prints nothing
for being null. The envelope says how the site answered: kind reads
category when the answer came from a category page of its own, whose
total_available counts that whole category, and free_text when the site
answered on its own terms on a single page, where the total counts the rows
served. Those two totals count different things. kind also reads guide for a
topic the site wrote by hand, where rows carry a name and an address and no total
exists. Alongside come result_count, rows_seen, page, single_page and
url. A listing marked single_page whose total exceeds rows_seen has a
remainder the site counts and does not serve.
browse_recipesReads a category page by page, or one of the site's standing lists.
| Argument | Type | Required | What it does |
|---|---|---|---|
category | string, 1 to 120 characters | no | A category slug, as list_categories published it. |
listing | latest, top_rated or most_viewed | no | A standing list, read instead of a category. |
page | integer, 1 to 1000 | no | The page of a category to read. A standing list has one page. |
limit | integer, 1 to 100, default 20 | no | Rows to serve. |
In return: the envelope search_recipes returns, with kind reading
category, standing or topic. page is the page the site served, which is
the first one again when the page asked for is past the last.
search_by_ingredientsAnswers what can be made from the ingredients a cook already has.
| Argument | Type | Required | What it does |
|---|---|---|---|
ingredients | array of 1 to 5 strings, 1 to 60 characters | yes | The ingredients on hand, in French. |
limit | integer, 1 to 100, default 20 | no | Rows to serve. |
In return: the envelope the other listings return, with kind reading
fridge. The site matches on its own vocabulary, so an ingredient it writes
differently narrows the answer rather than widening it.
get_recipeReads one recipe in full, and rescales its ingredients when a number of servings is given.
| Argument | Type | Required | What it does |
|---|---|---|---|
id | string, 1 to 300 characters | yes | The id of a row from a search or a listing. |
servings | integer, 1 to 500 | no | Rescale the ingredients to this many servings. |
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-ptitchef)<a href="https://allmcps.com/mcp/mcp-ptitchef"><img src="https://allmcps.com/api/badge/mcp-ptitchef?style=directory" alt="MCP Ptitchef on AllMCPs" /></a>