SI

sepehr071/iran-crypto-mcp

Developer tools
7 stars 5 forks Quality 83 Trend 35MIT

Unofficial read-only MCP server for Iranian crypto exchanges: Nobitex, Wallex, Bitpin, Ramzinex, Tabdeal, OMPFinex and Exir. Compare prices in Toman, order books, trades, candles.

Overview

- unofficial MCP server for the public market data of 12 Iranian crypto exchanges and brokers (Nobitex, Wallex, Bitpin, Ramzinex, Tabdeal, OMPFinex, Exir, Bit24, Aban Tether, Kifpool, OK-EX, Tetherland). - uvx iran-crypto-mcp or claude mcp add iran-crypto -- uvx iran-crypto-mcp. Transport: stdio. Needs uv (Python 3.10+). - none, no API key or account. Optional IRAN_CRYPTO_MCP_PROXY (HTTP proxy URL, or a comma-separated list); system proxy settings are ignored. - read-only. No login, balances, orders or trading, so no confirmation is needed before calling any tool. - 8, all prefixed ic_. Start with ic_compare_price. Typical sequence: ic_compare_price -> ic_get_orderbook -> ic_candles. - comparing a coin's price across Iranian exchanges, checking a spread, reading an order book or recent trades, or listing 24h movers. - the user wants to buy, sell or transfer, needs account data, or wants non-Iranian exchanges. - compact JSON.

README


For AI agents

  • What: unofficial MCP server for the public market data of 12 Iranian crypto exchanges and brokers (Nobitex, Wallex, Bitpin, Ramzinex, Tabdeal, OMPFinex, Exir, Bit24, Aban Tether, Kifpool, OK-EX, Tetherland).
  • Install: uvx iran-crypto-mcp or claude mcp add iran-crypto -- uvx iran-crypto-mcp. Transport: stdio. Needs uv (Python 3.10+).
  • Auth: none, no API key or account. Optional IRAN_CRYPTO_MCP_PROXY (HTTP proxy URL, or a comma-separated list); system proxy settings are ignored.
  • Access: read-only. No login, balances, orders or trading, so no confirmation is needed before calling any tool.
  • Tools: 8, all prefixed ic_. Start with ic_compare_price. Typical sequence: ic_compare_price -> ic_get_orderbook -> ic_candles.
  • Use when: comparing a coin’s price across Iranian exchanges, checking a spread, reading an order book or recent trades, or listing 24h movers.
  • Do not use when: the user wants to buy, sell or transfer, needs account data, or wants non-Iranian exchanges.
  • Output: compact JSON. Every IRT price is in Toman (field names say *_toman); USDT markets say *_usdt.
  • Machine-readable: server.json and the iran-mcp catalog.

Why

  • Rial vs Toman. Nobitex, Ramzinex and OMPFinex publish Rial; Wallex, Bitpin, Tabdeal and Exir publish Toman. The same BTC price differs 10x between them. This server converts everything to Toman, so the numbers compare directly.
  • Seven sites to check by hand. Each exchange has its own app, its own symbols and its own API shape. One call to ic_compare_price returns the coin on every exchange, cheapest first, with the spread.
  • Persian names. Every exchange row carries name_fa, the exchange’s own Persian name, so answers in Persian do not depend on the model spelling it.

What it can do

  • Compare one coin’s price on all twelve exchanges, in Toman or USDT, cheapest first, with the spread
  • Get a ticker: last price, 24h range and change, volume, and best bid/ask where the exchange publishes them
  • Read order books (up to 20 levels per side) and recent public trades
  • Pull OHLC candles (15m, 1h, 4h, 1d) from all eight order-book exchanges (and Aban Tether for USDT/IRT)
  • Rank the biggest 24h gainers and losers on an exchange, with illiquid coins filtered out
  • List the coins an exchange trades against Toman or USDT
  • Find the best exchange for a buy or sell of a given size, walking each order book for slippage
  • Scan all coins for price gaps between exchanges (arbitrage), on real bid/ask prices
  • Compare trading fees and each coin’s withdrawal networks, fees and minimums across exchanges
  • Get a one-call market overview: the Tether rate and major coins, median price and range across exchanges

