关于 Snappfood & SnappMarket
Snappfood & SnappMarket 是面向伊朗餐饮配送和杂货平台的非官方只读 MCP 服务,供 AI Agent 查询菜品、商品、价格和优惠。它可比较包含配送和包装费用的实际总价,但不支持登录或下单。
主要功能
- 01搜索附近餐饮与杂货
- 02比较实时价格与总费用
- 03查看菜单、商品和配送信息
- 04查询评价与限时优惠
- 05只读访问,不处理订单
适用场景
- 01比较附近披萨的送达总价
- 02查找附近最低价杂货
- 03筛选免配送费餐厅
- 04查看当前限时折扣和评价
MCP 相关
它通过 stdio 向 MCP 客户端提供位置查询、餐饮和杂货搜索、菜单、费用、评价及优惠等只读工具。服务使用运行环境的 IP 访问 Snappfood 与 SnappMarket 的公开端点。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx snapp-mcpSNAPP_MCP_PROXYOptional HTTP proxy URL. Snappfood only accepts Iranian IP addresses; system proxy settings are ignored. Also accepts a comma-separated list: one is used until it gets blocked or fails to connect, then the next.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
21收录的工具列表 · 更新于 5 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 最多返回的地点数。 |
| query | string | 是 | 地点、街道、地标或街区名称;波斯语效果最佳,例如 'میدان ونک'。 |
| near_lat | any | 否 | 将结果偏向此纬度附近(例如 list_cities 返回的市中心坐标)。 |
| near_long | any | 否 | 将结果偏向此经度附近。 |
详细介绍
snapp-mcp:面向 AI Agent 的 Snappfood 和 SnappMarket MCP 服务
让你的 AI Agent 在 Snappfood 和 SnappMarket(اسنپفود و اسنپمارکت)上逛逛。
一款面向伊朗 Snappfood(餐厅外送)和 SnappMarket(杂货)的非官方只读 MCP 服务:
可从 Claude、Cursor 或 Copilot 搜索菜品和杂货、比较数百家餐厅和商店的实时价格、查看菜单和评价,并发现今日限时优惠。
面向 AI Agent · 原因 · 功能 · 快速开始 · 工具 · 工作原理 · 须知 · 常见问题 · 配置 · فارسی · 开发
面向 AI Agent
- **内容:**适用于伊朗 Snappfood(snappfood.ir,餐厅配送)和 SnappMarket(snapp.market,杂货)的非官方 MCP 服务(模型上下文协议)。使用波斯语查询效果最佳;价格以 Toman 计。
- 安装:
uvx snapp-mcp或claude mcp add snapp -- uvx snapp-mcp。传输方式:stdio。需要 uv(Python 3.10+)。 - **身份验证:**无需身份验证、API 密钥或账户。Snappfood 仅接受伊朗 IP:请在伊朗境内运行且不使用 VPN,或将
SNAPP_MCP_PROXY设为出口位于伊朗的 HTTP 代理。系统代理设置会被忽略。 - **访问权限:**只读。无需登录、购物篮、订单或付款,因此调用任何工具前都无需确认。全部 21 个工具均带有
readOnlyHint: true。 - **工具:**共 21 个:
find_location、reverse_geocode、list_cities,以及food_*(9 个)和market_*(9 个)。大多数 food 和 market 工具需要lat和long(food_reviews、market_reviews、market_product、list_cities除外)。 典型流程:find_location->food_find_cheapest->food_order_costs(杂货:market_find_cheapest->market_store_info)。 - **单位:**价格以 Toman 计(1 Toman = 10 Rial),评分范围为 0-5。
- **适用场景:**比较伊朗某个地址附近的菜品或杂货的实际总价(食物 + 包装 + 配送)。
- **不适用场景:**用户想要下单或付款,或用户位于伊朗境外且没有伊朗 IP 或代理(Snappfood 会返回 HTTP 403)。
- **输出:**精简的 JSON。省略 Null 和空字段(缺少
rating表示尚未评分);评论和描述文本截断至 400 个字符(将full_text: true传给food_reviews、market_reviews或market_product可获取完整文本)。餐厅和门店的vendor_code值可在工具间传递。FoodParty 和 Gem 优惠仅在特定时段有效。 - 机器可读:
server.json和 iran-mcp 目录(TOOLS.md、servers.json、llms.txt)。
原因
Snappfood 一次只向你展示一家餐厅。要找到真正能送到你家门口的最便宜披萨,意味着要打开几十份菜单,在脑中加上包装费和配送费,并逐一查看每家餐厅的最低订单金额。使用 snapp-mcp 的 Agent 几秒钟就能完成:
**你:**现在送到 Vanak Square 的最便宜披萨是什么?包括配送费?
**Agent:**调用
find_location(query="میدان ونک")→food_find_cheapest(query="پیتزا", lat=35.7577, long=51.4095)
总价 菜品 餐厅 价格明细 296,400 پیتزا سوسیس مینی + نوشابه پیتزاتو (گاندی) 食物 296,400 · 免配送费 410,000 پیتزا اسمارت وجی لاور پیتزا دومینوز (جردن) 食物 360,000 + 配送费 50,000 464,000 پیتزا پپرونی اسلایسی تله پیتزا (سعادت آباد) 食物 315,000 + 配送费 149,000 Pizzato 套餐的总价最低。要我用
food_order_costs查看它的最低订单金额和优惠券吗?
来自 2026-10-02 的真实工具输出;价格随时可能变动。价格以 Toman 计。
功能
- 搜索 伊朗任意地址附近的菜品和杂货商品
- 找出真正最便宜的选项:根据实时菜单,计算折扣后的商品价格、包装费和配送费
- 浏览 餐厅和商店,并按免费配送、折扣、优惠券、评分和距离筛选
- 查看完整菜单、商店目录、最低订单金额、配送费、预计送达时间和优惠券
- 发现优惠:FoodParty 限时特惠、单人餐、Gem 寻宝、Market Party
- 查看品质:推荐前先阅读顾客评价
- 设计为只读:无需登录,不加入购物车,不下单,不付款
示例提示词:
- “塔杰里什附近有哪些餐厅提供免费配送且评分至少为 4.5 星?”
- “显示我附近折扣超过 40% 的 FoodParty 优惠。”
- “约旦街、德黑兰附近哪里可以买到最便宜的低脂牛奶?请包含配送费。”
- “在革命广场附近找一份低于 200k 托曼且免费配送的单人餐。”
- ارزانترین کباب نزدیک میدان آزادی شیراز با هزینه ارسال؟
- امروز در فودپارتی نزدیک ونک چه تخفیفهایی هست؟
- ارزانترین شیر کمچرب نزدیک میدان ونک را از اسنپمارکت پیدا کن.
快速开始
你需要 uv 和伊朗 IP 地址 (Snappfood 会屏蔽大多数海外 IP;请参阅 常见问题)。无需 API 密钥或账户。
Claude Code
claude mcp add snapp -- uvx snapp-mcp
Claude Desktop
设置 → 开发者 → 编辑配置,然后添加:
{
"mcpServers": {
"snapp": { "command": "uvx", "args": ["snapp-mcp"] }
}
}
Cursor
点击上方的 Install in Cursor,或将 Claude Desktop 配置块添加到 ~/.cursor/mcp.json(或项目中的 .cursor/mcp.json)。
VS Code (Copilot agent mode)
点击上方的 Install in VS Code,或添加到 .vscode/mcp.json:
{
"servers": {
"snapp": { "type": "stdio", "command": "uvx", "args": ["snapp-mcp"] }
}
}
Codex CLI
codex mcp add snapp -- uvx snapp-mcp
也可以添加到 ~/.codex/config.toml:
[mcp_servers.snapp]
command = "uvx"
args = ["snapp-mcp"]
Gemini CLI
添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"snapp": { "command": "uvx", "args": ["snapp-mcp"] }
}
}
Windsurf
将 Claude Desktop 配置块添加到 ~/.codeium/windsurf/mcp_config.json。
其他客户端
这是一个标准的 stdio MCP 服务:运行 uvx snapp-mcp,或执行 pip install snapp-mcp 后运行 snapp-mcp。
每个食品和杂货工具都需要 lat / long,因为菜单、价格和配送费取决于配送地点。Agent 会先通过 find_location 或 list_cities 获取这些信息。
位置(3)
| 工具 | 功能 |
|---|---|
find_location | 地址、地标或街道 → 坐标 |
reverse_geocode | 坐标 → 街道 / 社区名称 |
list_cities | 所有提供服务的城市及其中心点 |
Snappfood:餐厅(9)
| 工具 | 功能 |
|---|---|
food_search | 按名称搜索菜品;按价格排序的结果会与实时菜单重新核对 |
food_find_cheapest | 扫描附近菜单和 FoodParty,找出总价(食品 + 包装 + 配送)最低的选项 |
food_restaurants | 按条件筛选(免配送费、折扣、优惠券)并排序餐厅 |
food_menu | 单家餐厅的完整菜单,含价格、包装费和供应情况 |
food_order_costs | 单家餐厅的配送费、预计送达时间、最低订单金额和优惠券 |
food_reviews | 顾客评价,包含所点菜品和餐厅回复 |
food_party_deals | 仍有库存的 FoodParty 限时优惠及优惠时段 |
food_meal_for_one | 单人餐,价格不超过 299k Toman,且免配送费 |
food_discounted_vendors | 当前提供折扣的餐厅,以及实时 Gem 优惠 |
SnappMarket:杂货(9)
| 工具 | 功能 |
|---|---|
market_search | 跨商店搜索商品,并按商店分组 |
market_find_cheapest | 商品当前有货的最低价优惠,显示为单一列表 |
market_stores | 可配送到指定地点的商店,按配送费或评分排序 |
market_store_info | 商店的配送费、最低订单金额、营业时间和优惠券 |
market_store_products | 在商店内搜索商品,或按类别浏览 |
market_categories | 商品类别及其 ID |
market_product | 单家商店中某件商品的详情和价格 |
market_party_deals | Market Party 限时优惠,按折扣力度从高到低排序 |
market_reviews | 顾客对商店的评论 |
所有 21 个工具都标注了 readOnlyHint: true,并返回精简的结构化 JSON,因此不会让 Agent 的上下文过载。
工作原理
AI agent (Claude, Cursor, Copilot, ...)
│
│ MCP over stdio
▼
snapp-mcp (runs on your machine, uses your IP)
│
│ HTTPS
├──────▶ snappfood.ir restaurants
└──────▶ snapp.market groceries
snapp-mcp 在本地运行,并调用 Snappfood 和 SnappMarket 网页应用使用的相同公共端点;它采用类似 Chrome 的 TLS 和请求头配置,最多同时发送 2 个请求,并加入 150-600 ms 的小幅随机延迟。
相同的 GET 请求会缓存 60 秒;失败的 GET 请求(超时、网络错误、5xx、429)会采用退避策略重试,最多 2 次。
它只会与固定允许列表中的 Snapp 主机通信,并将响应正文限制在 5 MB 以内。
它执行的唯一 POST 请求是获取 SnappMarket 的匿名令牌(公共网页应用客户端凭据),商店和商品端点需要此令牌。
中间没有托管服务,不需要 API 密钥,也不会将任何与你有关的信息发送到其他地方。
需要了解的信息
- 价格单位为 Toman(1 Toman = 10 Rial)。评分已统一换算为 0–5(API 使用 0-10);缺少
rating表示尚未评分(空值字段会被省略)。 - 食品订单的实际费用 = 价格 − 折扣 + 包装费 + 配送费 − 优惠券,且购物篮金额必须达到餐厅的最低订单金额。
food_find_cheapest和food_order_costs会向 Agent 提供所有相关信息。 - 价格会实时核验。 搜索索引中的价格会过时,因此
food_search的价格排序和food_find_cheapest会重新读取实时菜单,并剔除已下架、不可用或属于配菜的菜品(酱料、饮料等)。 - 波斯语查询效果最佳(
پیتزا、کباب、شیر)。名称筛选会将阿拉伯语的 ي/ك 和半空格与空格视为相同。 - 优惠活动有时间窗口。 FoodParty 和 Gem 只在特定时段开放;其他时间,工具会返回
active: false或gem: null。 - 文本会被截断。 评论和描述文本限制为 400 个字符,除非你请求
full_text。 - 需要位置信息。 菜单、价格和费用取决于配送地点,因此几乎所有工具都需要
lat和long。 - 伊朗 IP。 Snappfood 的防火墙只接受伊朗 IP 地址(否则会返回 HTTP 403,某些出口节点还会导致 TLS 连接重置);SnappMarket 的限制较少。如果必须从国外运行,请设置
SNAPP_MCP_PROXY。 - 不包含: 登录、OTP、购物篮、订单、付款、钱包、发布评论和保存地址。该服务不会调用这些端点。
常见问题解答
有没有适用于 AI Agent 的 Snappfood 或 SnappMarket API 或 MCP 服务?
有:snapp-mcp 是一个非官方 MCP 服务,提供 21 个只读工具,用于查询菜品、菜单、杂货、配送费和优惠。它调用 Snappfood 和 SnappMarket 网页应用使用的相同公开端点;无需 API 密钥。
如何在 Claude、Cursor 或 Copilot 中使用 Snappfood?
使用 claude mcp add snapp -- uvx snapp-mcp 添加服务(或者按照快速入门中的相应配置,为 Claude Desktop、Cursor、VS Code 等进行设置),然后用波斯语或英语询问某个地址附近的菜品。
它是官方的吗?安全吗?免费吗?在伊朗境外能用吗?
它是非官方项目,与 Snapp 没有关联。它是只读的(无需登录,不会操作购物篮或付款),在你的电脑上运行,并采用 MIT 许可证,免费提供。在伊朗境外,Snappfood 会屏蔽大多数 IP,因此请使用伊朗 IP 或设置 SNAPP_MCP_PROXY。
我收到“blocked the request (HTTP 403)”错误
Snappfood 的防火墙只接受伊朗 IP 地址。请在伊朗境内的机器上运行服务,并关闭 VPN。
如果必须使用 VPN,请将 SNAPP_MCP_PROXY 设置为出口位于伊朗的 HTTP 代理(可以用多个代理,以逗号分隔)。系统常规代理变量会被有意忽略,因为从境外 VPN 出口访问会遭到屏蔽。SnappMarket 的限制较少。
它能帮我下单吗?
不能,这是有意为之。它无需登录,也不会访问购物篮、订单或付款端点。 Agent 会帮你找到最佳选项;你可以在应用中点击下单。
FoodParty 或 Gem 的结果为空
这些优惠只在特定时段开放。active: false 或 gem: null 表示当前没有优惠时段。
价格准确吗?
价格以土曼为单位,实时来自 Snapp API;按价格排序时也会重新读取各餐厅当前的菜单,但价格、库存和配送费变化很快。 这些数据仅代表调用时的情况,下单前请在应用中确认最终总价。
为什么 Agent 需要坐标?
菜单、价格、库存情况和配送费都取决于配送地点。Agent 会使用 find_location 将地址或地标转换为 lat/long,也可以使用 list_cities 获取城市中心点。
Claude Desktop 提示找不到 uvx
将 uvx 的完整路径(Windows 上使用 where uvx,macOS/Linux 上使用 which uvx)设为 command。
如何调试 Agent 能看到的内容?
npx @modelcontextprotocol/inspector uvx snapp-mcp
配置
| 变量 | 必填 | 默认值 | 含义 |
|---|---|---|---|
SNAPP_MCP_PROXY | 否 | 未设置 | 用于每个请求的 HTTP 代理,例如 http://user:pass@host:port。多个代理可以用逗号分隔,依次使用:某个代理被屏蔽(403/429)或无法连接时,会切换到下一个代理 |
如果 Snapp 返回机器人检测页面,服务可以通过无头浏览器处理:安装 snapp-mcp[browser](例如 uvx --from 'snapp-mcp[browser]' snapp-mcp),然后运行 patchright install chromium。此功能默认关闭。
波斯语:SnappFood 和 SnappMarket MCP 服务
snapp-mcp 是一款非官方、只读的 MCP 服务,适用于伊朗的 SnappFood(在线订购餐厅美食)和 SnappMarket(在线购买超市商品和食品)。它允许您的 AI 助手(Claude、Cursor、Copilot 等)在 SnappFood 和 SnappMarket 中搜索, 比较数百家餐厅和商店中食品与商品的实际价格,查看菜单和评价,并查找当前优惠(Foodparty、Jam、Marketparty)。
- 只读:不会登录账户、创建购物车或提交订单。
- 计算包含包装费、配送费和最低订单金额的最终价格。
- 价格单位为托曼,评分范围为 0 至 5。
- 在您自己的系统上运行,不会向任何中间服务器发送数据。
- 无需 API 密钥或用户账户。
在 Claude Code 中安装:
claude mcp add snapp -- uvx snapp-mcp
然后询问:“万纳克广场附近,哪家披萨加上配送费最便宜?”
注意: 服务必须在使用伊朗 IP 且未连接 VPN 的系统上运行,因为 SnappFood 会屏蔽来自伊朗境外的请求。如果必须使用 VPN,请将 SNAPP_MCP_PROXY 设置为一个出口位于伊朗的 HTTP 代理。
热门搜索词: SnappFood、SnappMarket、在线订餐、最便宜的食物、食物价格比较、Foodparty、餐厅折扣、配送费、餐厅菜单、在线超市、食品价格、AI 助手、波斯语 MCP 服务。
开发
git clone https://github.com/sepehr071/snapp-mcp && cd snapp-mcp
uv sync
uv run python -m pytest # offline, against recorded responses
uv run python -m pytest -m live # real APIs (needs an Iranian IP)
uv run ruff check .
工具位于 src/snapp_mcp/food.py、market.py 和 location.py 中;每个工具都是带有文档字符串的类型化异步函数,文档字符串会说明何时使用该工具。欢迎提交问题和 PR,尤其欢迎新增工具和修复 API 变更问题。
发布:更新 pyproject.toml 和 server.json 中的版本,然后推送 v* 标签。GitHub Actions 会运行测试、发布到 PyPI 和 MCP Registry,并创建 GitHub Release。
相关服务
- iran-mcp:所有伊朗服务 MCP 服务的目录
- okala-mcp:各商店的杂货价格和优惠
- tapsifood-mcp:在另一个伊朗平台上搜索外卖和菜单
- digikala-mcp:Digikala 商品搜索和价格查询
- torob-mcp:比较伊朗各商店的价格
免责声明
本项目为非官方项目,与 Snapp 无关联,也未获得其认可。它是只读的:仅读取 snappfood.ir 和 snapp.market Web 应用的公开接口,这些接口可能会在未通知的情况下发生变化。请保持合理的请求频率。
作者
由 Sepehr Radmard(سپهر رادمرد)开发并维护。通过 LinkedIn 联系,或在 GitHub 上关注 @sepehr071,获取更多面向伊朗网站的 MCP 服务;所有服务均列在 iran-mcp 中。如果本项目为您节省了时间,请为仓库点亮星标,帮助其他人发现它。
许可证
如果本项目为您省去了点击操作,请点亮星标,帮助其他人发现它。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
