Skip to main content
shopino-mcp: let your AI agent find the cheapest outfit across thousands of Iranian shops

👗 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.

PyPI Python CI MCP Registry License: MIT

Install in Cursor Install in VS Code

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_price is what you pay, price is before discount, discount_pct is a whole percent. null means the shop shows no price (usually out of stock).
  • Sizes and colors can differ in price and stock. A product's final_price is its cheapest variant; sh_product lists each color / size with its own price and stock (units left).
  • Each product is sold by one shop. Many can be bought in the Shopino cart; shop_site_only / shopino_cart: false means 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_city means 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_sale items 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 / surveys come from Shopino's buyer surveys; the stars the site shows next to a shop are customer_rating (customer_rating_count) in sh_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

MIT

Metadata

Release files for shopino-mcp 0.1.1

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

Source distribution (sdist)

Source distribution for shopino-mcp 0.1.1
File Size Uploaded
shopino_mcp-0.1.1.tar.gz 442.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shopino-mcp 0.1.1
File Interpreter ABI Platform
shopino_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 469.5 kB

Release files / shopino_mcp-0.1.1.tar.gz

Download URL shopino_mcp-0.1.1.tar.gz
Size 442.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d97d03caf240fb6599f579e147bcbc34050c0aa3dc97bfc553d4c90ee05ec334
BLAKE2b-256 checksum
How to use checksums
aacf83f7d0776dcf65698b38ce3f8e3c62912f747cbefe65745de670e8c844c4
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

Release files / shopino_mcp-0.1.1-py3-none-any.whl

Download URL shopino_mcp-0.1.1-py3-none-any.whl
Size 27.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
39e58d6fcff35b59af594e9058b2f11fc3edb4500f5628536734ced815c34804
BLAKE2b-256 checksum
How to use checksums
d59897c77cd5ec4dc861d8e2797c5a7c2f0ee98cc9f43d06488bde2ff9364b48
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

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

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