A Model Context Protocol (MCP) server and OpenAI function calling service for interacting with the CoinGecko Pro API.
- Paginated list of supported cryptocurrencies
- Coin ID lookup by name or symbol
- Historical price, market cap, and volume data
- OHLC (Open, High, Low, Close) candlestick data
- Local coin cache with refresh capability
npm install coingecko-server
Create a .env
file in your project root:
COINGECKO_API_KEY=your_api_key_here
Claude Desktop provides full support for MCP features. To use this server:
-
Install Claude Desktop
-
Add to your Claude Desktop configuration:
- On macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- On Windows:
%APPDATA%\Claude\claude_desktop_config.json
- On macOS:
{
"mcpServers": {
"coingecko": {
"command": "node",
"args": ["/path/to/coingecko-server/build/index.js"],
"env": {
"COINGECKO_API_KEY": "your-api-key-here"
}
}
}
}
- Restart Claude Desktop
The server provides the following tools:
get-coins
: Get a paginated list of supported coinsfind-coin-ids
: Look up CoinGecko IDs for coin names/symbolsget-historical-data
: Get historical price, market cap, and volume dataget-ohlc-data
: Get OHLC candlestick datarefresh-cache
: Refresh the local coin list cache
import { CoinGeckoService } from 'coingecko-server';
import OpenAI from 'openai';
const openai = new OpenAI();
const coinGeckoService = new CoinGeckoService(process.env.COINGECKO_API_KEY);
// Get function definitions
const functions = CoinGeckoService.getOpenAIFunctionDefinitions();
// Example: Get historical data
const response = await openai.chat.completions.create({
model: "gpt-4-turbo-preview",
messages: [{ role: "user", content: "Get Bitcoin's price history for the last week" }],
functions: [functions[2]], // get_historical_data function
function_call: "auto",
});
if (response.choices[0].message.function_call) {
const args = JSON.parse(response.choices[0].message.function_call.arguments);
const history = await coinGeckoService.getHistoricalData(
args.id,
args.vs_currency,
args.from,
args.to,
args.interval
);
}
interface OHLCData {
timestamp: number;
open: number;
high: number;
low: number;
close: number;
}
interface HistoricalData {
prices: [number, number][];
market_caps: [number, number][];
total_volumes: [number, number][];
}
interface CoinInfo {
id: string;
symbol: string;
name: string;
platforms?: Record<string, string>;
}
Please refer to the CoinGecko Pro API documentation for current rate limits and usage guidelines.
MIT