Frankencoin MCP Server
OfficialFrankencoin MCP Server
Real-time Frankencoin (ZCHF) protocol data for AI agents and developers. One read-only server, several ways to reach it — supply, prices, peg health, savings, minting positions, liquidation challenges, governance, insurance products, and historical analytics across every supported chain.
Public endpoint: https://mcp.frankencoin.com
Interface | Endpoint | Best for |
MCP (Streamable HTTP) |
| Claude Desktop, Cursor, any MCP client / AI agent |
REST |
| Scripts, curl, agents — one request, no handshake |
CLI |
| Humans at the terminal |
llms.txt |
| A compact, self-describing guide for LLMs/agents |
Legacy SSE |
| Older MCP clients |
No authentication. No API key required. Read-only.
Quick start
MCP (Claude Desktop / Cursor)
{
"mcpServers": {
"frankencoin": {
"url": "https://mcp.frankencoin.com/mcp"
}
}
}Then ask your assistant things like "What's the current state of the Frankencoin protocol?" or "How healthy is the ZCHF peg versus other CHF stablecoins?".
REST (curl / scripts)
# Full protocol snapshot — the best starting point
curl https://mcp.frankencoin.com/api/get_protocol_snapshot
# Market data + peg health
curl https://mcp.frankencoin.com/api/get_market_data
# Governance: pending minter applications
curl "https://mcp.frankencoin.com/api/get_governance?type=minters&status=pending"
# Positions with full on-chain detail
curl "https://mcp.frankencoin.com/api/get_positions?detail=true&limit=10"
# 30 days of protocol analytics
curl "https://mcp.frankencoin.com/api/get_analytics?type=time_series&days=30"
# Raw read-only GraphQL against the on-chain indexer
curl -X POST https://mcp.frankencoin.com/api/query_ponder \
-H 'Content-Type: application/json' \
-d '{"query":"{ analyticDailyLogs(limit:3){ items { date totalSupply } } }"}'Every REST response is a JSON envelope: { "ok": true, "tool": "<name>", "result": { … } }.
CLI
npx frankencoin-mcp snapshot
npx frankencoin-mcp market
npx frankencoin-mcp positions --detail --limit 10
npx frankencoin-mcp analytics --type trades --limit 5
npx frankencoin-mcp knowledge --topic governance
npx frankencoin-mcp ponder '{ equityTrades(limit:3){ items { kind trader shares } } }'Discover everything
GET /health and GET /api are self-describing manifests, and GET /llms.txt is a compact, always-current guide generated from the live tool registry.
Tools
Organised by what the agent needs, not where the data comes from — one tool per responsibility, each aggregating from multiple sources internally.
Tool | Description |
| Full live state — supply (per chain), TVL, FPS price/reserve/earnings, savings rate, active challenges |
| Prices, peg health, CHF-stablecoin comparison (ZCHF/VCHF/CHFAU), macro (BTC/ETH), collateral prices |
| Approved + pending rates, plus per-module stats (TVL, interest paid, deposits, withdrawals) |
| Rate proposals, minter applications, FPS equity trades, holder stats ( |
| Minting positions; |
| Liquidation challenges with collateral details, pricing, and position context |
| Accepted collateral types across all chains |
| Historical time-series, FPS trades, minter history, rate-change timeline ( |
| Docs & reference: FAQ, guides, token addresses, links ( |
| Legal & regulatory posture — Swiss FINMA + EU MiCA classifications, legal opinions, MiCA white paper, ESMA register, security audits, bug bounty |
| Press articles, videos, use cases, ecosystem partners |
| ZCHF-related third-party insurance products such as OpenCover ZCHF depeg cover |
| Merch store products, prices, availability |
| Independent third-party risk ratings — Pharos stablecoin-safety report card + Xerberus composite scores ( |
| Dune Analytics — holder counts, minting volume, savings TVL over time |
| Raw read-only GraphQL escape hatch against |
Parameter details live in each tool's MCP inputSchema (via tools/list) and in GET /api.
Data sources
All aggregated server-side — callers never talk to these directly:
Source | Provides | Key |
Supply, TVL, FPS, savings rates, collaterals, challenges, prices | — | |
On-chain indexed data — positions, trades, minters, analytics | — | |
Market prices, 24h changes, CHF-stablecoin comparison | optional | |
Holder counts, minting volume, savings TVL history | optional | |
Stablecoin-safety report card for ZCHF ( | optional | |
Composite on-chain risk scores ( | optional | |
Documentation and website content (links, media, token addresses) | — | |
Merch products (Shopify) | — | |
Ethereum RPC | CHFAU on-chain supply | — |
When an optional key is absent, the affected tool (get_market_data, get_dune_stats, get_risk) returns partial data plus a note rather than failing.
Self-hosting
No build step. Node ≥ 20, that's it.
git clone https://github.com/Frankencoin-ZCHF/frankencoin-mcp.git
cd frankencoin-mcp
npm install
node src/index.js --http # HTTP mode (default port 3000)
node src/index.js # stdio mode (for local MCP clients)
npm test # run the test suiteHealth check: curl http://localhost:3000/health
Environment variables
Nothing is required to boot. Every variable is optional; missing secrets only degrade the tools that depend on them.
Variable | Default | Effect |
|
| HTTP port |
| — | Enables full market/macro data (else those fields degrade) |
| — | Enables |
| — | Enables the Pharos section of |
| — | Enables the Xerberus section of |
| — | Sent with |
|
| Canonical origin used in |
|
| Requests per IP per minute |
|
| Trusted proxy hops for client-IP derivation |
See src/config.js for the full list (cache, timeouts, session and query_ponder limits).
Architecture
Node.js ESM, no build step, no database — stateless between restarts and safe to restart anytime. Strictly layered, with one place that performs network I/O:
src/
index.js entrypoint — stdio vs --http, signals
config.js env read once, frozen; nothing required to boot
cli.js terminal client
cache.js in-memory TTL cache: single-flight + LRU bound
lib/ pure utilities (number encoding, envelopes, errors, concurrency)
upstream/ the ONLY layer that calls fetch() — one client per source
services/ per-domain logic: compose upstreams, transform, shape output
tools/ registry (zod-validated tool defs) + one dispatch path
server/ http router, MCP registration, sessions, rate limiting, llms.txt
test/ node:test suites (offline / hermetic)Why it's fast: caching sits at the upstream boundary, so a single /prices/list fetch is shared across every tool that needs it, and concurrent identical fetches are coalesced (single-flight). Warm responses are ~1–2 ms.
Adding a tool
Add the definition (name, description, zod
input,params,handler) tosrc/tools/registry.js.Implement its logic in the relevant
src/services/*.js, using ansrc/upstream/*.jsclient for any network call.
That's it — MCP, REST, /health, /api, and /llms.txt all pick it up automatically from the registry.
Security
Public, unauthenticated, read-only — hardened accordingly:
query_ponderis AST-validated: read-only only (no mutations/subscriptions), no introspection or batched queries, with depth/field/alias/length andlimitcaps and a result-size cap.Rate limiting derives the client IP from the trusted proxy hop (never the attacker-controllable left-most
X-Forwarded-For).Request-body caps (413), slowloris timeouts, session caps with idle/absolute expiry, prototype-pollution rejection, and a single error mapper that never leaks stack traces, upstream URLs, secrets, or file paths.
Security headers and a strict CORS policy on every response.
Threat model and controls: docs/rebuild/SECURITY.md.
Deployment
Runs on Railway and auto-deploys from main via nixpacks — no build phase, no dashboard configuration, no required env vars. railway.toml sets startCommand = node src/index.js --http and health-checks /health.
License
MIT — Frankencoin Association
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Frankencoin-ZCHF/frankencoin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server