Example prompts:

  • “Compare the BTC price on all Iranian exchanges in Toman. Where is it cheapest?”
  • “What is the Tether (USDT) rate in Toman on each exchange right now?”
  • “Show the Nobitex ETH order book. Is the spread real?”
  • “Top 5 gainers on Wallex in the last 24 hours.”
  • “Give me 1-hour BTC candles from Wallex for the last two days.”
  • “Where do I get the most USDT for 50 million Toman?”
  • “Which exchange has the cheapest USDT withdrawal on TRC20?”
  • “Any arbitrage between Iranian exchanges right now?”
  • با ۵۰ میلیون تومان کجا بیشترین تتر را می‌گیرم؟
  • قیمت بیت‌کوین را در همه صرافی‌های ایرانی به تومان مقایسه کن.
  • قیمت تتر الان در کدام صرافی ارزان‌تر است؟
  • دفتر سفارش اتریوم در نوبیتکس را نشان بده.

Supported exchanges

Exchange Persian name Site Published unit Ticker Order book Trades Candles
Nobitex نوبیتکس nobitex.ir Rial full yes yes yes (not USDT/IRT)
Wallex والکس wallex.ir Toman full yes yes yes
Bitpin بیت‌پین bitpin.ir Toman no bid/ask yes yes yes
Ramzinex رمزینکس ramzinex.ir Rial full yes yes yes
Tabdeal تبدیل tabdeal.org Toman no bid/ask, no volume yes yes yes
OMPFinex او ام پی فینکس ompfinex.com Rial no bid/ask yes no yes
Exir اکسیر exir.io Toman no bid/ask yes yes yes
Bit24 بیت ۲۴ bit24.cash Toman no bid/ask yes yes (no side) yes
Aban Tether (broker) آبان تتر abantether.ir Toman buy/sell price, no high/low no no USDT/IRT only (1h+)
Kifpool (broker) کیف پول من kifpool.me Toman sell price only; no USDT/IRT no no no
OK-EX (broker) اوکی اکسچنج ok-ex.io Toman buy/sell price, no high/low no no no
Tetherland (broker) تترلند tetherland.com Toman one price, no high/low no no no
  • All twelve give prices in both quotes: Toman (IRT) and USDT. USDT markets stay in USDT.
  • “Full” means last price, bid, ask, 24h high and low, change and volume.
  • Bitpin volume comes from a best-effort second call; if it fails, the ticker has no volume.
  • Exir publishes base volume only, so quote volume is approximated as volume times last price.
  • Use ic_get_orderbook for the best bid and ask where the ticker lacks them.
  • Nobitex refuses USDT/IRT candles (its CDN answers HTTP 403, browsers included): use Wallex for those.
  • ic_fees: every exchange has trading fees; all but Aban Tether and OK-EX also publish withdrawal networks and fees. Ramzinex, OMPFinex, Bit24, Aban Tether and Tetherland publish trading fees only on a web page, so those values are fixed in the server (checked 2026-10-28).

Quick start

You need uv. No API key or account.

Tools

All 8 tools are read-only. Exchange ids: nobitex, wallex, bitpin, ramzinex, tabdeal, ompfinex, exir. quote is IRT (Toman, default) or USDT.

