Skip to main content
iran-crypto-mcp: unofficial MCP server for Iranian crypto exchanges, for Claude, Cursor and Copilot

iran-crypto-mcp: Iranian crypto exchanges MCP server for AI agents

Compare any coin across seven Iranian crypto exchanges, in Toman, from Claude, Cursor or Copilot.
An unofficial, read-only MCP server (model context protocol) for the public market data of Nobitex, Wallex, Bitpin, Ramzinex,
Tabdeal, OMPFinex and Exir: prices, order books, recent trades, candles and top movers.

PyPI Python CI License: MIT

Install in VS Code

For AI agents · Why · Quick start · Exchanges · Tools · FAQ · فارسی


For AI agents

  • What: unofficial MCP server for the public market data of 7 Iranian crypto exchanges (Nobitex, Wallex, Bitpin, Ramzinex, Tabdeal, OMPFinex, Exir).
  • 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 awesome-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 seven 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 Nobitex and Wallex
  • 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

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."
  • قیمت بیت‌کوین را در همه صرافی‌های ایرانی به تومان مقایسه کن.
  • قیمت تتر الان در کدام صرافی ارزان‌تر است؟
  • دفتر سفارش اتریوم در نوبیتکس را نشان بده.

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 no
Ramzinex رمزینکس ramzinex.com Rial full yes yes no
Tabdeal تبدیل tabdeal.org Toman no bid/ask, no volume yes yes no
OMPFinex او ام پی فینکس ompfinex.com Rial no bid/ask yes no no
Exir اکسیر exir.io Toman no bid/ask yes yes no
  • All seven support top movers and 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.

Quick start

You need uv. No API key or account.

Claude Code
claude mcp add iran-crypto -- uvx iran-crypto-mcp
Claude Desktop

Settings → Developer → Edit Config, then add:

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

Add the Claude Desktop block to ~/.cursor/mcp.json (or .cursor/mcp.json in a project).

VS Code (Copilot agent mode)

Click Install in VS Code above, or add to .vscode/mcp.json:

{
  "servers": {
    "iran-crypto": { "type": "stdio", "command": "uvx", "args": ["iran-crypto-mcp"] }
  }
}
Codex CLI
codex mcp add iran-crypto -- uvx iran-crypto-mcp

Or in ~/.codex/config.toml:

[mcp_servers.iran-crypto]
command = "uvx"
args = ["iran-crypto-mcp"]
Gemini CLI

Add the Claude Desktop block to ~/.gemini/settings.json, or run:

gemini mcp add iran-crypto uvx iran-crypto-mcp
Windsurf

Add the Claude Desktop block to ~/.codeium/windsurf/mcp_config.json.

Anything else

It is a standard stdio MCP server: run uvx iran-crypto-mcp, or pip install iran-crypto-mcp and run iran-crypto-mcp.

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; not on OMPFinex)
ic_candles OHLC candles, 15m / 1h / 4h / 1d, up to 100 (Nobitex and Wallex)
ic_top_movers Biggest 24h gainers or losers on one exchange, illiquid coins filtered out (up to 25)

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

Is there an API or MCP server for Iranian crypto exchanges?

iran-crypto-mcp is an unofficial MCP server with 8 read-only tools over the public endpoints of Nobitex, Wallex, Bitpin, Ramzinex, Tabdeal, OMPFinex and Exir. It needs no API key.

How do I compare crypto prices in Toman with Claude, Cursor or Copilot?

Add the server (see Quick start) and ask, for example, "compare BTC on all Iranian exchanges in Toman". The agent calls ic_compare_price, which returns every exchange's price in Toman, cheapest first, with the spread.

Why are some prices 10x different between exchanges?

Some exchanges publish Rial and others Toman (1 Toman = 10 Rial). This server converts everything to Toman. If you still see a big gap, it is a real difference or a stale quote: check the order book.

Can it trade, or see my balance?

No. It has no login or keys and never calls account, order or trading endpoints. It only reads public market data.

An exchange shows an error with HTTP 403. What now?

That exchange's CDN refuses requests from your network. The other exchanges still work. Set IRAN_CRYPTO_MCP_PROXY to an HTTP proxy with an Iranian exit and retry. System proxy variables are ignored on purpose.

Why does a ticker have no bid/ask or volume?

