stdio, scraping HTML directly with rotating user agents and retry on bot-check pages.results[] with price, MRP, rating, reviewscheapest_in_stock — lowest price, in stockbest_value — the balance pickdiscount_percent, rating, reviewsbullets[], brand, seller, availabilityamazon.in domainsearch_amazon_in("wireless mouse", 3)// trimmed to the good part { "query": "wireless mouse", "total_results": 3, "results": [{ "asin": "B0CQRNWJM2", "title": "ZEBRONICS Blanc Slim Wireless…", "price_inr": 423, "mrp_inr": 799, "rating": 4.0, "review_count": 7801, "in_stock": true, "delivery": "FREE delivery Tomorrow" }], "cheapest_in_stock": { "price_inr": 199 }, "best_value": { "rating": 4.3 } }
cheapest_in_stock is right there in the same response.| Transport | stdio — no HTTP server, no ports, no cookies, no session state |
|---|---|
| User-agent rotation | 5 modern desktop UAs (Chrome / Safari / Firefox on Mac, Windows, Linux) |
| Retries | 3 attempts with exponential backoff on 5xx, 429 and bot-check pages |
| Bot detection | Scans the first 8 KB of each response for known CAPTCHA / robot markers |
| Timeout | 20 seconds per request |
| Runtime | Node.js 18+ · TypeScript · @modelcontextprotocol/sdk + cheerio + zod |
| Image search | Provider-agnostic by design — paste an image into your LLM, it describes it and calls search_amazon_in with the right keywords |
| Reliability note | Expect ~1–5% of requests to hit a bot-check under heavy use. Wait 30–60 s and retry, or switch networks. |
| License | MIT — free to use, fork and ship |
One line in Claude Code — installs straight from npm:
Restart Claude Code, Claude Desktop, Cursor or Windsurf so it picks up the new MCP server.
Just talk to your LLM — it picks the right tool automatically:
By default the amazon.in URLs carry the author's Associates tag (artech-21) — you pay the same price, and it's the only thing keeping the project free and maintained. Override it with the AMAZON_IN_AFFILIATE_TAG env var: set yourtag-21 for your own, or none / off / "" to emit raw amazon.in URLs.
stdio and reads Amazon.in HTML directly, with rotating user agents and automatic retry on bot-check pages.claude mcp add amazon-in -- npx -y amazon-in-mcp-server. Restart your client and ask it to find something on amazon.in. Full steps are in the Install section above.rating × log10(reviews + 10) ÷ √price and the highest wins. The cheapest_in_stock item is returned separately for when you just want the lowest price.AMAZON_IN_AFFILIATE_TAG env var.
I shop on Amazon.in constantly, so I wanted my LLM to do it properly — not just search, but tell me the cheapest in-stock option and the genuinely best-value pick, with a price-history link so I know I'm not buying at a fake-discount peak. No paid APIs, no accounts, just HTML and a scoring function. More of what I build over at adityarajsingh.com.