Skip to main content

tapsifood-mcp: Tapsi Food MCP server for AI agents

Let your AI agent shop around on Tapsi Food (تپسی‌فود). An unofficial, read-only MCP server for Tapsi's food and grocery delivery in Iran: search dishes and restaurants near an address, read live menus and reviews, check delivery fees and minimum orders, and catch the Tap Time flash deals.

For AI agents

  • What: unofficial MCP server for Tapsi Food (tapsi.food) in Iran. Queries in Persian match best; prices in Toman.
  • Install: uvx tapsifood-mcp or claude mcp add tapsifood -- uvx tapsifood-mcp. Transport: stdio. Needs uv (Python 3.10+).
  • Auth: none. Tapsi Food hangs connections from non-Iranian IPs: run it from Iran without a VPN, or set TAPSIFOOD_MCP_PROXY to an HTTP proxy that exits in Iran.
  • Access: read-only. No login, basket, orders or payment, so no confirmation is needed before calling any tool.
  • Tools: 11, all tf_*. Most need lat and long (not tf_reviews, tf_find_location, tf_list_cities). Typical sequence: tf_find_location -> tf_search_dishes -> tf_vendor_info (-> tf_menu, tf_reviews).
  • Coverage: Tehran, Mashhad, Shiraz. Elsewhere the API answers 404 or OutOfCoverage.
  • Output: compact JSON. Prices in Toman, ratings 0-5. Null and empty fields are omitted (a missing rating = not rated); menu descriptions are cut to 100 characters and review comments to 250 (full_text: true for the whole text, which lifts the size cap). Replies stay under about 15 KB at the maximum limit (tf_menu 25, tf_reviews 20, tf_search_dishes 40).

Quick start

claude mcp add tapsifood -- uvx tapsifood-mcp
# behind a proxy that exits in Iran:
claude mcp add tapsifood -e TAPSIFOOD_MCP_PROXY=http://127.0.0.1:8080 -- uvx tapsifood-mcp

Tools

Tool What it does
tf_find_location Turn a place name or address into latitude/longitude.
tf_reverse_geocode Describe coordinates as an address with province and city.
tf_list_cities List the cities Tapsi Food shows, with a center point and whether it delivers there.
tf_search_dishes Search dishes by name near a point; sort by relevance, cheapest, biggest discount, rating or distance.
tf_search_vendors Search restaurants and stores by name or cuisine near a point.
tf_restaurants List restaurants or grocery stores with rating, delivery fee, minimum order, ETA; filter by cuisine, discount, courier.
tf_deals List the Tap Time flash deals (limited-stock discounted dishes).
tf_discounted_vendors List the vendors in the Food Shots discount campaign.
tf_menu Read a vendor's live menu with price, discount and stock.
tf_vendor_info Get a vendor's delivery fee to a point, minimum order, packaging, ETA, status, hours, address and rating spread.
tf_reviews Read customer reviews of a vendor with per-dish ratings.

Notes

  • Prices in the search index can lag the menu: confirm with tf_menu. Menu and profile minimums sometimes differ; tf_vendor_info returns both (min_order, min_order_profile).
  • Dish and vendor search list only restaurants open now (the site does the same), so at night total can be 0; tf_restaurants and tf_discounted_vendors also list closed vendors, flagged open: false. tf_search_dishes top_rated / cheapest / biggest_discount sort the first 100 matches, not the whole result set.
  • eta_max is the site's "up to N minutes" (its dialog shows roughly 20 to N); the API sends no lower bound. tf_vendor_info.open_now follows the menu status (the live state the site shows); the profile's own status is just the vendor's on/off switch and is not returned.
  • tf_reviews: total counts every review including rating-only ones; only reviews with a comment are listed, so a page can hold fewer than limit (keep paging while has_more). The site's tab badge shows just the first page's count. Writer names are left out on purpose.
  • Coupons are not exposed by the site's anonymous API.
  • Page 1 of the browse tools also carries filter and banner widgets, so it lists fewer vendors than page_size.
  • API map this server is built on: tapsifood/ (endpoints, samples, quirks).

Development

uv sync
uv run ruff check . && uv run ruff format --check .
uv run python -m pytest -q          # offline unit tests
uv run python -m pytest -m live -q  # real API; needs an Iranian IP
uv build

Unofficial: not affiliated with Tapsi. MIT licensed.

Metadata

Release files for tapsifood-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tapsifood-mcp 0.1.0
File Size Uploaded Provenance
tapsifood_mcp-0.1.0.tar.gz 109.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for tapsifood-mcp 0.1.0
File Interpreter ABI Platform
tapsifood_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 130.0 kB

Release files / tapsifood_mcp-0.1.0.tar.gz

Download URL tapsifood_mcp-0.1.0.tar.gz
Size 109.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7d1cf55368cf4685e345e30ffbcd8f2b096b4ff741b0c286ddaf66ed9844cf2b
BLAKE2b-256 checksum
How to use checksums
7bc36160ce76559b4f99589184938e8a467d8f286be2d83f88797e19b602a4d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / tapsifood_mcp-0.1.0-py3-none-any.whl

Download URL tapsifood_mcp-0.1.0-py3-none-any.whl
Size 20.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
af43f7e4eb992365b7dec413e01430e9a7c90ba4a7034467cde2f166f2479743
BLAKE2b-256 checksum
How to use checksums
2e11784a23ec597496494efdd36caaefa7976018caf313886e64c937fc8e8e3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Security for tapsifood-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for tapsifood_mcp-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page