Bitpin, Tabdeal, OMPFinex and Exir publish no bid/ask in their ticker feeds, and Tabdeal publishes no volume. Call ic_get_orderbook for the best bid and ask.

Why are there no candles for most exchanges?

Only Nobitex and Wallex publish candles through public endpoints this server uses. Nobitex refuses USDT/IRT candles; use Wallex for those.

Claude Desktop says uvx is not found

Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.

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

فارسی

iran-crypto-mcp یک سرور MCP غیررسمی و فقط‌خواندنی برای داده‌های عمومی بازار صرافی‌های ارز دیجیتال ایرانی است: نوبیتکس، والکس، بیت‌پین، رمزینکس، تبدیل، او ام پی فینکس و اکسیر. به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد قیمت یک ارز را در همه صرافی‌ها به تومان مقایسه کند.

چه کارهایی می‌کند

  • مقایسه قیمت صرافی‌ها: قیمت بیت‌کوین، تتر و بقیه ارزها در هر هفت صرافی با یک درخواست، از ارزان به گران، همراه با اختلاف قیمت.
  • قیمت تتر و بیت‌کوین به تومان: قیمت صرافی‌هایی که ریال می‌دهند تقسیم بر ۱۰ می‌شود، پس همه عددها قابل مقایسه‌اند.
  • دفتر سفارش (تا ۲۰ سطح)، معاملات اخیر و کندل‌ها (۱۵ دقیقه، ۱ ساعت، ۴ ساعت، روزانه؛ فقط نوبیتکس و والکس).
  • بیشترین رشد و افت ۲۴ ساعته هر صرافی، بدون ارزهای کم‌حجم.

نکته‌ها

  • فقط داده عمومی بازار؛ بدون ورود به حساب، کلید API، خرید و فروش.
  • اگر یک صرافی خطای ۴۰۳ بدهد، یعنی شبکه شما را نمی‌پذیرد؛ بقیه صرافی‌ها کار می‌کنند. متغیر IRAN_CRYPTO_MCP_PROXY را روی یک پروکسی HTTP ایرانی بگذارید.
  • اختلاف قیمت همیشه فرصت واقعی نیست؛ قبل از هر تصمیم دفتر سفارش را ببینید.
  • قیمت‌ها ۱۵ ثانیه نگه داشته می‌شوند و توصیه مالی نیستند.

نصب (اول uv را نصب کنید). در Claude Code:

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

در Claude Desktop، Cursor و بقیه برنامه‌ها همان تنظیم بخش Quick start را بگذارید.

نمونه پرسش‌ها

  • «قیمت بیت‌کوین را در همه صرافی‌ها به تومان مقایسه کن.»
  • «تتر در کدام صرافی ارزان‌تر است؟»
  • «دفتر سفارش اتریوم در نوبیتکس را نشان بده.»
  • «بیشترین رشد ۲۴ ساعته در والکس چیست؟»

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.

License

MIT

Metadata

Release files for iran-crypto-mcp 0.1.2

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

Source distribution (sdist)

Source distribution for iran-crypto-mcp 0.1.2
File Size Uploaded Provenance
iran_crypto_mcp-0.1.2.tar.gz 412.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for iran-crypto-mcp 0.1.2
File Interpreter ABI Platform
iran_crypto_mcp-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 436.6 kB

Release files / iran_crypto_mcp-0.1.2.tar.gz

Download URL iran_crypto_mcp-0.1.2.tar.gz
Size 412.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b8f3a4a01effda5d864f30aec9aa69d2ef988709566c536a10994558920d4999
BLAKE2b-256 checksum
How to use checksums
0b024b8170d0c89073d65f822b28db0047ee91ea8245d114bd28e6f46a2e18d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 22, 2026.

Transparency log

Release files / iran_crypto_mcp-0.1.2-py3-none-any.whl

Download URL iran_crypto_mcp-0.1.2-py3-none-any.whl
Size 24.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
99db835c974abf835be90db0ea8a93857c1e350326d155f52b584265c26055f2
BLAKE2b-256 checksum
How to use checksums
bc92c67672835d71c3971a779205d2479c184be842654d7efe2bce61466d7a5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 22, 2026.

Transparency log

Security for iran-crypto-mcp 0.1.2

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for iran_crypto_mcp-0.1.2.tar.gz

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 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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