👗 shopino-mcp
Let your AI agent shop for clothes, bags and shoes across thousands of Iranian shops on Shopino.
Search one catalog of about 960,000 products from 10,000 online and Instagram shops, compare real prices,
check which size and color is in stock, judge the shop, and catch today's flash sale, all from Claude, Cursor or Copilot.
Quick start · What it can do · Tools · FAQ · فارسی
Why
Shopino puts the products of about 10,000 Iranian online and Instagram shops in one place. A search for
"linen manteau" mixes out-of-stock items, colors and sizes with their own stock, shops you've never heard of,
and discount codes hidden in small labels. Finding the cheapest one in your size from a shop you can trust
means a lot of clicking. An agent with shopino-mcp does that in seconds:
You: Cheapest linen manteau in stock right now, from a well-rated shop?
Agent: calls
sh_find_cheapest(query="مانتو کتان")→sh_shop(shop="489")
Price Product Shop 999,000 (56% off) مانتو کتان ازالیا (1123) وایت گالری پلاس (not rated yet) 999,000 (47% off) مانتو کتان زنانه 442170 صنم گالری, 4.6, same-day courier in Tehran 1,100,000 (21% off) 6556-مانتو کتان قلبی پاپیون لیدی, 4.9 from 3,507 buyer surveys, 92% satisfied The two cheapest cost the same; Sanam Gallery is rated and delivers same-day in Tehran. Papion Lady costs 101,000 more but has the best buyer record. Want me to check which sizes are left with
sh_product?
Real tool output from 2026-10-06; prices change all the time. Prices are in Toman.
What it can do
- 🔎 Search every shop at once in Persian or English, with price, discount, stock and the selling shop
- 💸 Find the cheapest in-stock match for a keyword, optionally in one category or with courier delivery in your city
- 🗂️ Browse any category, shop, tag or curated listing sorted by price, date or biggest discount, with price range and size filters
- 📏 Check sizes: every color and size of a product with its own price and units left, plus the shop's size guide
- 🏪 Judge the shop: rating, buyer surveys (satisfied, quality, price, on-time %), followers, contacts and website
- 🪞 Find the same item elsewhere by photo similarity, cheapest first
- ⚡ Catch deals: the flash sale with its end time, best sellers, campaigns and the shops' discount codes
- 📝 Read style guides from the Shopino blog
- 🔒 Read-only by design: no login, no cart, no orders, no likes
Quick start
You need uv. No API key or account.
Claude Code
claude mcp add shopino -- uvx shopino-mcp
Claude Desktop
Settings → Developer → Edit Config, then add:
{
"mcpServers": {
"shopino": { "command": "uvx", "args": ["shopino-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:
{
"servers": {
"shopino": { "type": "stdio", "command": "uvx", "args": ["shopino-mcp"] }
}
}
Anything else
It's a standard stdio MCP server: run uvx shopino-mcp, or pip install shopino-mcp and run shopino-mcp.
Then just ask:
- "Cheapest women's manteau in size L under 2,000,000 Toman, from a shop with good reviews?"
- "Is this product (2578018) cheaper at another shop?"
- "What's in today's flash sale, and are there any discount codes?"
- ارزانترین کفش ورزشی سایز ۴۰ با ارسال پیک در تهران چند است؟
How it works
AI agent (Claude, Cursor, Copilot, ...)
│
│ MCP over stdio
▼
shopino-mcp (runs on your machine)
│
│ HTTPS
├──────▶ api-go.shopino.app search, products, shops, deals
└──────▶ api.shopino.app curated listings, similar shops, blog
shopino-mcp runs locally and calls the same public endpoints the shopino.app website uses.
There's no hosted server in between, no API key, and nothing about you is sent anywhere else.
Tools
🔎 Find products (8)
| Tool | What it does |
|---|---|
sh_search |
Search every shop by keyword: price, discount, stock, shop; filter by category, shop, size, price, city |
sh_find_cheapest |
Cheapest in-stock matches for a keyword, one flat list sorted by price to pay |
sh_browse |
A category, shop, tag or curated listing sorted by price / date / discount, with price range and size filters |
sh_filters |
Size systems and sizes, sort orders, courier cities and the sub-categories of a category |
sh_categories |
Category tree with ids and paths, plus total product and shop counts |
sh_brands |
Featured official brand shops, or the brands (with ids) a watch shop sells |
sh_deals |
Flash sale with end time, best sellers and themed rows, biggest discount first, campaigns and discount codes |
sh_campaign |
A campaign page's product rows and tabs |
👗 One product (2)
| Tool | What it does |
|---|---|
sh_product |
Every color / size with its own price and units in stock, size guide, description, shop trust signals, original link |
sh_similar |
Products that look like this one at other shops (cheapest first), or Shopino's related products |
🏪 Shops (2)
| Tool | What it does |
|---|---|
sh_shops |
Find shops by name, category group, gender or courier city, with rating, surveys and followers |
sh_shop |
A shop's rating, buyer survey, followers, main categories, contacts, website and similar shops |
📝 Blog (2)
| Tool | What it does |
|---|---|
sh_blog_search |
Style guides and model galleries from the Shopino blog |
sh_blog_post |
One blog post as plain text |
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.
final_priceis what you pay,priceis before discount,discount_pctis a whole percent.nullmeans the shop shows no price (usually out of stock). - Sizes and colors can differ in price and stock. A product's
final_priceis its cheapest variant;sh_productlists each color / size with its own price andstock(units left). - Each product is sold by one shop. Many can be bought in the Shopino cart;
shop_site_only/shopino_cart: falsemeans only on the shop's own site (original_url). - Shipping is not public. It is quoted per shop and address at checkout (needs a login), so the order total is items + the shop's shipping − one discount code.
courier_citymeans same-day courier delivery in that city. - Discount codes come from the shops' promotion labels (
promo, e.g. "1 میلیون تخفیف با کد: hana70"); one code per order, entered at checkout. - Some "before" prices are inflated. A 90% discount can be real or a made-up list price; compare with
sh_similar. - Flash-sale items sort and filter on their pre-sale price. Shopino ranks
flash_saleitems by their usual price, so in a "cheapest" list or a price range they can show up below the range or out of order (the site shows them the same way). - Two shop ratings.
rating/surveyscome from Shopino's buyer surveys; the stars the site shows next to a shop arecustomer_rating(customer_rating_count) insh_product/sh_shop. - There is no working color filter on Shopino (the site's own color filter returns nothing); put the color in the search words.
- Persian queries match best (
مانتو کتان,کفش ورزشی مردانه).
FAQ
Can it place an order for me?
No, and that's deliberate. It has no login and never touches the cart, checkout, discount code, like, follow, board, review or ticket endpoints. The agent finds the best option; you buy it on shopino.app or the shop's own site.
How do I get more results?
sh_search and sh_browse return a next_cursor. Pass it back as cursor with the same other arguments for the
next page. (Shopino's own page numbers drop the sort order, so this server pages with the API's cursor.)
Why does sh_find_cheapest skip some items?
It keeps only in-stock items with a price whose title or shop name contains every word of your query
(match_all_words: false turns that off). It scans up to 400 results, cheapest first; complete: false means more
matches lie past that, so raise scan (up to 1,000) or narrow with category_id.
I get "Could not reach shopino.app"
The server retries a dropped connection once. If it still fails, check your internet connection. System proxy
variables are ignored on purpose; set SHOPINO_MCP_PROXY if you need a proxy.
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?
npx @modelcontextprotocol/inspector uvx shopino-mcp
Configuration
| Variable | Default | Meaning |
|---|---|---|
SHOPINO_MCP_PROXY |
unset | HTTP proxy for every request, e.g. http://user:pass@host:port |
فارسی
shopino-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه میدهد در شاپینو، میان محصولات هزاران فروشگاه اینترنتی و اینستاگرامی جستجو کند، ارزانترین محصول موجود را پیدا کند، موجودی هر رنگ و سایز را ببیند، امتیاز و نظرسنجی خریداران هر فروشگاه را بررسی کند و تخفیفهای شگفتانگیز و کدهای تخفیف را پیدا کند.
- فقط خواندنی است: وارد حساب نمیشود، سبد خرید نمیسازد، سفارش ثبت نمیکند و چیزی را لایک نمیکند.
- قیمتها به تومان است.
- روی سیستم خود شما اجرا میشود و به هیچ سرور واسطی داده نمیفرستد.
نصب در Claude Code:
claude mcp add shopino -- uvx shopino-mcp
بعد بپرسید: «ارزانترین مانتو کتان زنانه سایز L زیر ۲ میلیون تومان از یک فروشگاه خوشنام کدام است؟»
Development
git clone https://github.com/sepehr071/shopino-mcp && cd shopino-mcp
uv sync
uv run pytest # offline, against recorded responses
uv run pytest -m live # real shopino.app
uv run ruff check .
Tools live in src/shopino_mcp/catalog.py, product.py, shop.py and info.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 site 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 Shopino. It uses the public endpoints of the shopino.app website, which can change without notice. Please keep request rates reasonable.
License
Metadata
Release files for shopino-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 | |
|---|---|---|---|
| shopino_mcp-0.1.0.tar.gz | 442.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shopino_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 469.5 kB
Release files / shopino_mcp-0.1.0.tar.gz
| Download URL | shopino_mcp-0.1.0.tar.gz |
|---|---|
| Size | 442.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f299b8b0de3c1156a56875066b6020341465cfcdd1753d945f73873b3e0e398
|
|
BLAKE2b-256 checksum How to use checksums |
d84b374e30ccbdbb41292911997787e7f21f1e58490df9aeaab0b8b16e231475
|
| 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 6, 2026.
Transparency logRelease files / shopino_mcp-0.1.0-py3-none-any.whl
| Download URL | shopino_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 27.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
339dc368da949029f3bfc5769b8b2c5c4b00488cea7cf11fe235a0dfcec804f8
|
|
BLAKE2b-256 checksum How to use checksums |
0b33ca90b97682f3a587f5efe9c53d6cf3fd90490297b792373c1c427cd9e99c
|
| 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 6, 2026.
Transparency log