Shopino

io.github.sepehr071v0.1.1Updated Oct 6, 2026

Unofficial read-only Shopino: search fashion across Iranian shops, compare prices, sizes, stock.

Overview

AI-generated overview

Read-only search of Shopino's Iranian fashion catalog: compare prices, sizes, stock, shops and deals.

What it does
Exposes 14 read-only tools over stdio that query the public Shopino endpoints. It searches products across shops by keyword, category, shop, size, price or city, finds the cheapest in-stock match, browses categories and curated listings, and lists each color and size with its own price and stock. It also reports shop ratings and buyer surveys, finds similar items at other shops, and surfaces flash sales, campaigns and discount codes, plus blog style guides.
When to use it
Useful when an assistant should research clothing, bags or shoes sold by Iranian online and Instagram shops: comparing prices, checking which size or color is in stock, judging a shop's buyer ratings, or catching current deals. It is a research aid only; ordering happens on the Shopino site or the shop's own site.
Requirements
Runs locally as a stdio process, installed with uvx shopino-mcp or pip install shopino-mcp; uv is needed. No account or API key. It makes HTTPS calls to shopino.app, so internet access is required. An optional SHOPINO_MCP_PROXY environment variable sets an HTTP proxy, since system proxy settings are ignored.
Before you install
Read-only by design: no login, cart, orders, likes or reviews, so it cannot buy anything. It sends your search queries to Shopino's public endpoints. Prices are in Toman and change often; some listed before-discount prices may be inflated, and flash-sale items sort by pre-sale price. Shipping cost is not public. The project is unofficial and unaffiliated with Shopino, and its endpoints may change.

Installation

In SourceWeft

  1. Open Shopino in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[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")

PriceProductShop
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
bash
claude mcp add shopino -- uvx shopino-mcp
Claude Desktop

Settings → Developer → Edit Config, then add:

json
{  "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:

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

text
  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)
ToolWhat it does
sh_searchSearch every shop by keyword: price, discount, stock, shop; filter by category, shop, size, price, city
sh_find_cheapestCheapest in-stock matches for a keyword, one flat list sorted by price to pay
sh_browseA category, shop, tag or curated listing sorted by price / date / discount, with price range and size filters
sh_filtersSize systems and sizes, sort orders, courier cities and the sub-categories of a category
sh_categoriesCategory tree with ids and paths, plus total product and shop counts
sh_brandsFeatured official brand shops, or the brands (with ids) a watch shop sells
sh_dealsFlash sale with end time, best sellers and themed rows, biggest discount first, campaigns and discount codes
sh_campaignA campaign page's product rows and tabs
👗 One product (2)
ToolWhat it does
sh_productEvery color / size with its own price and units in stock, size guide, description, shop trust signals, original link
sh_similarProducts that look like this one at other shops (cheapest first), or Shopino's related products
🏪 Shops (2)
ToolWhat it does
sh_shopsFind shops by name, category group, gender or courier city, with rating, surveys and followers
sh_shopA shop's rating, buyer survey, followers, main categories, contacts, website and similar shops
📝 Blog (2)
ToolWhat it does
sh_blog_searchStyle guides and model galleries from the Shopino blog
sh_blog_postOne blog post as plain text

All 14 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?
bash
npx @modelcontextprotocol/inspector uvx shopino-mcp

Configuration

VariableDefaultMeaning
SHOPINO_MCP_PROXYunsetHTTP proxy for every request, e.g. http://user:pass@host:port

فارسی

shopino-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد در شاپینو، میان محصولات هزاران فروشگاه اینترنتی و اینستاگرامی جستجو کند، ارزان‌ترین محصول موجود را پیدا کند، موجودی هر رنگ و سایز را ببیند، امتیاز و نظرسنجی خریداران هر فروشگاه را بررسی کند و تخفیف‌های شگفت‌انگیز و کدهای تخفیف را پیدا کند.

  • فقط خواندنی است: وارد حساب نمی‌شود، سبد خرید نمی‌سازد، سفارش ثبت نمی‌کند و چیزی را لایک نمی‌کند.
  • قیمت‌ها به تومان است.
  • روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.

نصب در Claude Code:

bash
claude mcp add shopino -- uvx shopino-mcp

بعد بپرسید: «ارزان‌ترین مانتو کتان زنانه سایز L زیر ۲ میلیون تومان از یک فروشگاه خوش‌نام کدام است؟»

Development

bash
git clone https://github.com/sepehr071/shopino-mcp && cd shopino-mcpuv syncuv run pytest            # offline, against recorded responsesuv run pytest -m live    # real shopino.appuv 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

Source: README.md at commit 031cf56

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.1.1LatestOct 6, 2026