Real-Time Price and TA MCP: How We Operate It, Trusting No Source

The principle behind running our real-time price and technical-analysis MCP is one line: "do not trust a single source." We poll three sources (upbit, coinmarketcap, coingecko) independently, stamp per-source freshness, keep serving from the others if one dies, and reconcile when they disagree. The measurements prove the design: right now (2026-07-01 13:20 UTC) all three are fresh, so BTC in dollars is upbit 58,606, cmc 58,602, coingecko 58,650 - converging within about 0.08% (718 coins cached). Yet earlier today coingecko died with a 429 (too many requests) - the design withstands both healthy and degraded states. That is the heart of this retrospective.

In one line: operating a price MCP is checking three clocks. If one stops, you still tell time from the others (fallback); if the three differ slightly, you trust the most recently set one (freshness). Look at one clock and you never know it stopped.

First, the terms. MCP is the Model Context Protocol, a standard for attaching tools to an LLM; fallback means switching to another source when one fails; and freshness is when a value was last updated (its age).

How do we gather prices?#

Poll several sources independently and stamp each with freshness. We fetch upbit (267 coins), coinmarketcap (498), and coingecko (495) separately and serve 718 deduped coins through one window. The key is attaching fetched_at (last-poll time) and ok/error to each value - without it, you see "200" and trust a stale value. Sources also carry different fields: coinmarketcap gives no KRW, so we fill Korean-won from upbit and coingecko. So the gateway normalizes currencies and fields and never hands the caller a blank.

Our price MCP, three sources - a live cross-section (2026-07-01 13:20) · columns: Source, Coins, How we operate · 출처 Hax hax.moche.ai/en/p/1086?ref=ai_answer

Source | Coins | How we operate
upbit | 267 | KRW base, reference exchange
coinmarketcap | 498 | broad coverage, no KRW
coingecko | 495 | fallback (429 earlier), backoff
Total (deduped) | 718 | one window, freshness attached
BTC USD | within 0.08% | easy to reconcile when fresh

목차

What do you do when a source dies or disagrees?

What do you expose to agents?

So what is our operating discipline?

Reference links

측정 방법론 · bench_harness.probe_crypto_mcp (crypto-mcp status 실측)

표본

2 measured metrics (Hax /data curated)

수집일

2026-07-04

방법

bench_harness.probe_crypto_mcp (crypto-mcp status 실측)

What do you do when a source dies or disagrees?#

Two disciplines: fallback and reconciliation. First, fallback: even when coingecko dies with a 429 (as earlier today), we mark the cached last value stale and keep serving from the live sources - availability is preserved. Second, reconciliation: a rule for which value to treat as true when sources disagree. When all are fresh, as now, dollars match to 0.08%, but when one goes stale, Korean-won can spread 2-4% (freshness gap, not price movement). So we prefer the fresh source and cut outliers (small coins can differ 40%+ across sources).

What do you expose to agents?#

Read-only queries only. The MCP tools - status, compare, coin detail, kimchi premium - are read-only, so an LLM cannot accidentally order, transfer, or mutate (safety by design). And every response carries ok and freshness together, so the caller can gate out stale sources itself. Derived metrics (kimchi premium, averages) are labeled with input sources and freshness - because if one input is old, that number may be freshness noise, not an arbitrage signal. That is, we give the agent the data plus "as of when."

So what is our operating discipline?#

The key is dropping single-source trust and treating freshness as a first-class signal.

Gather: poll multiple sources independently, record per-source fetched_at and ok, dedupe into one window.

Withstand: if one dies with a 429, keep serving from the rest, mark stale sources, cut outliers.

Expose: read-only only, with ok and freshness, and provenance on derived metrics. Measure reliability on your own metrics.

Related reading: 실시간 시세·기술적분석 MCP, 직접 써본 실측·한계, 오픈 음성 클로닝, 우리는 이렇게 운영한다 — 파이프라인 회고

Related reading: 실시간 시세·기술적분석 MCP, 직접 써본 실측·한계, 실시간 시세·기술적분석 MCP, 어떻게 동작하나

Reference links#

Model Context Protocol (tool integration standard)

ccxt (unified multi-exchange API)

httpx (async HTTP, timeouts)

tenacity (429 retry/backoff)

pybreaker (circuit breaker)

Note: figures are a live snapshot from 2026-07-01 and shift every moment with prices and source state (not permanent numbers). The 0.08% convergence is the value at a moment when all three are fresh; when one goes stale it spreads widely. Source mix and reconciliation policy differ by service, so check status yourself (these numbers are only a start). Not investment advice. Data and sources move fast, so this is reviewed quarterly.