Tool What it does
ic_list_exchanges The supported exchanges, their native price unit and what each can answer
ic_list_markets Coins an exchange trades against Toman (IRT) or USDT
ic_compare_price One coin’s price on every exchange in one call, cheapest first, with the spread (an exchange that fails is reported, not fatal)
ic_get_ticker Live price, best bid and ask, 24h range, change and volume of a coin on one exchange
ic_get_orderbook Top bids and asks (1 to 20 levels) with the spread
ic_recent_trades Latest public trades, newest first (1 to 50; every order-book exchange except OMPFinex)
ic_candles OHLC candles, 15m / 1h / 4h / 1d, up to 100 (order-book exchanges, Aban Tether for USDT/IRT)
ic_top_movers Biggest 24h gainers or losers on one exchange, illiquid coins filtered out (up to 25)
ic_best_deal Ranks exchanges by what a buy or sell of a given size gets, with order-book slippage and fill
ic_arbitrage Biggest cross-exchange price gaps over all coins, buy at the lowest ask and sell at the highest bid
ic_fees Trading fees per exchange and, for one coin, withdrawal networks, fees and minimums, with the cheapest per network
ic_market_overview Tether rate and major coins in one call: median Toman price, cheapest and dearest exchange, median change

How it works

  AI agent  (Claude, Cursor, Copilot, ...)
      │
      │  MCP over stdio
      ▼
  iran-crypto-mcp  (runs on your machine)
      │
      │  HTTPS
      └──────▶  public market-data endpoints of the 12 exchanges
  • Runs locally and calls the public endpoints the exchanges’ own websites use. No hosted server in between, no API key.
  • Uses a Chrome-like HTTP client and sends each exchange’s own Origin and Referer, like its website does.
  • Answers are cached for 15 seconds and at most 2 requests run at once. Failed GET requests are retried.
  • Read-only: it never calls account, order or trading endpoints.

Good to know

  • Units are normalized. IRT prices are Toman (Rial exchanges are divided by 10); USDT prices are unchanged. The unit is in the field name: price_toman, price_usdt.
  • name_fa on every exchange row is the exchange’s own Persian name.
  • One exchange can fail alone. ic_compare_price reports a failing exchange under errors and still compares the rest. HTTP 403 means that exchange’s CDN refuses your network. Set IRAN_CRYPTO_MCP_PROXY to an Iranian HTTP proxy and try again.
  • A spread is not always real. Quotes differ for real reasons (fees, liquidity, a stale last trade). Check the order book on both exchanges before acting on it.
  • Reply sizes are capped to stay under about 15 KB: order books 20 levels, trades 50, candles 100, movers 25.
  • Top movers skip coins below a 24h volume floor (default 100,000,000 Toman or 10,000 USDT; set min_volume to change it). Tabdeal publishes no volume, so its coins are not filtered.
  • Prices are informational. They are live-ish (15 s cache), not a quote you can trade at.

FAQ

Configuration

Variable Default Meaning
IRAN_CRYPTO_MCP_PROXY unset Optional HTTP proxy URL for exchange requests; system proxy settings are ignored. A comma-separated list is used one at a time: the next proxy takes over when one is blocked or fails to connect

فارسی

claude mcp add iran-crypto -- uvx iran-crypto-mcp

Development

git clone https://github.com/sepehr071/iran-crypto-mcp && cd iran-crypto-mcp
uv sync
uv run ruff check . && uv run ruff format --check .
uv run python -m pytest -q          # offline unit tests
uv run python -m pytest -m live -q  # calls the real exchange APIs
uv build

Tools live in src/iran_crypto_mcp/markets.py, the per-exchange adapters in exchanges.py. Issues and PRs are welcome. Releases: bump the version in pyproject.toml and server.json, then push a v* tag.

Disclaimer

Unofficial and not affiliated with or endorsed by any exchange. It reads public market data only: no keys, no account access, no trading. Prices are informational, not financial advice, and the endpoints can change without notice.

Author

Built and maintained by Sepehr Radmard (سپهر رادمرد). Connect on LinkedIn or follow @sepehr071 on GitHub for more MCP servers for Iranian websites, all listed in iran-mcp. If this saves you time, a star on the repo helps other people find it.

License

MIT

View the full README on GitHub

Install

uvx iran-crypto-mcp
New to MCP? Start with the mcpskill.org guide →

Configuration

{ "mcpServers": { "iran-crypto": { "command": "uvx", "args": ["iran-crypto-mcp"] } } }