mcpField
S
Snappfood & SnappMarket

Snappfood & SnappMarket

本地服务
github.com商业与营销365 天前更新

关于 Snappfood & SnappMarket

Snappfood & SnappMarket 是面向伊朗餐饮配送和杂货平台的非官方只读 MCP 服务,供 AI Agent 查询菜品、商品、价格和优惠。它可比较包含配送和包装费用的实际总价,但不支持登录或下单。

主要功能

  1. 01搜索附近餐饮与杂货
  2. 02比较实时价格与总费用
  3. 03查看菜单、商品和配送信息
  4. 04查询评价与限时优惠
  5. 05只读访问,不处理订单

适用场景

  1. 01比较附近披萨的送达总价
  2. 02查找附近最低价杂货
  3. 03筛选免配送费餐厅
  4. 04查看当前限时折扣和评价

MCP 相关

它通过 stdio 向 MCP 客户端提供位置查询、餐饮和杂货搜索、菜单、费用、评价及优惠等只读工具。服务使用运行环境的 IP 访问 Snappfood 与 SnappMarket 的公开端点。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sepehr071-snapp": {
"command": "uvx",
"args": [
"snapp-mcp"
],
"env": {
"SNAPP_MCP_PROXY": "<SNAPP_MCP_PROXY>"
}
}
}
}
启动命令uvx snapp-mcp
需要配置的环境变量
SNAPP_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypisnapp-mcp0.3.2

工具

21

收录的工具列表 · 更新于 5 天前

参数类型必填说明
limitinteger否最多返回的地点数。
querystring是地点、街道、地标或街区名称;波斯语效果最佳,例如 'میدان ونک'。
near_latany否将结果偏向此纬度附近(例如 list_cities 返回的市中心坐标)。
near_longany否将结果偏向此经度附近。

详细介绍

snapp-mcp:面向 Claude、Cursor 和 Copilot 的非官方 Snappfood 和 SnappMarket MCP 服务

snapp-mcp:面向 AI Agent 的 Snappfood 和 SnappMarket MCP 服务

让你的 AI Agent 在 Snappfood 和 SnappMarket(اسنپ‌فود و اسنپ‌مارکت)上逛逛。
一款面向伊朗 Snappfood(餐厅外送)和 SnappMarket(杂货)的非官方只读 MCP 服务:
可从 Claude、Cursor 或 Copilot 搜索菜品和杂货、比较数百家餐厅和商店的实时价格、查看菜单和评价,并发现今日限时优惠。

PyPI Python CI MCP Registry License: MIT

Install in Cursor Install in VS Code

面向 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_dealsMarket 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。此功能默认关闭。

波斯语:Snapp‌Food 和 Snapp‌Market MCP 服务

snapp-mcp 是一款非官方、只读的 MCP 服务,适用于伊朗的 Snapp‌Food(在线订购餐厅美食)和 Snapp‌Market(在线购买超市商品和食品)。它允许您的 AI 助手(Claude、Cursor、Copilot 等)在 Snapp‌Food 和 Snapp‌Market 中搜索, 比较数百家餐厅和商店中食品与商品的实际价格,查看菜单和评价,并查找当前优惠(Foodparty、Jam、Marketparty)。

  • 只读:不会登录账户、创建购物车或提交订单。
  • 计算包含包装费、配送费和最低订单金额的最终价格。
  • 价格单位为托曼,评分范围为 0 至 5。
  • 在您自己的系统上运行,不会向任何中间服务器发送数据。
  • 无需 API 密钥或用户账户。

在 Claude Code 中安装:

claude mcp add snapp -- uvx snapp-mcp

然后询问:“万纳克广场附近,哪家披萨加上配送费最便宜?”

注意: 服务必须在使用伊朗 IP 且未连接 VPN 的系统上运行,因为 Snapp‌Food 会屏蔽来自伊朗境外的请求。如果必须使用 VPN,请将 SNAPP_MCP_PROXY 设置为一个出口位于伊朗的 HTTP 代理。

热门搜索词: Snapp‌Food、Snapp‌Market、在线订餐、最便宜的食物、食物价格比较、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:面向伊朗 Web 的开源 MCP 服务。LinkedIn:linkedin.com/in/sepehr-radmard

由 Sepehr Radmard(سپهر رادمرد)开发并维护。通过 LinkedIn 联系,或在 GitHub 上关注 @sepehr071,获取更多面向伊朗网站的 MCP 服务;所有服务均列在 iran-mcp 中。如果本项目为您节省了时间,请为仓库点亮星标,帮助其他人发现它。

许可证

MIT

如果本项目为您省去了点击操作,请点亮星标,帮助其他人发现它。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。