CoinStats MCP Server
OfficialThe CoinStats MCP Server provides access to cryptocurrency market data, portfolio tracking, and news. With this server, you can:
Cryptocurrency Data: Access comprehensive information about all cryptocurrencies including price, market cap, volume, and trading metrics
Charts & Historical Data: Retrieve price charts, historical averages, and exchange-specific price data
Blockchain & Exchange Integration: View supported blockchains and exchanges, check wallet balances, and track transactions
Portfolio Management: Track performance, add transactions, manage exchange connections, and share portfolios using tokens
Market Intelligence: Access global market capitalization data, cryptocurrency news from various sources, and supported fiat currencies
Wallet Management: Check wallet balances, syncing status, and transaction data across supported networks
Provides a containerized deployment option for running the CoinStats MCP server in a Docker environment, allowing for isolated and portable execution.
Enables installation and execution of the CoinStats MCP server via NPX, making it easy to run the server without manual installation steps.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CoinStats MCP Server what's the current price of Bitcoin?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CoinStats MCP Server
Hosted Model Context Protocol server for the CoinStats API. Lets AI agents (Claude, Cursor, Codex, ChatGPT — anything that speaks MCP) read and act on the same crypto data the CoinStats apps use, over a single OAuth-protected HTTPS URL.
There's no API key to copy and no env var to manage: each user authorises the agent against their own CoinStats account in the browser, and the agent gets a per-user token from then on.
Server URL
https://mcp.coinstats.app/mcpRelated MCP server: mcp-coincap-jj
Installation
Claude.ai / Claude Desktop
Settings → Connectors → Add custom connector. Paste the server URL and click Add:
https://mcp.coinstats.app/mcpA browser window opens at coinstats.app/openapi/consent. Sign in (or recognise your existing session), review the requested access, click Approve.
Cursor
Or add to ~/.cursor/mcp.json manually:
{
"mcpServers": {
"coinstats": {
"url": "https://mcp.coinstats.app/mcp"
}
}
}Restart Cursor; on first call it opens a browser window for the OAuth flow.
Claude Code
claude mcp add coinstats --transport http https://mcp.coinstats.app/mcpClaude Code opens a browser to authorise. Verify with:
claude mcp listCodex
codex mcp add only registers the URL; it does not open a browser. Run codex mcp login separately:
codex mcp add coinstats --url https://mcp.coinstats.app/mcp
codex mcp login coinstatsAfter the login step codex mcp list should show Auth: OAuth for coinstats.
Other MCP clients
Any client that speaks the Streamable HTTP transport with OAuth 2.1 authorization will work. Point it at https://mcp.coinstats.app/mcp — Dynamic Client Registration (RFC 7591) is supported, so no pre-shared client_id is needed.
What you can do
After authorising, your agent can:
Look up real-time prices, charts and market data for 100,000+ coins
Read your CoinStats portfolio coins, P/L and performance over time
Query wallet balances and transactions across 120+ blockchains
Read open perpetual and futures positions from connected exchanges, including Hyperliquid, with leverage, P/L and funding where available
Read synced perpetual trade history with
get-perpetual-trades, including prices, realized P/L and fees where available. SupportsportfolioIdandlimit/skippagination; coverage depends on the connector and last sync.Retrieve cash-flow-adjusted historical P/L for wallets, exchanges, and portfolios over preset or custom calendar ranges
Compare ticker pricing across 200+ exchanges
Pull crypto news (latest, trending, filtered by source or topic)
Full tool catalog: https://coinstats.app/api-docs/mcp/tools.
Authentication
Discovery + OAuth flow follows the standard MCP / RFC pattern:
Endpoint | Spec | Purpose |
| Points at the authorization server ( | |
| AS metadata (also mirrored on the MCP host so older clients can find it without the indirection) | |
| Dynamic Client Registration | |
| OAuth 2.1 §4.1 | User approves access |
| OAuth 2.1 §4.1 | PKCE code exchange |
| Per-client disconnect |
Token transport: Authorization: Bearer <token>. Single coinstats scope today; granular scopes are on the roadmap.
Self-host / stdio fallback (developer mode)
If you want to run the MCP server yourself (no per-user OAuth, just a developer API key), the legacy stdio entry point is published on npm:
npx @coinstats/coinstats-mcpwith COINSTATS_API_KEY set in the env. Wire into a client like this:
{
"mcpServers": {
"coinstats": {
"command": "npx",
"args": ["-y", "@coinstats/coinstats-mcp"],
"env": { "COINSTATS_API_KEY": "<YOUR_API_KEY>" }
}
}
}Or via Docker:
{
"mcpServers": {
"coinstats": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "COINSTATS_API_KEY", "coinstats/coinstats-mcp"],
"env": { "COINSTATS_API_KEY": "<YOUR_API_KEY>" }
}
}
}This path is the right choice for headless / unattended integrations where there's no human to click "Approve". Get a key from the CoinStats API Dashboard.
Architecture
The hosted server is a stateless Cloudflare Worker (~225 KiB / ~41 KiB gzipped) that:
Exposes the RFC 9728 + RFC 8414 discovery endpoints.
Gates
POST /mcpon aAuthorization: Bearer …token.Dispatches MCP JSON-RPC (
initialize/tools/list/tools/call/ping) without session state.Forwards each tool call to
https://openapiv1.coinstats.appcarrying the same bearer.
Source: src/worker.ts. Config: wrangler.jsonc.
Local development
The repo ships two entry points:
src/worker.ts— Cloudflare Worker. Run withwrangler dev(port 8787 by default).src/index.ts— stdio server. Run withnode dist/index.jsafter building, or via the published npm package.
# Build the stdio CLI
npm run build
# Run the Worker locally (requires `wrangler login` first)
npm run dev
# Deploy the Worker manually — needs CLOUDFLARE_ACCOUNT_ID exported in the
# env (the account ID isn't committed to wrangler.jsonc). Normally you don't
# need this: merging to main deploys automatically (see "Deployment" below).
export CLOUDFLARE_ACCOUNT_ID=<your-cf-account-id>
npm run deploy
# Tail production logs
npm run tailFor local Worker development you can override env vars:
wrangler dev --var OAUTH_ISSUER:http://localhost:1337 \
--var COINSTATS_API_BASE_URL:http://localhost:9999Deployment
GitHub Actions (.github/workflows/ci.yml) builds, tests and dry-run bundles the Worker on every pull request. Each push to main runs the same checks, then deploys to mcp.coinstats.app and probes /healthz. The deploy job uses the production environment, which only protected branches can use, and reads two secrets from it: CLOUDFLARE_API_TOKEN (Workers deploy permission) and CLOUDFLARE_ACCOUNT_ID. Pull requests from forks run the checks without access to either secret. To redeploy without a new commit, run the workflow manually on main; the deploy job only ships the current tip of main, so re-running an old run fails instead of rolling back.
A failed post-deploy health check does not roll back automatically. To restore the previous version, run npx wrangler rollback (or pick a version under Workers & Pages → coinstats-mcp → Deployments in the Cloudflare dashboard), then fix forward on main.
OpenAI plugin domain verification
The OpenAI plugin submission portal verifies domain ownership by fetching https://mcp.coinstats.app/.well-known/openai-apps-challenge and expecting the token it issued as plain text. The Worker serves the OPENAI_APPS_CHALLENGE env var at that path, and returns 404 when the variable is unset. Set it per deployment, outside the committed config:
wrangler secret put OPENAI_APPS_CHALLENGERelated
CoinStats API docs — full REST surface, MCP setup guide, tool catalog
API dashboard — for stdio-mode users to manage their developer API key
License
MIT — see LICENSE.
Available Tools
30 toolsadd-portfolio-transactionC
Add a transaction to a manual portfolio.
Inputs: coinId (required), type (required), date (required), amount (required), +4 more.
get-blockchainsB
Get a list of supported blockchains by CoinStats.
Inputs: no named parameters.
get-coin-avg-priceB
Get the historical average price for a specific cryptocurrency based on its unique identifier and a specific date.
Inputs: coinId (required), timestamp (required).
get-coin-by-idC
Get detailed information about a specific cryptocurrency based on its unique identifier.
Inputs: coinId (required), currency.
get-coin-chart-by-idC
Get chart data for a specific cryptocurrency based on its unique identifier, specifying different time ranges.
Inputs: coinId (required), period (required).
get-coin-exchange-priceC
Get the historical price data for a specific cryptocurrency on a particular exchange.
Inputs: exchange (required), from (required), to (required), timestamp (required).
get-coinsC
Get comprehensive data about all cryptocurrencies: Price, market cap, and volume. Price changes (1h, 24h, 7d). Supply information. Trading metrics. Social links and metadata.
Inputs: name, page, limit, currency, +39 more.
get-currenciesA
Get a list of fiat currencies supported by CoinStats.
Inputs: no named parameters.
get-exchange-balanceC
Get the balance data for a provided Exchange.
Inputs: connectionFields (required), connectionId (required).
get-exchangesB
Get a list of supported exchange portfolio connections by CoinStats.
Inputs: no named parameters.
get-exchange-sync-statusC
Get the syncing status of the exchange portfolio.
Inputs: portfolioId (required).
get-exchange-transactionsC
Get transaction data for a specific exchange.
Inputs: portfolioId (required), page, limit, from, +3 more.
get-fiat-currenciesA
Get a list of fiat currencies supported by CoinStats.
Inputs: no named parameters.
get-market-capD
Get global market data.
Inputs: no named parameters.
get-newsC
Get news articles with pagination.
Inputs: page, limit, from, to.
get-news-by-idC
Get news by id.
Inputs: id (required).
get-news-by-typeC
Get news articles based on a type.
Inputs: type (required), page, limit.
get-news-sourcesC
Get news sources.
Inputs: no named parameters.
get-portfolio-chartB
Get portfolio performance chart data.
Inputs: type (required), shareToken.
get-portfolio-coinsC
Get a list of portfolio coins with P/L and other data displayed on CoinStats web.
Inputs: shareToken, page, limit, includeRiskScore.
get-portfolio-transactionsC
Get a list of portfolio transactions.
Inputs: currency (required), shareToken, page, limit, +1 more.
get-ticker-exchangesB
Get a list of supported exchanges.
Inputs: no named parameters.
get-ticker-marketsC
Get a list of tickers for a specific cryptocurrency across different exchanges.
Inputs: page, limit, exchange, fromCoin, +3 more.
get-wallet-balanceC
Get the balance data for a provided wallet address on a specific blockchain network.
Inputs: address (required), connectionId (required).
get-wallet-balancesC
Get the balance data for a provided wallet address on all CoinStats supported networks.
Inputs: address (required), networks.
get-wallet-sync-statusC
Get the syncing status of the wallet with the blockchain network.
Inputs: address (required), connectionId (required).
get-wallet-transactionsB
Get transaction data for a specific wallet. Ensure transactions are synced by calling PATCH /transactions first.
Inputs: address (required), connectionId (required), page, limit, +5 more.
transactions-syncC
Initiate the syncing process to update transaction data for a specific wallet.
Inputs: address (required), connectionId (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 30 tools
Most tools have distinct purposes targeting specific resources like coins, exchanges, wallets, portfolios, or news, with clear boundaries. However, some potential confusion exists between get-currencies and get-fiat-currencies (both list fiat currencies) and get-exchange-balance versus get-wallet-balance (similar balance concepts but for different assets).
Tool names follow a highly consistent verb-noun pattern with hyphens, primarily using 'get-' for retrieval operations (e.g., get-coin-by-id, get-exchange-balance) and other verbs like 'add-', 'save-', and 'transactions-sync' for actions. This uniformity makes the set predictable and easy to navigate.
With 30 tools, the count is borderline high for a cryptocurrency portfolio and data server, potentially overwhelming for agents. While the domain is broad (covering coins, exchanges, wallets, portfolios, news), the number suggests some tools might be redundant or overly granular, such as multiple news-related tools that could be consolidated.
The tool set provides comprehensive coverage for cryptocurrency portfolio management and data analysis, including CRUD-like operations (e.g., add-portfolio-transaction, get-portfolio-transactions), data retrieval (coins, exchanges, wallets, news), and synchronization features. No obvious gaps are present; agents can perform end-to-end workflows from data fetching to portfolio updates.
Maintenance
Related MCP Connectors
CoinGecko MCP — wraps CoinGecko free API (no auth required)
MCP server for Financial Modeling Prep API with 250+ financial data tools
Official CoinMarketCap MCP server: real-time crypto prices, market cap, rankings and exchange data.
Unlock the power of real-time cryptocurrency data with our Crypto Price Insights MCP server.
Related MCP Servers
- AlicenseBqualityBmaintenanceA Model Context Protocol (MCP) server that provides comprehensive cryptocurrency analysis using the CoinCap API. This server offers real-time price data, market analysis, and historical trends through an easy-to-use interface.3258 npm40MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol (MCP) server that provides comprehensive cryptocurrency analysis using the CoinCap API. This server offers real-time price data, market analysis, and historical trends through an easy-to-use interface. Updated to use Coin Cap API v3350 npm1MIT
- FlicenseCqualityDmaintenanceProvides access to CoinCap's cryptocurrency market data and technical analysis tools via MCP, supporting assets, exchanges, markets, and more.3881 npm7-
- AlicenseNot gradedqualityBmaintenanceMCP server providing market data for 15,000+ cryptocurrencies including prices, history, trends, and deep coin metadata via CoinGecko.97 npm1Apache 2.0