Skip to main content
Glama
Nayshins

Cryptocurrency Market Data MCP Server

by Nayshins

get-top-volumes

Retrieve top cryptocurrencies by trading volume from major exchanges to analyze market activity and identify high-volume trading pairs.

Instructions

Get top cryptocurrencies by trading volume from a specific exchange

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of pairs to return (default: 5)
exchangeNoExchange to use (supported: binance, coinbase, kraken, kucoin, hyperliquid, huobi, bitfinex, bybit, okx, mexc)binance

Implementation Reference

  • Handler implementation for the 'get-top-volumes' tool. Fetches all tickers from the specified exchange using CCXT, sorts them by 24h base volume (descending), selects the top N (default 5), formats each using format_ticker helper, and returns a formatted text response listing the top pairs.
    elif name == "get-top-volumes":
        limit = int(arguments.get("limit", 5))
        tickers = await exchange.fetch_tickers()
    
        # Sort by volume and get top N
        sorted_tickers = sorted(
            tickers.values(),
            key=lambda x: float(x.get('baseVolume', 0) or 0),
            reverse=True
        )[:limit]
    
        formatted_results = []
        for ticker in sorted_tickers:
            formatted_data = await format_ticker(ticker, exchange_id)
            formatted_results.append(formatted_data)
    
        return [
            types.TextContent(
                type="text",
                text=f"Top {limit} pairs by volume on {exchange_id.upper()}:\n\n" + "\n".join(formatted_results)
            )
        ]
  • src/server.py:135-148 (registration)
    Tool registration in the @server.list_tools() handler, defining the tool name, description, and input schema (optional 'limit' number and 'exchange' string from supported exchanges).
    types.Tool(
        name="get-top-volumes",
        description="Get top cryptocurrencies by trading volume from a specific exchange",
        inputSchema={
            "type": "object",
            "properties": {
                "limit": {
                    "type": "number",
                    "description": "Number of pairs to return (default: 5)",
                },
                "exchange": get_exchange_schema()
            }
        },
    ),
  • Shared schema function providing JSON schema for the 'exchange' input parameter used across tools, including get-top-volumes (defines type string, enum of supported exchanges, default 'binance').
    def get_exchange_schema() -> Dict[str, Any]:
        """Get the JSON schema for exchange selection."""
        return {
            "type": "string",
            "description": f"Exchange to use (supported: {', '.join(SUPPORTED_EXCHANGES.keys())})",
            "enum": list(SUPPORTED_EXCHANGES.keys()),
            "default": "binance"
        }
  • Helper function to format individual ticker data (symbol, prices, volume, bid/ask) into a multi-line string, used by the get-top-volumes handler to display each top volume pair.
    async def format_ticker(ticker: Dict[str, Any], exchange_id: str) -> str:
        """Format ticker data into a readable string."""
        return (
            f"Exchange: {exchange_id.upper()}\n"
            f"Symbol: {ticker.get('symbol')}\n"
            f"Last Price: {ticker.get('last', 'N/A')}\n"
            f"24h High: {ticker.get('high', 'N/A')}\n"
            f"24h Low: {ticker.get('low', 'N/A')}\n"
            f"24h Volume: {ticker.get('baseVolume', 'N/A')}\n"
            f"Bid: {ticker.get('bid', 'N/A')}\n"
            f"Ask: {ticker.get('ask', 'N/A')}\n"
            "---"
        )
  • Helper to lazily initialize and cache CCXT exchange instances for supported exchanges, used indirectly by get-top-volumes via the common flow.
    async def get_exchange(exchange_id: str) -> ccxt.Exchange:
        """Get or create an exchange instance."""
        exchange_id = exchange_id.lower()
        if exchange_id not in SUPPORTED_EXCHANGES:
            raise ValueError(f"Unsupported exchange: {exchange_id}")
    
        if exchange_id not in exchange_instances:
            exchange_class = SUPPORTED_EXCHANGES[exchange_id]
            exchange_instances[exchange_id] = exchange_class()
    
        return exchange_instances[exchange_id]

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nayshins/mcp-server-ccxt'

If you have feedback or need assistance with the MCP directory API, please join our Discord server