关于 Picnic
Picnic 是面向 Picnic 在线超市购物场景的非官方 MCP 服务,供 AI 助手使用。它支持查找商品、管理购物车、选择配送时段和处理食谱,但不能下单。
主要功能
- 01搜索商品并查看详情
- 02添加、调整和移除购物车商品
- 03查看并选择配送时段
- 04浏览促销和常购商品
- 05搜索食谱并添加食材
适用场景
- 01查找商品并比较可选项
- 02准备购物车并选择配送时间
- 03将食谱所需食材加入购物车
MCP 相关
通过 stdio 或 HTTP 向 MCP 客户端提供 Picnic 购物、配送、商品发现和食谱工具。它不能下单。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
10收录的工具列表 · 更新于 6 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 要搜索的商品,使用荷兰语。 |
详细介绍
picnic-mcp
一个用于在线超市 Picnic 的 MCP 服务。它可以让模型搜索 Picnic 的商品、填充购物车、选择配送时段、查看促销和你常买的商品,以及使用食谱。它无法下单。
非官方项目:并非由 Picnic 制作或支持。基于 picnic-api 构建。已使用荷兰账户进行测试;德国和法国账户应该也能使用,但尚未经过测试。
系列项目
picnic-api、picnic-web 和 picnic-mcp 一同开发和发布。Picnic 应用获取数据的方式发生变化时,picnic-api 会随之更新,picnic-web 和 picnic-mcp 也会在同一次变更中更新,因此它们的最新版本始终可以协同工作。
| 项目 | 简介 |
|---|---|
| picnic-api | 用于 Picnic API 的 Node.js 库:商品、购物车、配送时段、配送和食谱。 |
| picnic-web | Picnic 的网页界面,可通过浏览器购物。访问 picnic.maartenvandenhoven.com。 |
| picnic-mcp | MCP 服务,让 AI 助手可以搜索商品、填充购物车并选择配送时段。 |
工具
这些工具分为多个组。cart、slots、product 和 discover 默认启用;使用 PICNIC_MCP_TOOLS 开启或关闭工具组(参见设置)。
| 分组 | 工具 | 功能 |
|---|---|---|
cart | search_products | 搜索商品。如果有一款商品符合要求(通常是你之前买过的商品),则返回 bestMatch;否则返回 2 或 3 个 choices 供你选择。 |
add_to_cart | 根据商品 ID 将一个或多个商品加入购物车。返回购物车中每件商品的数量、添加失败的商品、购物车总额,以及无法配送的商品的替代品。 | |
set_cart_quantity | 设置购物车中某件商品的数量;设为 0 即可将其移除。 | |
remove_from_cart | 根据商品 ID 将其从购物车中移除。 | |
get_cart | 显示购物车内容:商品、数量、价格、总额和配送时间段,以及无法配送的商品的替代品。 | |
slots | get_delivery_slots | 按每次两天或指定日期列出配送时间段。 |
select_delivery_slot | 选择购物车的配送时间段。 | |
product | get_product | 显示商品的配料、过敏原、营养成分、储存信息、促销信息和价格。 |
discover | get_promotions | 按专区(例如按类别)列出本周促销、某个专区的所有促销,或某项促销中的商品。 |
get_favorites | 按货架列出你购买过的商品,就像应用中的「Favorieten」标签页一样。用于「添加我常买的杂货」。 | |
deliveries | get_deliveries | 显示即将到来的配送(时间段、商品数量、总额,以及司机在途时预计的送达时间)或最近已完成的配送。也可选择显示商品,例如以便再次订购相同商品。 |
recipes | search_recipes | 搜索 Picnic 的食谱。 |
get_saved_recipes | 列出你在应用中保存的食谱。 | |
get_recipe | 显示食谱的配料、过敏原和步骤。食谱工具也接受从 Picnic 应用分享的食谱链接。 | |
add_recipe_to_cart | 按份数将食谱所需的配料加入购物车。 | |
remove_recipe_from_cart | 从购物车中移除食谱及其配料。 | |
save_recipe | 在应用中保存食谱。 | |
unsave_recipe | 从已保存的食谱中移除食谱。 | |
| 输出为精简 JSON,仅包含模型需要的信息。不包含你的姓名、地址、付款详情、订单号及其他账户信息。请注意,工具返回的任何内容都会发送给 MCP 客户端所使用的模型。 |
如果搜索没有明确匹配项,且你的 MCP 客户端可以显示表单(征询),你可以直接在客户端中选择商品,而不必让模型在聊天中询问你。
设置
需要 Node.js 20 或更高版本。
1. 获取身份验证密钥
npx picnic-mcp login
它会询问你的国家/地区、电子邮件和密码,以及你的账户启用双重身份验证时 Picnic 发给你的验证码。它会显示身份验证密钥,且不会存储任何内容。请妥善保管该密钥:它可以访问你的 Picnic 账户。
2. 将服务添加到 MCP 客户端
**Claude Desktop 和其他 MCPB 客户端:**从最新版本下载 picnic-mcp.mcpb,打开它并填写身份验证密钥。
其他客户端可使用如下配置:
{
"mcpServers": {
"picnic": {
"command": "npx",
"args": ["-y", "picnic-mcp"],
"env": {
"PICNIC_AUTH_KEY": "<your auth key>",
"PICNIC_COUNTRY_CODE": "NL"
}
}
}
}
PICNIC_COUNTRY_CODE 为 NL、DE 或 FR(默认值为 NL)。若要选择工具组,请添加 PICNIC_MCP_TOOLS,并提供以逗号分隔的列表,例如 "cart,slots,product,discover,deliveries,recipes"(默认值为 cart,slots,product,discover)。使用较少的工具有助于较小的模型选对工具。服务通过 stdio 运行;如需通过网络访问,请参阅 HTTP。
该服务也已列入 MCP Registry,名称为 io.github.MRVDH/picnic-mcp。
密钥过期时,工具会提示你;请再次运行 npx picnic-mcp login。
HTTP
picnic-mcp http 会在 /mcp 路径上通过 HTTP 提供相同的工具,供连接到 URL 的客户端使用。它需要客户端通过 Authorization: Bearer <token> 发送令牌;请使用以下命令生成令牌:
openssl rand -hex 32
PICNIC_AUTH_KEY=<auth key> PICNIC_MCP_HTTP_TOKEN=<token> npx picnic-mcp http
| 变量 | |
|---|---|
PICNIC_MCP_HTTP_TOKEN | 必填,至少 32 个字符。任何持有该令牌的人都可以更改你的购物车,因此请妥善保管。 |
PICNIC_MCP_HTTP_HOST | 监听地址。默认值为 127.0.0.1,因此只有本机可以连接。 |
PICNIC_MCP_HTTP_PORT | 默认值为 3000。 |
PICNIC_MCP_HTTP_ALLOWED_HOSTS | 除 localhost 外允许的主机名,以逗号分隔,例如前置反向代理的名称。带有其他 Host 或 Origin 标头的请求会被拒绝。 |
该服务不提供 HTTPS。若要从另一台机器使用,请将其置于启用了 HTTPS 的反向代理后,并将代理的主机名添加到 PICNIC_MCP_HTTP_ALLOWED_HOSTS。
在自己的代码中使用
createServer 会返回 MCP 服务,不会读取环境变量或文件,因此你可以在自己的进程中运行它,并将其连接到任意 MCP 传输:
import { createServer } from "picnic-mcp";
const server = createServer({ authKey: "<auth key>", countryCode: "NL" });
await server.connect(transport);
传入 tools 可选择工具组(例如 tools: ["cart", "recipes"]);传入 client 而非 authKey 可使用你已有的 picnic-api 客户端;传入 onError 可自行处理 Picnic 返回的错误(默认情况下,错误会记录到 stderr)。
商品图片
列出商品的结果(搜索结果、购物车、已添加的商品、促销活动、收藏夹、商品详情)会在 _meta["picnic-mcp/images"] 中按商品 ID 携带这些商品的图片 URL。MCP 客户端不会将 _meta 传递给模型,因此图片不会消耗令牌;你自己的代码可以使用这些图片,例如展示商品照片。图片无需授权密钥。该密钥以 IMAGES_META_KEY 导出。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。