Skip to main content
Glama
sepehr071

iran-gold-mcp

by sepehr071

iran-gold-mcp: live gold prices from Iranian gold platforms for AI agents

Compare the 18k gold price on Milli.gold, Wallgold, Melligold and Daric from your AI agent. An unofficial, read-only MCP server for Iranian online platforms that sell 18k melted gold (طلای آب‌شده): live buy and sell price per gram on each platform, the cheapest place to buy, the best place to sell, and Milli.gold's price history.

PyPI Python CI MCP Registry License: MIT

Install in Cursor Install in VS Code

For AI agents · Quick start · Tools · Good to know · FAQ · فارسی


For AI agents

  • What: unofficial MCP server (model context protocol) for the public price endpoints of four Iranian online gold platforms: milli.gold, wallgold.ir, melligold.com and daric.gold.

  • Install: uvx iran-gold-mcp or claude mcp add iran-gold -- uvx iran-gold-mcp. Transport: stdio. Needs uv (Python 3.10+).

  • Auth: none, no API key or account. Optional IRAN_GOLD_MCP_PROXY (HTTP proxy URL, or a comma-separated list); system proxy settings are ignored.

  • Access: read-only, so no confirmation is needed before calling any tool. It cannot log in, trade or read a wallet.

  • Tools: 3, all prefixed gold_. Typical sequence: gold_prices -> gold_milli_history.

  • Use when: the user asks what 18k melted gold costs per gram on these platforms, where it is cheapest to buy or best to sell, or how the Milli.gold price moved over a day, week or month.

  • Do not use when: the user wants to buy or sell gold, or wants dollar, coin or crypto prices (see tgju-mcp).

  • Output: compact JSON. gold_prices is Toman per gram of 18k gold; gold_milli_history is Rial per milligram. Times are Tehran time.

Related MCP server: Arzbin MCP Server

Why

Every Iranian gold platform quotes its own price, in its own unit: Milli.gold in Rial per milligram, the others in Toman per gram, and Daric as an order book with a separate bid and ask. iran-gold-mcp reads all four at once, converts them to Toman per gram and sorts them:

You: Where is 18k gold cheapest to buy right now?

Agent: calls gold_prices()

Milli.gold is cheapest at 26,019,000 Toman per gram, then Wallgold (26,202,000), Melligold (26,248,700) and Daric (26,332,312). Platform fees are not included.

Real prices from 2026-10-27; they change all the time.

Example prompts:

  • "Compare the 18k gold price per gram on Milli, Wallgold, Melligold and Daric."

  • "Where should I sell 2 grams of melted gold right now?"

  • "Show me Milli.gold's gold price for the last month. What were the high and the low?"

  • قیمت طلای آب‌شده الان در کدام سایت ارزان‌تر است؟

  • قیمت هر گرم طلای ۱۸ عیار در میلی، وال‌گلد، ملی‌گلد و داریک را مقایسه کن.

Quick start

You need uv. No API key or account.

claude mcp add iran-gold -- uvx iran-gold-mcp

Settings → Developer → Edit Config, then add:

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

Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json.

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

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

It's a standard stdio MCP server: run uvx iran-gold-mcp, or pip install iran-gold-mcp and run iran-gold-mcp.

Tools

All 3 tools are read-only and return compact JSON.

Tool

What it does

gold_prices

Compares the live 18k gold buy and sell price per gram (Toman) on Milli.gold, Wallgold, Melligold and Daric, cheapest first, with best_to_buy and best_to_sell. A platform that does not answer is listed under failed; the rest still return

gold_milli_history

Gets the Milli.gold 18k gold price series for a day, week or month (period: DAILY, WEEKLY, MONTHLY; points: 2-50, default 24) with first, last, high, low and change percent

gold_milli_stats

Gets Milli.gold's headline numbers: users, trade transactions, gold traded (kg), user balances (kg), burned gold (kg), branches and representatives

