Snappfood & SnappMarket

io.github.sepehr071v0.1.1更新於 Oct 2, 2026

Unofficial read-only Snappfood & SnappMarket: search food and groceries, compare prices, deals.

概覽

AI 產生的概覽

以唯讀方式搜尋並比價伊朗的 Snappfood 餐廳與 SnappMarket 雜貨,包含外送費與限時優惠。

功能
在使用者本機執行,呼叫 Snappfood 與 SnappMarket 的公開端點,依伊朗境內地址搜尋餐點與雜貨商品。工具涵蓋地點查詢、可篩選的餐廳與商店瀏覽、完整菜單與商品目錄、外送費、最低消費、預估送達時間、優惠券、評論,以及 FoodParty、Market Party 等限時優惠。它會計算餐點訂單的真實總價(價格減折扣加包裝費加外送費減優惠券),並找出有貨商品中最便宜的報價。所有工具皆為唯讀,回傳精簡的結構化 JSON。
適用情境
當你希望助理在你自行於 App 下單前,比較伊朗的餐廳或雜貨價格、菜單、外送費與目前折扣時使用。適合例如送到某地址最便宜的披薩、提供免費外送且評分高的商店,或某地點附近的目前限時優惠等問題。
執行需求
需要本機 Python 執行環境,透過 uv 或 uvx(或 pip install snapp-mcp)以 stdio 執行。需要伊朗 IP 位址,因為 Snappfood 會封鎖大多數境外 IP;選用環境變數 SNAPP_MCP_PROXY 可指向出口在伊朗的 HTTP 代理,系統代理設定會被忽略。不需要帳號或 API 金鑰。僅支援桌面端。
安裝前請注意
設計上為唯讀:不登入,也不存取購物車、訂單或付款端點,因此無法下單。它會以你的 IP 從本機向 Snappfood 與 SnappMarket 的公開端點送出請求。選用的 SNAPP_MCP_PROXY 值可能包含代理憑證,應視為機密。價格與優惠隨時變動,在伊朗境外可能被封鎖或無法使用。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Snappfood & SnappMarket,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

🍕 snapp-mcp

Let your AI agent shop around on Snappfood and SnappMarket.
Search dishes and groceries, compare real prices across hundreds of restaurants and stores,
read menus and reviews, and catch today's flash deals, all from Claude, Cursor or Copilot.

[PyPI] [Python] [CI] [MCP Registry] [License: MIT]

[Install in Cursor] [Install in VS Code]

Quick start · What it can do · Tools · FAQ · فارسی


Why

Snappfood shows you one restaurant at a time. Finding the cheapest pizza that actually reaches your door means opening dozens of menus, adding packaging and delivery fees in your head, and checking each restaurant's minimum order. An agent with snapp-mcp does that in seconds:

You: Cheapest pizza delivered to Vanak Square right now, including delivery?

Agent: calls find_location(query="میدان ونک") → food_find_cheapest(query="پیتزا", lat=35.7577, long=51.4095)

TotalDishRestaurantBreakdown
296,400پیتزا سوسیس مینی + نوشابهپیتزاتو (گاندی)food 296,400 · free delivery
410,000پیتزا اسمارت وجی لاورپیتزا دومینوز (جردن)food 360,000 + delivery 50,000
464,000پیتزا پپرونی اسلایسیتله پیتزا (سعادت آباد)food 315,000 + delivery 149,000

The Pizzato combo is cheapest overall. Want me to check its minimum order and coupons with food_order_costs?

Real tool output from 2026-10-02; prices change all the time. Prices are in Toman.

What it can do

  • 🔎 Search dishes and grocery products by name near any address in Iran
  • 💸 Find the true cheapest option: food price after discount + packaging + delivery, checked against live menus
  • 🏪 Browse restaurants and stores with filters: free delivery, discount, coupon, rating, distance
  • 📋 Read full menus, store catalogs, minimum orders, delivery fees, ETAs and coupons
  • ⚡ Catch deals: FoodParty flash deals, meals for one, Gem hunts, Market Party
  • ⭐ Check quality with customer reviews before recommending anything
  • 🔒 Read-only by design: no login, no basket, no orders, no payment

Quick start

You need uv and an Iranian IP address (Snappfood blocks most foreign IPs; see FAQ).

Claude Code
bash
claude mcp add snapp -- uvx snapp-mcp
Claude Desktop

Settings → Developer → Edit Config, then add:

json
{  "mcpServers": {    "snapp": { "command": "uvx", "args": ["snapp-mcp"] }  }}
Cursor

Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json.

VS Code (Copilot agent mode)

Click Install in VS Code above, or add to .vscode/mcp.json:

json
{  "servers": {    "snapp": { "type": "stdio", "command": "uvx", "args": ["snapp-mcp"] }  }}
Anything else

It's a standard stdio MCP server: run uvx snapp-mcp, or pip install snapp-mcp and run snapp-mcp.

Then just ask:

  • "Which restaurants near Tajrish have free delivery and at least 4.5 stars?"
  • "Show FoodParty deals with more than 40% off near me."
  • "Where is low-fat milk cheapest near Jordan, Tehran? Include delivery."
  • ارزان‌ترین کباب نزدیک میدان آزادی شیراز با هزینه ارسال؟

How it works

