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-mcporclaude 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_PROXYto 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 needlatandlong(nottf_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: truefor the whole text, which lifts the size cap). Replies stay under about 15 KB at the maximumlimit(tf_menu25,tf_reviews20,tf_search_dishes40).
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_inforeturns both (min_order,min_order_profile). - Dish and vendor search list only restaurants open now (the site does the same), so at night
totalcan be 0;tf_restaurantsandtf_discounted_vendorsalso list closed vendors, flaggedopen: false.tf_search_dishestop_rated/cheapest/biggest_discountsort the first 100 matches, not the whole result set. eta_maxis the site's "up to N minutes" (its dialog shows roughly 20 to N); the API sends no lower bound.tf_vendor_info.open_nowfollows 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:totalcounts every review including rating-only ones; only reviews with a comment are listed, so a page can hold fewer thanlimit(keep paging whilehas_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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| tapsifood_mcp-0.1.0.tar.gz | 109.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.