Good to know

  • Buy and sell. buy is what you pay per gram on that platform, sell what you get when you sell. Milli.gold, Wallgold and Melligold often show one price for both; Daric is an order book, so buy is the best ask and sell the best bid.

  • Fees are not included. Platforms charge a trading fee (often around 0.5 %) on top of the price.

  • Platform prices, not market quotes. Each number is that platform's own price for 18k melted gold, so expect small differences from tgju and from each other.

  • Units. Milli.gold quotes Rial per milligram; gold_prices converts it (x100 = Toman per gram). gold_milli_history keeps Rial per milligram.

  • Tehran time. as_of and history time values are Tehran time (UTC+3:30).

  • 15 s cache. Repeated calls within 15 seconds reuse the answer.

  • Not covered. Taline (tlyn) shows its price only after login, so it is not included.

FAQ

Not an official one. iran-gold-mcp calls the public, login-free price endpoints that the platforms' own websites use.

milligold-mcp covers Milli.gold only. iran-gold-mcp covers Milli.gold plus Wallgold, Melligold and Daric and compares them. tgju-mcp gives market-wide rates for dollar, coins, gold and crypto.

No, and that's deliberate. It has no login and only reads public data.

Not by default. If requests are blocked from your network, set IRAN_GOLD_MCP_PROXY to an HTTP proxy. System proxy variables are ignored on purpose.

Configuration

Variable

Default

Meaning

IRAN_GOLD_MCP_PROXY

unset

Optional HTTP proxy URL for the platform requests. A comma-separated list is used one at a time: the next proxy takes over when one is blocked or cannot connect. System proxy settings are ignored

فارسی: سرور MCP قیمت طلای آب‌شده

iran-gold-mcp یک سرور MCP غیررسمی و فقط‌خواندنی است که قیمت لحظه‌ای طلای ۱۸ عیار آب‌شده را از پلتفرم‌های آنلاین میلی، وال‌گلد، ملی‌گلد و داریک می‌خواند و مقایسه می‌کند.

  • قیمت خرید و فروش هر گرم (تومان) در هر پلتفرم، از ارزان‌ترین به گران‌ترین، با بهترین جا برای خرید و فروش.

  • تاریخچه قیمت میلی در روز، هفته و ماه گذشته و آمار پلتفرم میلی.

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

  • طلاین قیمت را فقط بعد از ورود نشان می‌دهد و پشتیبانی نمی‌شود.

claude mcp add iran-gold -- uvx iran-gold-mcp

Development

git clone https://github.com/sepehr071/iran-gold-mcp && cd iran-gold-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 platforms
uv build
  • milligold-mcp for Milli.gold only

  • tgju-mcp for dollar, euro, gold, coin, crypto and commodity prices from tgju.org

  • iran-mcp: catalog of all Iranian-service MCP servers

Disclaimer

Unofficial and not affiliated with or endorsed by Milli.gold, Wallgold, Melligold or Daric. It is read-only and uses public endpoints that can change without notice. Prices are informational and not financial advice.

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.

License

MIT

Available Tools

3 tools
gold_milli_historyMilli.gold price historyA
Read-onlyIdempotent

Get the Milli.gold 18k gold price series for a day, week or month, with high, low and change.

Prices are Rial per milligram (x100 = Toman per gram); time is Tehran time. Points are thinned evenly to points. For today's price on every platform use gold_prices.

NameRequiredDescriptionDefault
periodNoWindow: DAILY = last ~24 h (15-min points), WEEKLY = last week, MONTHLY = last ~month.DAILY
pointsNoMax points to return, evenly spaced (2-50).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive and open-world, so safety is covered. The description adds genuinely useful non-schema context: values are Rial per milligram (x100 = Toman per gram), timestamps are Tehran time, and points are thinned evenly. It stops short of describing the exact response shape (aggregate stats vs. array of points), which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight paragraphs, with the main action and output fields front-loaded and the units caveat parenthesized efficiently. Slightly compressed syntax ('Prices are Rial per milligram...') requires a re-read but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully tells the agent the returned fields (high, low, change) and the unit/timezone conventions needed to interpret them. The one remaining gap is the response structure — whether points come back as a series or as summary stats — which an agent must discover by calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already fully documented including the period windows and the 2-50 points range. The description only restates day/week/month and that points are thinned evenly, adding no format or interpretation detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the Milli.gold 18k gold price series') plus the granularity options (day/week/month) and what the payload contains (high, low, change). It is clearly distinguishable from gold_prices, which is named for today's cross-platform price.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'For today's price on every platform use gold_prices.' That names the alternative and the condition selecting it, while the period parameter covers the remaining usage choice. Nothing is left to inference about when to pick this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gold_milli_statsMilli.gold platform statisticsA
Read-onlyIdempotent

