DEX and on-chain data: liquidity pools, token prices, swaps, and trading volume.
A Model Context Protocol (MCP) server that provides on-demand access to DexPaprika's cryptocurrency and DEX data API. Built specifically for AI assistants like Claude to programmatically fetch current token, pool and DEX data with zero configuration.
# Install globally
npm install -g dexpaprika-mcp
# Start the server
dexpaprika-mcp
# Or run directly without installation
npx dexpaprika-mcp@latest
DexPaprika MCP connects Claude to live DEX data across multiple blockchains. The free tier needs no API key to start. Installation | Configuration | API Reference
Prefer zero setup? Use the hosted MCP server at mcp.dexpaprika.com: no installation, no key to start, the same data tools plus
submitFeedback. See Hosted server for transport endpoints.
See CHANGELOG.md for release notes and migration guides.
To install DexPaprika for Claude Desktop automatically via Smithery:
npx -y smithery mcp add coinpaprika/dexpaprika
# Install globally (recommended for regular use)
npm install -g dexpaprika-mcp
# Start the server
dexpaprika-mcp
This is a stdio server: it speaks MCP over stdin and stdout and binds no port. On start it writes DexPaprika MCP server v<version> (tool contract v<contract>) is running... to stderr and then waits for a client. Run it from an MCP client (Claude Desktop, Cursor, Claude Code) rather than expecting a URL in a browser.
Watch our step-by-step tutorial on setting up and using the DexPaprika MCP server:
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
{
"mcpServers": {
"dexpaprika": {
"command": "npx",
"args": ["dexpaprika-mcp@latest"]
}
}
}
After restarting Claude Desktop, the DexPaprika tools will be available to Claude automatically.
This works without a key and always will. No signup, no card, nothing to configure. Everything above is the supported way to run it.
A free key raises the monthly allowance and opens streaming on any token rather than the public showcase set. It does not raise the per-minute request limit, which is the same on both tiers. Get one at console.dexpaprika.com; current limits are on the rate limits page.
{
"mcpServers": {
"dexpaprika": {
"command": "npx",
"args": ["dexpaprika-mcp@latest"],
"env": {
"DEXPAPRIKA_API_KEY": "your_key_here"
}
}
}
}
The key goes in on its own. There is no Bearer prefix, and no other scheme
word either. Paste the key exactly as issued. Almost every other API wants the
opposite, so this is the single most common reason a working key looks broken.
Two things worth knowing:
200 and
real data, so a typo looks exactly like success. Ask the assistant to run
getKeyStatus after setting one: it reports which plan the API actually sees
and names the likely cause when the key is not landing.DEXPAPRIKA_API_BASE_URL to
https://api-pro.dexpaprika.com. The host does not change automatically,
because sending a free key to that host returns 403.If you prefer zero setup, point any MCP-compatible client directly at the hosted server at mcp.dexpaprika.com. The landing page provides setup instructions and documentation. The following transport endpoints are available:
| Transport | Endpoint | Use Case |
|---|---|---|
| Streamable HTTP | https://mcp.dexpaprika.com/streamable-http | Recommended for most clients |
| SSE | https://mcp.dexpaprika.com/sse | Legacy SSE transport |
| JSON-RPC | https://mcp.dexpaprika.com/json-rpc | Direct JSON-RPC |
Note: These are MCP protocol endpoints. They won't display anything in a browser. Visit mcp.dexpaprika.com for the landing page.
{
"mcpServers": {
"dexpaprika": {
"type": "streamable-http",
"url": "https://mcp.dexpaprika.com/streamable-http"
}
}
}
This self-host build registers 17 read tools: 16 market-data tools plus getKeyStatus. The hosted server at mcp.dexpaprika.com registers its own set including submitFeedback. Verify either with a live tools/list.
| Tool | Description |
|---|---|
getCapabilities | Server capabilities, workflow patterns, network synonyms, and best practices. Start here. |
getNetworks | List every supported blockchain network (36) |
getStats | High-level ecosystem stats (total networks, DEXes, pools, tokens) |
search | Search tokens, pools, and DEXes across ALL networks by name, symbol, or address |
getKeyStatus | Whether a key is being sent and which plan the API sees. Reads no market data. |
| Tool | Description | Required Parameters |
|---|---|---|
getNetworkDexes | List DEXes on a specific network | network |
| Tool | Description | Required Parameters |
|---|---|---|
getNetworkPools | PRIMARY. Get top liquidity pools on a network | network |
getDexPools | Get pools from a specific DEX (rows under results, cursor pagination) | network, dex |
getNetworkPoolsFilter | Filter pools by volume, transactions, creation time | network |
getPoolDetails | Detailed pool info (price, volume, TVL, tokens) | network, pool_address |
getPoolOHLCV | Historical OHLCV candle data | network, pool_address, start |
getPoolTransactions | Recent transactions/trades for a pool | network, pool_address |
| Tool | Description | Required Parameters |
|---|---|---|
getTokenDetails | Detailed token information | network, token_address |
getTokenPools | Liquidity pools containing a token (network-scoped filter, results + cursor pagination) | network, token_address |
getTokenMultiPrices | Batched prices for up to 10 tokens | network, tokens[] |
getTopTokens | Top tokens on a network ranked by volume, liquidity, FDV, or 24h price change | network |
filterNetworkTokens | Filter tokens by volume, liquidity, FDV, transactions, and creation time | network |
// Start by getting capabilities for workflow guidance:
const caps = await getCapabilities();
// Get details about a specific token:
const solanaJupToken = await getTokenDetails({
network: "solana",
token_address: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"
});
// Find pools containing a token (returns `results` with cursor pagination;
// the token filter only works network-scoped):
const jupiterPools = await getTokenPools({
network: "solana",
token_address: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
order_by: "volume_usd_24h",
limit: 5
});
// Get top pools on Ethereum (returns `results` with cursor pagination):
const ethereumPools = await getNetworkPools({
network: "ethereum",
order_by: "volume_usd_24h",
limit: 10
});
// Filter pools by volume and creation time:
const filteredPools = await getNetworkPoolsFilter({
network: "ethereum",
volume_24h_min: 100000,
created_after: 1710806400,
sort_by: "volume_usd_24h",
limit: 20
});
// Get historical price data:
const ohlcvData = await getPoolOHLCV({
network: "ethereum",
pool_address: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
start: "2023-01-01",
interval: "24h",
limit: 30
});
// Batch prices for multiple tokens (max 10):
const prices = await getTokenMultiPrices({
network: "ethereum",
tokens: [
"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"0xdac17f958d2ee523a2206206994597c13d831ec7"
]
});
Common Issues:
DP429_RATE_LIMIT errors, implement exponential backoffgetPoolTransactions instead# Clone the repository
git clone https://github.com/coinpaprika/dexpaprika-mcp.git
cd dexpaprika-mcp
# Install dependencies
npm install
# Run with auto-restart on code changes
npm run watch
# Build for production
npm run build
# Run tests
npm test
See CHANGELOG.md for detailed release notes and migration guides.
This project is licensed under the MIT License - see the LICENSE file for details.
This listing does not have a supported local package template. Use the maintainer’s documentation for its hosted endpoint, authentication, and client-specific setup. No install command has been inferred.