CoinGecko Cryptocurrency Data
STDIOMCP server and OpenAI function calling service for interacting with CoinGecko Pro API.
MCP server and OpenAI function calling service for interacting with CoinGecko Pro API.
Update: CoinGecko now has an official MCP server: https://docs.coingecko.com/reference/mcp-server
I recomend you use that one, as I probably won't update or keep this one current.
A Model Context Protocol (MCP) server and OpenAI function calling service for interacting with the CoinGecko Pro API.
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:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
{ "mcpServers": { "coingecko": { "command": "node", "args": ["/path/to/coingecko-server/build/index.js"], "env": { "COINGECKO_API_KEY": "your-api-key-here" } } } }
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 cacheimport { 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