digikala-mcp
Health Warn
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Warn
- process.env — Environment variable access in scripts/verify-live.mjs
- network request — Outbound network request in scripts/verify-live.mjs
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
MCP server for Digikala: search, compare and price-check products on Iran's largest marketplace. Read-only, no API key. 16 tools, hosted on Cloudflare Workers.
Digikala MCP - Shop intelligence for AI agents

A public MCP server that gives AI agents real Digikala knowledge: search, prices in Toman, discounts, ratings, sellers, reviews, deals and bestsellers. Read-only, no key needed.
Live endpoint: https://digikala-mcp.mmdju.workers.dev/mcp (Streamable HTTP, stateless)
نسخه فارسی · Examples · Tool reference · Changelog
Connect in 30 seconds
Any MCP client, one URL. Cline / Cursor / Claude Desktop (mcp.json style):
{
"mcpServers": {
"digikala": { "url": "https://digikala-mcp.mmdju.workers.dev/mcp" }
}
}
Then just talk: "best Samsung phone under 20 million Toman", "is this laptop any good?", "what is on deal today?", "what is popular in Iran right now?".
16 tools
| Tool | What it answers |
|---|---|
digikala_suggest |
Vague wording to real search terms, category ids, trends |
search_digikala |
"Show me X", price checks, filters + sorting + paging |
browse_category |
Browse a category, drill into sub-categories |
product_details |
Everything about one product: price, seller, warranty, specs, reviews |
product_price_chart |
"Is now cheap?" - short price history with seller per point |
product_questions |
"What did buyers ask?" - questions + answer counts |
get_products_batch |
Shortlist cards for up to 10 ids - feeds compare_products |
product_url |
Product id to shareable URL + title |
product_variants |
"Which colour is cheapest?" - every variant with its own price + seller |
search_filters |
"Which brands exist for X?" - brand/color/category ids + price range |
product_reviews |
"Is it any good?" - buyer-only and min-rating filters |
compare_products |
"Which of these?" - only the specs that actually differ |
find_best_value |
"Best X under Y Toman" - ranked picks with seller grade |
incredible_offers |
Today's deals (شگفتانگیز + other promotions) |
best_selling |
Site-wide bestsellers, with category ids to go deeper |
similar_products |
"What else is like this?" - Digikala's own recommendations |
Notes for agent builders:
- All prices are in Toman (1 Toman = 10 Rial). Prices, stock and discounts move constantly - always link the product URL so the user can confirm before buying.
- Start vague queries with
digikala_suggestto get real search terms and acategory_id. - Anything with a budget or the word "best" goes to
find_best_value- plain search only sees one page. - Product counts are Digikala's own estimates and drift between pages - treat them as approximate.
- Results are capped (default 10, max 30) to protect agent context. Specs are capped at 60 attributes unless narrowed.
- See examples/sample-calls.md for seven copy-paste conversation flows, and docs/tools.md for the full parameter reference.
- Persian queries are normalized with fa-text-utils (yeh/kaf folding, Persian digits, ZWNJ variants) - the same tiny helpers, published separately.
How it works
How a question becomes an answer. No user data is stored anywhere in this path.
flowchart LR
subgraph you [Your machine]
agent[AI agent<br/>Cline / Cursor / Claude]
end
subgraph cf [Cloudflare Workers]
worker[digikala-mcp<br/>stateless, no database]
end
dk[(Digikala public web API<br/>api.digikala.com)]
agent -->|POST /mcp<br/>Streamable HTTP, no key| worker
worker -->|HTTPS + polite pacing<br/>reads only| dk
dk -->|compact JSON| worker
worker -->|small cards<br/>toman, rating, URL| agent
What this means:
- Stateless. Every request stands alone - no sessions, no accounts, nothing to log in to.
- Read-only. All 16 tools carry
readOnlyHint. Nothing here can change, delete or order anything. - No storage. The only memory is a short-lived response cache (minutes, per isolate). Prices, stock and discounts are re-read from Digikala every time the cache expires.
- Rate-limit aware. Requests are paced and retried with backoff, so bursts never leave this box as bursts.
- Undocumented upstream. Digikala's public API can change without notice - this service tracks it and adapts, which is exactly why the verify script exists.
Trust, verified
Don't take my word for it - check the live server yourself:
node scripts/verify-live.mjs # needs Node.js 18+, nothing to install
It lists all 16 tools over Streamable HTTP, runs a search + details read + error paths, and asserts the honest-data contract. The same script runs hourly in CI () - if the endpoint or Digikala's API drifts, the badge goes red. See docs/architecture.md for how a question becomes an answer, and examples/python.py for a copy-paste client.
Data source
Digikala's public web API (undocumented, may change without notice). This project is not affiliated with or endorsed by Digikala.
Status
Free public service on Cloudflare Workers. Fair use applies - if you hammer it, you will be rate-limited.
License
Showcase repository (docs only, no source published) - see LICENSE. Security notes in SECURITY.md. Persian version in README_FA.md.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found