CoinPaprika MCP Server
Official# CoinPaprika MCP Server
[](https://smithery.ai/servers/coinpaprika/coinpaprika)
A Model Context Protocol (MCP) server that provides on-demand access to CoinPaprika's cryptocurrency market data API. Built specifically for AI assistants like Claude to programmatically fetch real-time prices, tickers, exchange data, OHLCV candles, and more with zero configuration.
## TL;DR
```bash
# Install globally
npm install -g @coinpaprika/mcp
# Start the server
coinpaprika-mcp
# Or run directly without installation
npx @coinpaprika/mcp@latest
```
CoinPaprika MCP connects Claude to live crypto market data for 12,000+ cryptocurrencies. The free tier needs no API key. [Installation](#installation) | [Configuration](#claude-desktop-integration) | [API Reference](https://api.coinpaprika.com)
> **Prefer zero setup?** Use the hosted MCP server at [mcp.coinpaprika.com](https://mcp.coinpaprika.com): no installation, no API key to start, 31 tools (the 30 here plus `submitFeedback`). See [Hosted server](#hosted-server-no-installation) for transport endpoints.
## What Can You Build?
- **Market Dashboards**: Real-time market overview with global stats, top coins, and volume trends
- **Coin Analysis Tools**: Deep-dive into any cryptocurrency: price, team, events, exchanges, and markets
- **Price Trackers**: Track prices across multiple quote currencies with historical OHLCV data
- **Exchange Comparisons**: Compare trading pairs and volumes across 350+ exchanges
- **Portfolio Valuations**: Convert an amount between currencies ('0.5 BTC in USD') and track price changes over time
- **Contract Lookup**: Find tokens by their smart contract address across multiple platforms
## Installation
### Installing via Smithery
To install CoinPaprika MCP for Claude Desktop automatically via [Smithery](https://smithery.ai/servers/coinpaprika/coinpaprika):
```bash
npx -y smithery mcp add coinpaprika/coinpaprika
```
### Manual Installation
```bash
# Install globally (recommended for regular use)
npm install -g @coinpaprika/mcp
# Start the server
coinpaprika-mcp
```
## Claude Desktop Integration
Add the following to your Claude Desktop configuration file:
**macOS**: `~/Library/Application\ Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"coinpaprika": {
"command": "npx",
"args": ["@coinpaprika/mcp@latest"]
}
}
}
```
### With API Key (for paid-tier features)
```json
{
"mcpServers": {
"coinpaprika": {
"command": "npx",
"args": ["@coinpaprika/mcp@latest"],
"env": {
"COINPAPRIKA_API_KEY": "your-api-key-here"
}
}
}
}
```
### Claude Code Integration
```bash
# Add as MCP server in Claude Code
claude mcp add coinpaprika -- npx @coinpaprika/mcp@latest
# With API key
COINPAPRIKA_API_KEY=your-key claude mcp add coinpaprika -- npx @coinpaprika/mcp@latest
```
### Hosted server (no installation)
If you prefer zero setup, point any MCP-compatible client directly at the hosted server at [mcp.coinpaprika.com](https://mcp.coinpaprika.com). The landing page provides setup instructions and documentation. The following transport endpoints are available:
| Transport | Endpoint | Use Case |
|-----------|----------|----------|
| Streamable HTTP | `https://mcp.coinpaprika.com/streamable-http` | Recommended for most clients |
| SSE | `https://mcp.coinpaprika.com/sse` | Legacy SSE transport |
| JSON-RPC | `https://mcp.coinpaprika.com/json-rpc` | Direct JSON-RPC |
> **Note**: These are MCP protocol endpoints. They won't display anything in a browser. Visit [mcp.coinpaprika.com](https://mcp.coinpaprika.com) for the landing page.
```json
{
"mcpServers": {
"coinpaprika": {
"type": "streamable-http",
"url": "https://mcp.coinpaprika.com/streamable-http"
}
}
}
```
## Available Tools (30)
### Discovery & System
| Tool | Description |
|------|-------------|
| `getCapabilities` | Server capabilities, workflow patterns, validation rules, and best practices. **Start here.** |
| `status` | Server status and configuration |
| `getGlobal` | Global market overview: total market cap, 24h volume, BTC dominance ('how is the market doing') |
### Coins
| Tool | Description | Required Parameters |
|------|-------------|---------------------|
| `getCoins` | List all coins (id, name, symbol, rank); no prices, use getTickers for prices | none |
| `getCoinById` | Coin project details (description, team, links); no price, use getTickersById | `coinId` |
| `getCoinEvents` | Upcoming events for a coin | `coinId` |
| `getCoinExchanges` | Exchanges listing a coin | `coinId` |
| `getCoinMarkets` | Markets/exchanges trading a coin ('where to buy X', 'X price on Binance') | `coinId` |
### Tickers & Prices
| Tool | Description | Required Parameters |
|------|-------------|---------------------|
| `getTickers` | Current prices + market caps for top coins by market cap ('top 5 coins', market snapshot) | none |
| `getTickersById` | Current price, market cap & 24h change of one coin ('BTC price', 'how much is ETH') | `coinId` |
| `getCoinOHLCVLatest` | Latest full-day OHLC candle (not the live price) | `coinId` |
| `getCoinOHLCVToday` | Today's in-progress OHLC candle | `coinId` |
| `priceConverter` | Convert an amount between currencies ('0.5 BTC in USD') | `baseCurrencyId`, `quoteCurrencyId` |
### Exchanges
| Tool | Description | Required Parameters |
|------|-------------|---------------------|
| `getExchanges` | List all exchanges | none |
| `getExchangeByID` | Exchange details | `exchangeId` |
| `getExchangeMarkets` | Markets on a specific exchange | `exchangeId` |
### Tags & People
| Tool | Description | Required Parameters |
|------|-------------|---------------------|
| `getTags` | List all tags/categories | none |
| `getTagById` | Tag details | `tagId` |
| `getPeopleById` | Person/team member details | `personId` |
### Contracts
| Tool | Description | Required Parameters |
|------|-------------|---------------------|
| `getPlatforms` | List contract platforms | none |
| `getContracts` | Contracts on a platform | `platformId` |
| `getTickerByContract` | Token price by contract address (on-chain/DeFi tokens) | `platformId`, `contractAddress` |
### Search & Resolution
| Tool | Description | Required Parameters |
|------|-------------|---------------------|
| `search` | Search coins/exchanges/people/tags by name; use FIRST to get an id | `q` |
| `resolveId` | Resolve a name/symbol to canonical id; call FIRST before price tools | `type`, `query` |
### Paid-Tier Tools
These tools require a paid CoinPaprika API plan. Without an API key, they return guidance directing you to upgrade.
| Tool | Plan Required | Description |
|------|---------------|-------------|
| `getCoinOHLCVHistorical` | Starter+ | Historical OHLCV candle data |
| `getTickersHistoricalById` | Starter+ | Historical ticker snapshots |
| `getHistoricalTickerByContract` | Starter+ | Historical ticker by contract |
| `getChangelogIDs` | Starter+ | Changelog of coin ID changes |
| `keyInfo` | Pro | Verify API key details |
| `getMappings` | Business | Cross-platform ID mappings |
## API Key Configuration
The free tier provides access to most tools without any API key. For paid-tier features (historical data, mappings, etc.), set the `COINPAPRIKA_API_KEY` environment variable:
```bash
# Set via environment variable
export COINPAPRIKA_API_KEY=your-api-key-here
coinpaprika-mcp
# Or pass inline
COINPAPRIKA_API_KEY=your-api-key-here npx @coinpaprika/mcp@latest
```
Get an API key at [coinpaprika.com/api/pricing](https://coinpaprika.com/api/pricing/).
### Example Usage
```javascript
// Start by getting capabilities for workflow guidance:
const caps = await getCapabilities();
// Get global market overview:
const global = await getGlobal();
// Find a coin by name:
const results = await search({ q: "ethereum" });
// Get detailed coin info:
const bitcoin = await getCoinById({ coinId: "btc-bitcoin" });
// Get current ticker with USD and BTC quotes:
const ticker = await getTickersById({ coinId: "eth-ethereum", quotes: "USD,BTC" });
// Get OHLCV data for today:
const ohlcv = await getCoinOHLCVToday({ coinId: "btc-bitcoin" });
// Convert 1 BTC to USD:
const conversion = await priceConverter({
baseCurrencyId: "btc-bitcoin",
quoteCurrencyId: "usd-us-dollars",
amount: 1
});
// List top 10 exchanges:
const exchanges = await getExchanges({ limit: 10 });
// Resolve fuzzy query to exact coin ID:
const resolved = await resolveId({ type: "coin", query: "cardano" });
```
## Sample Prompts for Claude
- "What's the current price of Bitcoin and Ethereum? Show me 24h change."
- "Give me a comprehensive analysis of Cardano: price, team, events, and top exchanges."
- "Compare the top 5 crypto exchanges by trading volume."
- "Convert 10 ETH to USD and show the current exchange rate."
- "Find all coins tagged as 'defi' and show their market caps."
- "What exchanges list Solana and what trading pairs are available?"
- "Show me the OHLCV data for Bitcoin today."
- "Search for all coins related to 'layer-2' and rank them by market cap."
- "Look up the team behind Ethereum. Who are the key people?"
- "Get the ticker for USDT by its Ethereum contract address."
## Rate Limits & Performance
- **Free Tier Limits**: 20,000 calls per month, no API key needed. Paid plans start at $99/month for 400,000 calls: https://coinpaprika.com/api/pricing/
- **Response Time**: 100-500ms for most endpoints
- **Data Coverage**: 12,000+ cryptocurrencies, 350+ exchanges
- **Error Handling**: Structured errors with codes, suggestions, and retry guidance
- **Quota Info**: Running this package yourself, every response carries a `meta.quota` block with the monthly free-tier allowance and the number of calls this server process has made since it started. That count is process-local, not your account balance. The hosted server at `mcp.coinpaprika.com` returns no `meta` block at all, so do not write client code that depends on one
## Troubleshooting
**Common Issues:**
- **Rate limiting**: If receiving `CP429_RATE_LIMIT` errors, back off and retry. The free-tier quota is monthly, not daily, so a sustained 429 means the monthly allowance is spent
- **Invalid coin ID**: Coin IDs use `symbol-name` format (e.g., `btc-bitcoin`, not `bitcoin` or `BTC`). Use `search` or `resolveId` to find correct IDs
- **Paid-tier errors**: `CP402_INSUFFICIENT_PLAN` or `CP403_FORBIDDEN` mean the endpoint requires a paid plan. Set `COINPAPRIKA_API_KEY` environment variable
- **Timeout errors**: Large data requests may take longer, so reduce the `limit` parameter
- **Network errors**: Check network connectivity, the service requires internet access
## Development
```bash
# Clone the repository
git clone https://github.com/coinpaprika/coinpaprika-mcp.git
cd coinpaprika-mcp
# Install dependencies
npm install
# Run in development
npm start
# Build for production
npm run build
```
## Changelog
See [CHANGELOG.md](CHANGELOG.md) for detailed release notes.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Additional Resources
- [CoinPaprika API Documentation](https://docs.coinpaprika.com)
- [API Pricing & Plans](https://coinpaprika.com/api/pricing/)
- [Hosted MCP Server](https://mcp.coinpaprika.com), zero-setup option
- [DexPaprika MCP](https://www.npmjs.com/package/dexpaprika-mcp), DEX and DeFi data companion package
- [Model Context Protocol Specification](https://modelcontextprotocol.io)
- [CoinPaprika](https://coinpaprika.com), comprehensive cryptocurrency market data
- [DexPaprika](https://dexpaprika.com), onchain DEX analytics
TDQS
Scored across 30 tools
Each tool targets a distinct data point (e.g., global stats, coin list, current price, OHLCV, exchange details, tags, search, etc.). Even similar tools like getTickersById vs getTickerByContract are clearly separated by input type (canonical ID vs contract address). The descriptions consistently clarify when to use each tool, minimizing ambiguity.
The majority of tools follow a consistent 'get' + noun pattern (e.g., getGlobal, getCoins, getTickers). However, a few tools like keyInfo, status, priceConverter, search, and resolveId deviate from this pattern, introducing slight inconsistency. Despite this, the naming is still clear and predictable overall.
With 30 tools, the server covers a broad domain (cryptocurrency market data) comprehensively. While the count exceeds the ideal range of 3–15, it is justified by the depth of features (global stats, coins, tickers, OHLCV, exchanges, tags, people, contracts, search, conversion, mappings, changelog). It is on the higher end but not excessive for a full-featured data API.
The tool set covers nearly all major aspects of crypto market data: global overview, coin metadata, current and historical prices, OHLCV candles, exchange details, tags, people, contract addresses, fuzzy search, ID resolution, price conversion, cross-referencing, and changelogs. There are no obvious gaps for a read-only data source; it provides a complete lifecycle for querying market information.