coingecko-mcp-server
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Overview
Cryptocurrency market data from CoinGecko — prices, rankings, historical charts, and deep coin profiles across 15,000+ coins. Resolve a name or ticker to CoinGecko's slug-keyed ID, then chain into price lookups, ranked markets, and trend charts.
Tools
Tool | Description |
| Resolve a coin name or ticker symbol to a CoinGecko ID (slug). The required first step before any ID-keyed tool. |
| Current prices and core market stats across coin/currency batches. |
| Ranked market table — coins by market cap, volume, or ID, optionally filtered to a category or selected IDs. |
| Deep single-coin profile — description, links, market data, developer activity, community, sentiment. |
| Historical price, market cap, and volume series. |
| Coins trending on CoinGecko in the last 24 hours, by search volume. |
| Global crypto market snapshot — total market cap and volume, BTC/ETH dominance, active counts, ongoing ICOs, 24h change. |
| Coin categories ( |
Resources
Resource | Description |
| Deep coin record by slug — same data as |
| Global crypto market snapshot — same data as |
All resource data is also reachable via tools — the resources mirror coingecko_get_coin and coingecko_get_global exactly, so tool-only clients lose nothing. Large collections (markets, categories) are not exposed as resources; use coingecko_list_markets and coingecko_list_categories instead.
Prompts
Prompt | Description |
| Guides a full single-coin research pass through the search → get_coin → get_market_chart → get_global chain. |
Related MCP server: crypto-data-mcp
Capability reference
coingecko_search_coins tool
Tickers are not unique (many coins share
ETH/USDC) — returns ranked candidates withid,symbol,name, andmarketCapRankto disambiguateReturns the top 25 matches by relevance;
enrichment.truncatedplusshown/capdisclose when the list is cappedAn empty result is a normal outcome, not an error —
enrichment.noticesuggests broadening the query
coingecko_get_prices tool
Accepts up to 500 raw IDs (trimmed, lowercased, deduplicated) and processes the first 250 unique slugs;
skippedIdslists the rest andmissinglists ids that didn't resolve, since an unknown slug returns an empty upstream response rather than an errorOne row per
(id, currency)that returned a price; market cap, 24h volume, and 24h change are optional per row. Currencies with no quotes are noted inenrichment.noticelastUpdatedAtUnixSecis Unix seconds —coingecko_get_market_chart's point timestamps are millisecondsThrows
all_missingwhen no requested id resolves,no_price_datawhen IDs resolve but no requested currency returns a numeric quote
coingecko_list_markets tool
Sort by market cap, volume, or ID, ascending or descending, via
order; paginate withpageandper_page(default 50, max 250 rows)Filter by
ids(same 500-raw/250-unique bounds as price batches;appliedIdsandskippedIdsshow the selection) or bycategory(acategoryIdfromcoingecko_list_categories), not both — combining them returnsconflicting_filtersPer-coin fields include price, cap, volume, 1h/24h/7d change, supply, and ATH/ATL;
enrichment.truncatedflags a full pageThrows
unknown_categorywhen CoinGecko returns HTTP 404 for a category-filtered request
coingecko_get_coin tool
Six sections —
profile,market,links,developer,community,sentiment;sectionstrims the response to just what's needed (the full record is large)Prices and percentage-change windows use
vs_currency(defaults tousd); missing upstream fields are omitted rather than fabricatedprofile.categoriesare display names (e.g."Layer 1 (L1)"), distinct from thecategoryIdslugscoingecko_list_categoriesreturnsThrows
coin_not_foundwhen the slug isn't recognized upstream,unsupported_currencywhen the requested market currency isn't a supported one
coingecko_get_market_chart tool
recentmode takes 1–365 days ("max"aliases the 365-day window and emits a notice);rangemode takesfrom/toas Unix secondsintervalselectsauto(upstream default),daily, orhourly, subject to upstream tier/window availabilityPages with
point_offset(default 0) andpoint_limit(default 100, cap 250); per-series totals andnextPointOffsetsupport continuation, and each page refetches upstream datagranularityreports the series spacing as5-minute,hourly,daily,irregular, orunknown; point timestamps are Unix milliseconds, whilecoingecko_get_prices'slastUpdatedAtUnixSecis secondsThrows
invalid_rangeon a mode/parameter mismatch,coin_not_foundwhen the slug isn't recognized
coingecko_get_trending tool
No parameters — 24-hour trending coins by search volume, each with
marketCapRank,priceUsd,priceBtc, andpriceChangePercentage24hUsdwhen availableUpstream reports market cap and volume as pre-formatted display strings, not numbers — those fields are omitted rather than presented as numeric data
nftCountreports the trending-NFT count upstream also returns; NFT detail itself isn't surfaced
coingecko_get_global tool
No coin id needed — one call for the macro snapshot
vs_currency(defaultusd) scopes only total market cap and volume; dominance and the 24h change percentages are always USD-denominated upstreamThrows
unsupported_currencywhen the requested currency has no entry in upstream's per-currency maps —/globalhas no upstream currency validation, so an unknown code silently returns no totalsReturns active-cryptocurrency and active-market counts, ongoing ICO count, and a Unix-second snapshot timestamp
coingecko_list_categories tool
Optional
name_containsfilters by whitespace-separated tokens, case- and punctuation-insensitive; every token must appear in the nameenrichment.totalCountreports the full category count before filtering; a filter that matches nothing returnsenrichment.noticeReturned
categoryIdvalues are whatcoingecko_list_markets'scategoryparam expects
coingecko://coin/{id} resource
Same data as
coingecko_get_coin's full record, always denominated in USD{id}is a CoinGecko slug (e.g."bitcoin") — resolve tickers withcoingecko_search_coinsThrows
coin_not_foundwhen the slug isn't recognized upstream
coingecko://global resource
Same data as
coingecko_get_global, always denominated in USDNo parameters
coingecko_coin_research prompt
Argument:
coinrequired — a name, ticker, or CoinGecko slugReturns an assistant framing message plus a user message that walks the search → get_coin → get_market_chart → get_global chain
Features
Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
CoinGecko-specific:
Type-safe client for the CoinGecko v3 REST API, with one service method per endpoint
Runs keyless on the public tier; an optional Demo API key (
x-cg-demo-api-key) raises the rate ceiling with no other config changeRetry/backoff for rate limits, transient upstream failures, and timeouts; honors
Retry-After, and permanent refusals fail immediatelyStatus-specific error reasons with recovery hints, including narrowing the range on historical-window restrictions
Agent-friendly output:
Search-before-query enforced through descriptions — every ID-keyed tool states slugs-not-tickers and points back to
coingecko_search_coinsPartial reads — price results disclose unresolved IDs and currencies without quotes; enrichment discloses caps and applied filters
Units made explicit — timestamp fields document seconds vs. milliseconds
Required CoinGecko attribution ships on every tool and resource output; the research prompt instructs the agent to attribute its findings the same way
Getting started
Add the following to your MCP client configuration file. No API key is required — set COINGECKO_API_KEY only to attach the higher CoinGecko Demo tier (see Configuration).
{
"mcpServers": {
"coingecko-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/coingecko-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}Or with npx (no Bun required):
{
"mcpServers": {
"coingecko-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/coingecko-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}Or with Docker:
{
"mcpServers": {
"coingecko-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MCP_TRANSPORT_TYPE=stdio",
"ghcr.io/cyanheads/coingecko-mcp-server:latest"
]
}
}
}To attach a CoinGecko Demo key, add "COINGECKO_API_KEY": "your-demo-key" to the env block (or -e COINGECKO_API_KEY=your-demo-key for Docker).
For Streamable HTTP, set the transport and start the server:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcpPrerequisites
Bun v1.4.0 or higher (or Node.js v24+).
No account or API key required to run. Optionally, a free CoinGecko Demo API key for a higher rate ceiling (10k calls/month, 100 req/min) over the shared keyless public pool.
Installation
Clone the repository:
git clone https://github.com/cyanheads/coingecko-mcp-server.gitNavigate into the directory:
cd coingecko-mcp-serverInstall dependencies:
bun installConfigure environment (optional):
cp .env.example .env
# the server runs with no .env at all; edit only to set COINGECKO_API_KEYConfiguration
The server runs with zero configuration. The one server-specific variable is optional:
Variable | Description | Default |
| Optional CoinGecko Demo API key, sent as the | — |
| Transport: |
|
| Port for the HTTP server. |
|
| HTTP endpoint path. |
|
| HTTP session mode: |
|
| Auth mode: |
|
| Log level (RFC 5424). |
|
| Directory for log files (Node.js only). |
|
| Storage backend. |
|
| Enable OpenTelemetry instrumentation (spans, metrics, completion logs). |
|
See .env.example for the full list of optional overrides.
Rate limits and freshness. The keyless public tier shares an IP-throttled pool, so bursty multi-tool workflows can hit 429s under light load; the server backs off and retries, but cannot raise the ceiling — a free Demo key does. CoinGecko data refreshes roughly every 60 seconds and is not tick-level.
Running the server
Local development
Build and run:
# One-time build bun run rebuild # Run the built server bun run start:stdio # or bun run start:httpRun checks and tests:
bun run devcheck # Lint, format, typecheck, security bun run test # Vitest test suite bun run lint:mcp # Validate MCP definitions against spec
Docker
docker build -t coingecko-mcp-server .
docker run --rm -e MCP_TRANSPORT_TYPE=http -p 3010:3010 coingecko-mcp-serverThe Dockerfile defaults to HTTP transport, stateless session mode, and logs to /var/log/coingecko-mcp-server. OpenTelemetry peer dependencies are installed by default — build with --build-arg OTEL_ENABLED=false to omit them.
Project structure
Directory | Purpose |
|
|
| Server-specific environment variable parsing and validation with Zod. |
| Tool definitions ( |
| Resource definitions ( |
| Prompt definitions ( |
| CoinGecko v3 REST API service — HTTP client, retry/error mapping, response normalization, domain types. |
| Unit and integration tests mirroring |
Development guide
See CLAUDE.md/AGENTS.md for development guidelines and architectural rules. The short version:
Handlers throw, framework catches — no
try/catchin tool logicUse
ctx.logfor request-scoped logging,ctx.statefor tenant-scoped storageRegister new tools and resources via the
createApp()arrays insrc/index.tsWrap external API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields
Contributing
Issues are welcome. Run checks and tests before submitting:
bun run devcheck
bun run testLicense
Apache-2.0 — see LICENSE for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
Unlock the power of real-time cryptocurrency data with our Crypto Price Insights MCP server.
Your agent needs crypto prices it can rely on — spot, ranked market tables, history, OHLC, per-venue tickers, and what is trending right now. **What you can ask for** • "What is the price of these 20 tokens in USD and EUR right now?" • "Give me the top 100 by market cap with 24h and 7d change." • "Chart this coin's price over the last year, hourly." • "Where does this token trade, and at what spread per venue?" • "What is trending on CoinGecko today?" **How to use it** Point any MCP client at https://mcp.aisa.one/crypto-market-data/mcp and sign in with OAuth — there is no key to create or paste. 21 CoinGecko tools: simple price and token price by contract, supported currencies, coin list and detail, ranked markets, history, market charts and ranges, OHLC, per-coin tickers, categories, exchanges and their tickers, token data and charts, and trending. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Price the token here, then ask the same agent what X is posting about it — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/finance/mcp for equities, crypto and prediction markets in one place.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
MCP server for Financial Modeling Prep API with 250+ financial data tools
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceOfficial CoinGecko API MCP Server for Crypto Price & Market Data. More details: https://docs.coingecko.com/reference/mcp-server1,244 npm59TypeScriptApache 2.0
- AlicenseAqualityDmaintenanceFree MCP server for real-time cryptocurrency data. Get token prices, market overview, top movers, historical charts, and detailed token info directly in Claude Code, Cursor, or any MCP-compatible AI tool. Powered by CoinGecko with 70+ token mappings and built-in caching.5MIT
- AlicenseAqualityFmaintenanceAn MCP server for CoinGecko that connects any MCP-compatible client to free crypto market data, providing tools for prices, market caps, trending coins, historical data, and global stats.842 npmMIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server for real-time cryptocurrency price data, market data, trending coins, historical charts, and currency conversion using the free CoinGecko API.MIT