Get Milli.gold's headline numbers: users, trades, gold traded, gold held and branches.

Figures are rounded totals the company publishes; weights are in kilograms. For prices use gold_prices.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description adds genuinely useful context beyond them: figures are rounded company-published totals and weights are in kilograms, which warns the agent not to treat values as exact or unit-ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is returned, then the caveat and the alternative. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read-only stats tool with rich annotations and no output schema, the description covers content, precision caveats, and units. The only gap is not distinguishing itself from gold_milli_history, which shares the same domain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4; there is nothing schema-side to compensate for. The unit note (kilograms) is about returned values rather than inputs, but it is the only semantic clarification available for a no-arg tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Get') plus a precisely enumerated resource: users, trades, gold traded, gold held and branches. It also explicitly disambiguates from the sibling gold_prices, so an agent can pick correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes price lookups to gold_prices, which is the most likely confusion given the sibling set. It stops short of mentioning gold_milli_history, so the boundary for time-series/trend data is left for the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gold_pricesLive gold prices on Iranian platformsA
Read-onlyIdempotent

Compare the live 18k melted-gold price on Milli.gold, Wallgold, Melligold and Daric, in Toman per gram.

buy is what you pay per gram on that platform, sell what you get back when you sell. Rows are sorted cheapest to buy first; best_to_buy and best_to_sell name the winners. A platform that did not answer is listed under failed and the rest still return. Platform fees (often ~0.5 %) are not included. For the Milli.gold trend over a day, week or month use gold_milli_history.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare this as a read-only, idempotent, non-destructive open-world operation. The description adds substantial behavioral detail beyond that: buy and sell price meaning, cheapest-first sorting, best_to_buy and best_to_sell fields, partial results when a platform fails, and the exclusion of platform fees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then compactly covers output semantics, failure behavior, fee caveat, and sibling routing. Every sentence carries useful information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no input parameters and no output schema, the description needs to carry the return-value burden, and it does: it explains buy/sell fields, row sorting, best_to_buy and best_to_sell, failed platforms, and fee exclusion. An agent has enough context to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero input parameters, so the baseline is 4. There are no parameter semantics to clarify; the description instead documents return fields and behavior, which is useful but belongs to other dimensions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: compare the live 18k melted-gold price across Milli.gold, Wallgold, Melligold and Daric in Toman per gram. It also distinguishes the live snapshot use case from the sibling history tool, so an agent can identify the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the primary use case explicit: comparing live per-gram gold prices. It also routes trend requests over a day, week or month to gold_milli_history, giving the agent a clear alternative when the current tool is not appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedgold_milli_history
    • First observedgold_milli_stats
    • First observedgold_prices

TDQS

A4.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: live cross-platform comparison, Milli.gold historical series, and Milli.gold platform statistics. The descriptions explicitly cross-reference one another to steer agents to the right tool.

Naming Consistency5/5

All names use lowercase snake_case with a consistent `gold_` prefix and clear resource/action descriptors. The pattern is predictable across the set.

Tool Count5/5

Three tools are well-scoped for a focused gold-price data domain: current comparison, history, and platform stats. Each tool earns its place without redundancy.

Completeness4/5

The surface covers live comparison plus Milli.gold history and stats, but historical data is only available for Milli.gold, not the other compared platforms. Minor gaps remain but core workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables access to live precious metals prices, historical data, market intelligence, and portfolio management with AI/LLM integration.
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    Provides read-only access to Iranian market data from tgju.org, including live gold, coin, currency, and crypto prices, category tables, symbol search, and daily price history. Exposes six MCP tools for market summaries, live quotes, category browsing, and historical data with Jalali date filtering.
    6
    MIT