Skip to Content
MCP ServersCommunityCoinGecko Server

CoinGecko Server

View original on GitHub 

A Model Context Protocol (MCP) server and OpenAI function calling service for interacting with the CoinGecko Pro API.

Features

  • 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

Installation

npm install coingecko-server

Environment Setup

Create a .env file in your project root:

COINGECKO_API_KEY=your_api_key_here

Usage with Claude Desktop

Claude Desktop provides full support for MCP features. To use this server:

  1. Install Claude Desktop 

  2. Add to your Claude Desktop configuration:

    • On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • On Windows: %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" } } } }
  1. Restart Claude Desktop

The server provides the following tools:

  • get-coins: Get a paginated list of supported coins
  • find-coin-ids: Look up CoinGecko IDs for coin names/symbols
  • get-historical-data: Get historical price, market cap, and volume data
  • get-ohlc-data: Get OHLC candlestick data
  • refresh-cache: Refresh the local coin list cache

Usage with OpenAI Function Calling

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 ); }

Data Types

OHLCData

interface OHLCData { timestamp: number; open: number; high: number; low: number; close: number; }

HistoricalData

interface HistoricalData { prices: [number, number][]; market_caps: [number, number][]; total_volumes: [number, number][]; }

CoinInfo

interface CoinInfo { id: string; symbol: string; name: string; platforms?: Record<string, string>; }

Rate Limits

Please refer to the CoinGecko Pro API documentation  for current rate limits and usage guidelines.

License

MIT

Last updated on