text
  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 runs locally and calls the same public endpoints the Snappfood and SnappMarket web apps use. There's no hosted server in between, no API key, and nothing about you is sent anywhere else.

Tools

Every food and grocery tool takes lat / long, because menus, prices and delivery fees depend on the delivery point. The agent gets them from find_location or list_cities first.

📍 Location (3)
ToolWhat it does
find_locationAddress, landmark or street → coordinates
reverse_geocodeCoordinates → street / neighbourhood names
list_citiesEvery served city with its center point
🍔 Snappfood: restaurants (9)
ToolWhat it does
food_searchSearch dishes by name; price sorts are re-checked against live menus
food_find_cheapestScan nearby menus + FoodParty for the lowest total price (food + packaging + delivery)
food_restaurantsRestaurants with filters (free delivery, discount, coupon) and sorting
food_menuOne restaurant's full menu with prices, packaging fees and availability
food_order_costsDelivery fee, ETA, minimum order and coupons of one restaurant
food_reviewsCustomer reviews, with what they ordered and the restaurant's reply
food_party_dealsFoodParty flash deals still in stock, with the deal window
food_meal_for_oneSingle-person meals up to 299k Toman with free delivery
food_discounted_vendorsRestaurants running discounts now, plus live Gem deals
🛒 SnappMarket: groceries (9)
ToolWhat it does
market_searchSearch a product across stores, grouped by store
market_find_cheapestCheapest in-stock offers for a product, one flat list
market_storesStores delivering to a point, by delivery fee or rating
market_store_infoDelivery fee, minimum order, opening hours and coupons of a store
market_store_productsSearch inside a store, or browse it by category
market_categoriesProduct categories and their ids
market_productOne product's details and price in a store
market_party_dealsMarket Party flash deals, biggest discount first
market_reviewsCustomer comments on a store

All tools are annotated readOnlyHint: true and return compact structured JSON, so they don't flood the agent's context.

Good to know

  • Prices are in Toman (1 Toman = 10 Rial). Ratings are normalized to 0–5, like the apps; null means not rated yet.
  • True cost of a food order = price − discount + packaging + delivery − coupon, and the basket must reach the restaurant's minimum order. food_find_cheapest and food_order_costs give the agent every piece of that.
  • Persian queries match best (پیتزا, کباب, شیر). Name filters treat Arabic ي/ك and half-space vs space as equal.

FAQ

I get "blocked the request (HTTP 403)"

Snappfood's firewall only accepts Iranian IP addresses. Run the server on a machine in Iran with the VPN off. If you must use a VPN, set SNAPP_MCP_PROXY to an HTTP proxy that exits in Iran. Normal system proxy variables are ignored on purpose, because a foreign VPN exit would get blocked. SnappMarket is less strict.

Can it place an order for me?

No, and that's deliberate. It has no login and never touches the basket, order or payment endpoints. The agent finds the best option; you tap order in the app.

FoodParty or Gem results are empty

Those deals only run in time windows. active: false or gem: null means no window is live right now.

Claude Desktop says uvx is not found

Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.

How do I debug what the agent sees?
bash
npx @modelcontextprotocol/inspector uvx snapp-mcp

Configuration

VariableDefaultMeaning
SNAPP_MCP_PROXYunsetHTTP proxy for every request, e.g. http://user:pass@host:port

فارسی

snapp-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد در اسنپ‌فود و اسنپ‌مارکت جستجو کند، قیمت واقعی غذا و کالا را بین صدها رستوران و فروشگاه مقایسه کند، منو و نظرات را بخواند و تخفیف‌های فعال (فودپارتی، جم، مارکت‌پارتی) را پیدا کند.

  • فقط خواندنی است: وارد حساب نمی‌شود، سبد خرید نمی‌سازد و سفارش ثبت نمی‌کند.
  • قیمت نهایی را با بسته‌بندی، هزینه ارسال و حداقل سفارش حساب می‌کند.
  • روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.

نصب در Claude Code:

bash
claude mcp add snapp -- uvx snapp-mcp

بعد بپرسید: «ارزان‌ترین پیتزا با هزینه ارسال نزدیک میدان ونک کجاست؟»

نکته: سرور باید روی سیستمی با IP ایران و بدون VPN اجرا شود، چون اسنپ‌فود درخواست‌های خارج از ایران را مسدود می‌کند.

Development

bash
git clone https://github.com/sepehr071/snapp-mcp && cd snapp-mcpuv syncuv run pytest            # offline, against recorded responsesuv run pytest -m live    # real APIs (needs an Iranian IP)uv run ruff check .

Tools live in src/snapp_mcp/food.py, market.py and location.py; each is a typed async function with a docstring that tells the agent when to use it. Issues and PRs are welcome, especially new tools and fixes for API changes.

Releases: bump the version in pyproject.toml and server.json, then push a v* tag. GitHub Actions tests, publishes to PyPI and the MCP Registry, and creates the GitHub Release.

Disclaimer

Unofficial and not affiliated with or endorsed by Snapp. It uses the public endpoints of the snappfood.ir and snapp.market web apps, which can change without notice. Please keep request rates reasonable.

License

MIT

來源:README.md,提交 1dab3f9

工具

0
工具後設資料尚未被收錄。

版本歷史

1
  1. v0.1.1最新Oct 2, 2026