用途
mcp-marmiton 是一个 MCP(Model Context Protocol)服务器,将对话客户端连接到法国最大烹饪网站 Marmiton。它用于按菜品或食材搜索菜谱、完整读取某道菜谱的食材与步骤,并把食材用量换算到任意用餐人数。服务器只读取数据,不会向 Marmiton 发布任何内容,且不需要 API 密钥或账号。
主要能力
- search_recipes:按菜品或食材搜索菜谱。Marmiton 按单词开头字母匹配,因此返回的是网站针对该查询排名的结果;当标题中不含所查询词时会给出提示。返回行包含 id(供 get_recipe 使用)、title、url 和 image_url(无图片的菜谱该字段为 null),以及 result_count 和 total_available。由于 Marmiton 的 robots.txt 不允许翻页搜索,一次搜索只读取一页,需通过收窄查询来查看其他菜谱。
- get_recipe:完整读取一道菜谱,并在给定份数时换算食材用量。返回 title、url、ingredients、steps、prep_minutes、cook_minutes、total_minutes、category、author、rating 和 nutrition,页面未提供时对应字段为 null。yield 字段说明菜谱原本的份数和换算后的份数,包含 original_count、original_text、requested、unit 和 factor。每个食材包含 original、text、amount、amountMax(区间时)、unit 和 scaling(取值为 scaled、rounded 或 unscaled)。nutrition 描述的是菜谱按原始份数发布时的营养信息。
- scale_ingredients:对任意食材清单应用同一套换算,不请求网站,因此可用于从书本或家庭笔记中抄录的菜谱。传入 factor,或传入 from_servings 与 to_servings 组合。返回使用的 factor、与 get_recipe 相同格式的换算后食材,以及 scaled_count、rounded_count 和 unscaled_count。
使用方式
一键安装适用于 Claude Desktop、Cursor 及任何使用标准配置格式的客户端。需要 Node 24 或更高版本,无需设置任何环境变量。安装命令中 -i 用于保持标准输入打开(协议传输通道),省略 -t 是因为 TTY 会重写数据流。容器需要向 www.marmiton.org 发起出站 HTTPS,此外不需要卷、端口或凭据。
也可不使用 npm:从最新发布版下载 mcp-marmiton-2.1.0.mcpb 并打开,支持 MCP 捆绑包的客户端会自动安装,无需 npm 和配置文件,捆绑包自带依赖,安装时不下载任何内容。
所有配置变量都是可选的,在客户端配置的 env 块中设置。取值超出范围时回退到默认值,原因写入 stderr。每个失败都带六种错误码之一、一条消息,以及在有帮助时给出下一步提示。
也可以作为库使用:读取 Marmiton 的层单独发布,带有自己的节流、缓存和错误处理,不附带协议。search 和 getRecipe 各自返回 { data, cached },并抛出带六种错误码之一的错误。
可向它提出的示例请求包括:“找一份苹果派菜谱”“把这份四人份菜谱读成六人份”“用西葫芦和山羊奶酪能做什么”“这是我抄来的菜谱,帮我乘以 1.5”“第二道菜要烤多久”。Marmiton 是法国网站,菜谱为法语,例如 tarte aux pommes、poulet curry coco。常规流程是从搜索到阅读:search_recipes 给出 id,get_recipe 使用该 id。
用量换算说明
每个食材都会带 scaling 标志,说明换算对其数量做了什么。数量会以合适的单位表示,因此换算后同一行可能使用与原始菜谱不同的单位,例如 200 g 乘以二十会显示为 4 kg。食材能被细分到什么程度取决于其性质:法棍可切二、三或四份,鸡蛋无法拆分。落在两者之间的数量会被四舍五入,换算后的菜谱会略微偏离原比例,该行标记为 rounded,并在注释中说明所做的处理。换算结果是本服务器的算术结果,展示时应说明是重新计算过的。
节流与署名
请求逐个发出并保持最小间隔,无论服务器如何配置该下限都有效。User-Agent 始终以项目标识和一个可联系到人的地址结尾。所有数据读取自 Marmiton 为机器发布的 schema.org JSON-LD,robots.txt 禁止的路径不会被访问。每个结果都带有菜谱标题和地址,get_recipe 在页面署名时带作者,并附 attribution(标题与地址写成一行)。
限制
菜谱归 Marmiton 及其作者所有,本项目是非官方项目,与 Marmiton 无隶属关系。服务器不在本地收集关于你的任何信息,也不向其作者发送任何内容:它在本机运行,只联系 www.marmiton.org,运行时将回答保存在内存中,不写入磁盘。测试针对生成的固定数据进行,不发出网络请求;实时测试套件 npm run test:live 每条路由发出一个请求,每晚针对网站运行。项目采用 MIT 许可,菜谱版权归 Marmiton 及其作者。