mcp-supertoinette
mcp-supertoinette
在 MCP 客户端中阅读 Supertoinette 的食谱:搜索食谱、阅读单条食谱、按其他人数重新调整份量、浏览类别,以及查询葡萄酒搭配。
只读。无需 API 密钥,无需账户。
安装
claude mcp add supertoinette -- npx -y mcp-supertoinette或者在任何 MCP 客户端的配置中:
{
"mcpServers": {
"supertoinette": {
"command": "npx",
"args": ["-y", "mcp-supertoinette"]
}
}
}使用 Docker:
docker build -t mcp-supertoinette .
docker run -i --rm mcp-supertoinette容器只需要能够访问 www.supertoinette.com。
Related MCP server: spoonacular-mcp
工具
工具 | 用途 |
| 按菜品或食材查找食谱 |
| 读取一条食谱,可按要求调整份量 |
| 食谱可按其浏览的类别 |
| 某个类别下的食谱 |
| 为一道菜推荐五种葡萄酒,或菜品索引 |
| 离线调整任何法语食材列表的份量 |
食谱通过其地址中的数字来标识:/recette/4210/veloute-de-gaverole.html 中的 4210。search_recipes 和 browse_recipes 在每一行都返回该数字。
search_recipes
参数 | 类型 | 默认值 | 备注 |
| string | required | 一道菜或一种食材,用法语 |
| integer | 20 | 1 到 39 |
| integer | 1 | 1 到 1000 |
| string | — | 一个分面标签,例如 |
{
"query": "cabillaud",
"page": 1,
"last_page": 2,
"results": [
{
"id": "702",
"title": "Cabillaud aux champignons",
"url": "https://www.supertoinette.com/recette/702/cabillaud-aux-champignons.html",
"image_url": "https://recette.supertoinette.com/new/…-800.webp",
"categories": ["Sauces", "Poissons"]
}
],
"result_count": 20,
"rows_published": 39,
"total_available": null,
"facets": [{ "label": "Poissons", "count": 60 }]
}category 接受 facets 中的某个标签,按返回时的拼写原样传入。未知标签找不到任何结果,因此过滤器会被丢弃,搜索会在没有该标签的情况下重新运行,并有一条备注说明哪个标签被丢弃了。total_available 始终为 null,因为 Supertoinette 不发布总数;请使用 last_page。分面计数相互重叠,因此它们的总和会超过返回的行数。搜索会将食谱与网站自身的编辑精选混在一起;这些精选会被移除,这就是 result_count 可能低于 limit 的原因。
get_recipe
参数 | 类型 | 默认值 | 备注 |
| string | required | 地址中的数字 |
| integer | — | 1 到 1000 |
{
"id": "4210",
"title": "Velouté de gaverole au pravin",
"url": "https://www.supertoinette.com/recette/4210/veloute-de-gaverole.html",
"yield": { "original_text": "6 personnes", "requested": 4, "factor": 0.6667 },
"ingredients": [
{
"text": "533 g de tiges de gaverole",
"original": "800 g de tiges de gaverole",
"scaling": "scaled",
"amount": 533,
"unit": "g",
"is_heading": false
}
],
"steps": ["Émincer les tiges de gaverole."],
"prep_minutes": 15,
"cook_minutes": 25,
"rest_minutes": 30,
"total_minutes": 70,
"difficulty": { "label": "Recette facile" },
"cost_level": { "label": "Economique", "level": 1, "scale": 3 },
"rating": { "value": 4.2, "count": 9, "scale": 5 },
"tags": [{ "label": "Soupes & potages", "category": "91/recettes-soupes-potages" }],
"faq": []
}时间以分钟为单位,在 Supertoinette 未发布任何值的地方为 null。difficulty 有一个标签但没有等级,因为网站没有为其发布等级;cost_level 有一个等级,因为网站绘制了它。ingredient_sheets 包含网站自身的链接,其中大约二十分之一的链接指向旁边一行不同的食材。
对产量中没有数字的食谱请求 servings — “供一大盘使用” — 会返回 invalid_input。请求类别页面的 id 会返回 parse_failure。
list_categories 和 browse_recipes
list_categories 不接受任何参数,并返回 Supertoinette 在其页面上列出的四十个类别:
{
"categories": [
{
"label": "Soupes & potages",
"category": "91/recettes-soupes-potages",
"url": "https://www.supertoinette.com/recettes/91/recettes-soupes-potages",
"listed_in": "footer"
}
],
"category_count": 40
}listed_in 对菜品种类为 footer,对烹饪方式和季节为 menu。食谱自身的 tags 会通向数百个这两个列表都没有的更多类别。
browse_recipes 读取其中一个类别:
参数 | 类型 | 默认值 | 备注 |
| string | required | 一个令牌,例如 |
| integer | 20 | 1 到 30 |
| integer | 1 | 1 到 1000 |
令牌由数字和名称共同组成。从 list_categories 或食谱的 tags 中获取它,并原样传回:名称的任何其他拼写都会到达一个不存在的页面。每一行在搜索行所包含的内容之外,还增加了 difficulty 和 total_minutes。
search_recipes的category和browse_recipes的category是两回事。前者是分面标签(Poissons),后者是令牌(95/recettes-poissons)。
超过最后一页的页码返回时没有行也没有错误;请将 page 与 last_page 进行比较。
get_wine_pairings
为某道菜提供 id,或为菜品字母索引提供 page。kind 表示返回的是两者中的哪一个,另一个字段为 null。
参数 | 类型 | 备注 |
| string | 菜品地址中的数字 |
| integer | 1 到 100,用于索引 |
{
"kind": "dish",
"dish": {
"dish": "Aligot",
"style": "Un vin blanc sec assez puissant, fin et très légèrement boisé",
"pairings": [
{ "rank": "Bon accord", "wine": "Premières côtes de bordeaux" },
{ "rank": "Accord parfait", "wine": "Mâcon blanc" }
],
"recipes": [{ "id": "1081", "title": "Aligot" }]
},
"index": null
}五个等级是 Supertoinette 自己的措辞,按它自己的顺序排列。
scale_ingredients
调整任何法语食材列表的份量,无需访问网络。
参数 | 类型 | 备注 |
| string[] | 1 到 200 行 |
| number | 大于 0,最大 100 |
| integer | 1 到 1000,代替 |
每一行返回时都带有标记。scaled 是精确计算。rounded 已移动到一个厨房可以量出的量,note 给出它移动前的精确数值。unscaled 没有可乘的数量。单位保持食谱所用的体系不变,近似度量保持其自身大小:四倍的一撮就是四撮。
get_recipe 在给定 servings 时应用相同的规则。
设置
环境变量,全部可选。超出范围的值会在 stderr 上被拒绝,并应用默认值。
变量 | 默认值 | 范围 |
| — | 你的标识符,会添加到此项目标识的前面 |
| 3000 | 3000 到 60000 |
| 20000 | 1000 到 120000 |
| 3 | 0 到 8 |
| 900000 | 0 到 86400000,0 表示禁用缓存 |
| 200 | 1 到 5000 |
|
|
|
一次只处理一个请求。STO_MIN_INTERVAL_MS 将两次请求之间的间隔提高到其 3000 毫秒下限以上,并且没有任何设置可以降低它。
错误
代码 | 含义 |
| 该地址没有任何内容 |
| 参数无法生成请求 |
| 网站要求放慢速度;请稍后重试 |
| 页面以该服务器无法读取的形式到达 |
| 请求失败 |
| 在截止时间内没有应答 |
每条消息都以方括号中的代码开头。
作为库使用
读取层独立发布,自带节奏控制、缓存和错误处理:
import { SupertoinetteClient } from "mcp-supertoinette/client";数量按 Supertoinette 发布的形式返回;重新调整份量由上面的工具完成。
署名
食谱、标题和照片均归 Supertoinette 所有。展示食谱时,请注明来源网站并链接到该页面。
贡献
参见 CONTRIBUTING.md。基于 MIT 许可。
mcp-supertoinette (法语)
在 MCP 客户端中阅读 Supertoinette 的食谱:搜索食谱、阅读单条食谱、按其他人数重新调整份量、浏览类别,以及查询葡萄酒搭配。
只读。无需 API 密钥,无需账户。
安装
claude mcp add supertoinette -- npx -y mcp-supertoinette或者在任何 MCP 客户端的配置中:
{
"mcpServers": {
"supertoinette": {
"command": "npx",
"args": ["-y", "mcp-supertoinette"]
}
}
}使用 Docker:
docker build -t mcp-supertoinette .
docker run -i --rm mcp-supertoinette容器只需要能够访问 www.supertoinette.com。
工具
工具 | 用途 |
| 按菜品或食材查找食谱 |
| 读取一条食谱,可按要求调整份量 |
| 食谱可按其浏览的类别 |
| 某个类别下的食谱 |
| 为一道菜推荐五种葡萄酒,或菜品索引 |
| 离线调整任何法语食材列表的份量 |
食谱通过其地址中的数字来标识:/recette/4210/veloute-de-gaverole.html 中的 4210。search_recipes 和 browse_recipes 在每一行都返回该数字。
search_recipes
参数 | 类型 | 默认值 | 备注 |
| string | required | 一道菜或一种食材 |
| integer | 20 | 1 到 39 |
| integer | 1 | 1 到 1000 |
| string | — | 一个分面标签,例如 |
category 接受 facets 中返回的某个标签,按原样书写。未知标签找不到任何结果,因此过滤器会被丢弃,搜索会在没有该标签的情况下重新运行,并有一条备注说明哪个标签被丢弃了。total_available 始终为 null,因为 Supertoinette 不发布任何总数;请使用 last_page。分面计数相互重叠,它们的总和会超过行数。搜索会将食谱与网站自身的编辑精选混在一起;这些精选会被移除,这就是 result_count 低于所请求的 limit 的原因。
get_recipe
参数 | 类型 | 默认值 | 备注 |
| string | required | 地址中的数字 |
| integer | — | 1 到 1000 |
时间以分钟为单位,在 Supertoinette 未发布任何值时为 null。difficulty 带有一个标签但没有等级,因为网站没有为其发布任何等级;cost_level 带有自己的等级,因为网站绘制了它。ingredient_sheets 包含网站自身的链接,其中大约二十分之一的链接指向旁边一行不同的食材。
对产量中没有数字的食谱请求 servings — “供一大盘使用” — 会返回 invalid_input。请求类别页面的 id 会返回 parse_failure。
list_categories 和 browse_recipes
list_categories 不接受任何参数,并返回 Supertoinette 在其页面上列出的四十个类别。listed_in 对菜品种类为 footer,对烹饪方式和季节为 menu。食谱的 tags 会通向数百个这两个列表都没有的更多类别。
browse_recipes 读取其中一个类别:
参数 | 类型 | 默认值 | 备注 |
| string | required | 一个令牌,例如 |
| integer | 20 | 1 到 30 |
| integer | 1 | 1 到 1000 |
令牌由数字和名称共同组成。从 list_categories 或食谱的 tags 中获取它,并原样传回:名称的任何其他拼写都会到达一个不存在的页面。每一行在搜索行所包含的内容之外,还增加了 difficulty 和 total_minutes。
search_recipes的category和browse_recipes的category是两回事。前者是分面标签(Poissons),后者是令牌(95/recettes-poissons)。
超过最后一页的页码返回时没有行也没有错误;请将 page 与 last_page 进行比较。
get_wine_pairings
为某道菜提供 id,或为菜品字母索引提供 page。kind 表示返回的是两者中的哪一个,另一个字段为 null。
参数 | 类型 | 备注 |
| string | 菜品地址中的数字 |
| integer | 1 到 100,用于索引 |
五个等级是 Supertoinette 自己的措辞,按它自己的顺序排列。
scale_ingredients
调整任何法语食材列表的份量,无需访问网络。
参数 | 类型 | 备注 |
| string[] | 1 到 200 行 |
| number | 大于 0,最大 100 |
| integer | 1 到 1000,代替 |
每一行返回时都带有标记。scaled 是精确计算。rounded 已移动到一个厨房可以量出的量,note 给出它移动前的精确数值。unscaled 没有可乘的数量。单位保持食谱所用的体系不变,近似度量保持其自身大小:四倍的一撮就是四撮。
get_recipe 在给定 servings 时应用相同的规则。
设置
环境变量,全部可选。超出范围的值会在 stderr 上被拒绝,并应用默认值。
变量 | 默认值 | 范围 |
| — | 你的标识符,会添加到此项目标识的前面 |
| 3000 | 3000 到 60000 |
| 20000 | 1000 到 120000 |
| 3 | 0 到 8 |
| 900000 | 0 到 86400000,0 表示禁用缓存 |
| 200 | 1 到 5000 |
|
|
|
一次只处理一个请求。STO_MIN_INTERVAL_MS 将两次请求之间的间隔提高到其 3000 毫秒下限以上,并且没有任何设置可以降低它。
错误
代码 | 含义 |
| 该地址没有任何内容 |
| 参数无法生成请求 |
| 网站要求放慢速度;请稍后重试 |
| 页面以该服务器无法读取的形式到达 |
| 请求失败 |
| 在截止时间内没有应答 |
每条消息都以方括号中的代码开头。
作为库使用
读取层独立发布,自带节奏控制、缓存和错误处理:
import { SupertoinetteClient } from "mcp-supertoinette/client";数量按 Supertoinette 发布的形式返回;重新调整份量由上面的工具完成。
署名
食谱、标题和照片均归 Supertoinette 所有。展示食谱时,请注明来源网站并链接到该页面。
贡献
参见 CONTRIBUTING.md。基于 MIT 许可。
参数 | 类型 | 默认值 | 说明 |
| 字符串 | 必填 | 一个令牌,如 |
| 整数 | 20 | 1 到 30 |
| 整数 | 1 | 1 到 1000 |
令牌由数字和名称组成。请从 list_categories 或食谱的 tags 中获取它,并原样传回:以任何其他方式书写名称都会指向不存在的页面。每一行都会在搜索行所携带的内容上增加 difficulty 和 total_minutes。
search_recipes的category与browse_recipes的category是两回事。前者是分面标签(Poissons),后者是令牌(95/recettes-poissons)。
超出最后一页的页码不会返回任何行,也不会报错;请比较 page 和 last_page。
get_wine_pairings
为一道菜提供 id,或为菜肴的字母索引提供 page。kind 指示返回的是两种响应中的哪一种,另一个字段为 null。
参数 | 类型 | 说明 |
| 字符串 | 一道菜地址中的编号 |
| 整数 | 1 到 100,用于索引 |
五个等级沿用 Supertoinette 的等级及其顺序。
scale_ingredients
在不访问网络的情况下,对一份法语食材列表进行缩放。
参数 | 类型 | 说明 |
| 字符串[] | 1 到 200 行 |
| 数字 | 大于 0,最大 100 |
| 整数 | 1 到 1000,替代 |
每一行都会带标记返回。scaled 表示精确计算。rounded 表示已折算为厨房中可计量的数量,并附有 note 说明其变动的确切数值。unscaled 表示该行没有需要乘的数量。单位保持食谱所用的体系,近似计量保持其大小:四倍的少许就是四个少许。
当传入 servings 时,get_recipe 也适用同样的规则。
设置
环境变量,全部可选。超出范围的值会在 stderr 上被拒绝,并采用默认值。
变量 | 默认值 | 范围 |
| — | 您的标识符,置于项目标识符之前 |
| 3000 | 3000 到 60000 |
| 20000 | 1000 到 120000 |
| 3 | 0 到 8 |
| 900000 | 0 到 86400000,0 表示禁用缓存 |
| 200 | 1 到 5000 |
|
|
|
一次只处理一个请求。STO_MIN_INTERVAL_MS 将两次请求之间的间隔延长到其 3000 毫秒下限以上,任何设置都不能将其降低。
错误
代码 | 含义 |
| 该地址没有内容 |
| 参数无法生成有效的请求 |
| 网站要求放慢速度;请稍后重试 |
| 页面以该服务器无法解析的形式返回 |
| 请求失败 |
| 在时限内没有收到响应 |
每条消息都以方括号中的代码开头。
作为库使用
读取层单独发布,包含其速率、缓存和错误处理:
import { SupertoinetteClient } from "mcp-supertoinette/client";数量按 Supertoinette 发布的原样返回;缩放功能位于上层的工具中。
署名
食谱、标题和照片均归 Supertoinette 所有。展示食谱时,请注明来源网站并链接到相应页面。
贡献
参见 CONTRIBUTING.md。基于 MIT 许可。
Maintenance
Related MCP Servers
- FlicenseCqualityDmaintenanceEnables management of culinary recipes through web scraping from sites like Marmiton.org, recipe generation, ingredient management, and querying a MongoDB database of recipes, comments, users, and utensils.18
- AlicenseBqualityDmaintenanceEnables AI assistants to search for recipes, get nutritional information, find ingredients, and more through the Spoonacular Food API using natural language.6155ISC
- AlicenseAqualityBmaintenanceMCP server that searches French recipes from Marmiton, reads ingredients and steps, and rescales quantities to any number of servings without requiring an API key.632,395MIT
- AlicenseAqualityBmaintenanceSearch and read recipes from the English Wikibooks Cookbook, with tools to rescale ingredient lists to a target number of servings.4117MIT
Related MCP Connectors
Spoonacular food API: recipes, nutrition, ingredients, meal plans. Free 150/day.
Recipes MCP — wraps TheMealDB API (free tier, no auth)
Clean product data from any URL. Schema.org + AI extraction. 200 free calls/month.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/smeet666/mcp-supertoinette'
If you have feedback or need assistance with the MCP directory API, please join our Discord server