Skip to main content
Glama
jianchundev

Binance Cryptocurrency MCP

by jianchundev

get_24hr_ticker

Retrieve 24-hour price change statistics for cryptocurrency trading pairs from Binance. Use this tool to monitor market movements, analyze price fluctuations, and track trading pair performance over a full day period.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
symbolNoTrading pair symbol, e.g. BTCUSDT
symbolsNoArray of multiple trading pair symbols

Implementation Reference

  • The main handler function that executes the get_24hr_ticker tool. It accepts optional 'symbol' or 'symbols' parameters, constructs the appropriate request parameters, makes an HTTP GET request to Binance's /api/v3/ticker/24hr endpoint with proxy support, and returns the 24hr price statistics as formatted JSON or an error message.
    async (args: { symbol?: string; symbols?: string[] }) => {
        try {
            let params = {};
            if (args.symbol) {
                params = { symbol: args.symbol };
            } else if (args.symbols) {
                params = { symbols: JSON.stringify(args.symbols) };
            }
    
            const response = await axios.get(`${BASE_URL}/api/v3/ticker/24hr`, {
                params,
                ...getProxyConfig(),
            });
            return {
                content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }]
            };
        } catch (error: any) {
            return {
                content: [{ type: "text", text: `Failed to get 24hr price statistics: ${error.message}` }],
                isError: true
            };
        }
    }
  • Zod schema definition for the get_24hr_ticker tool input parameters. Defines two optional parameters: 'symbol' for a single trading pair (e.g., BTCUSDT) and 'symbols' for an array of multiple trading pair symbols.
    {
        symbol: z.string().optional().describe("Trading pair symbol, e.g. BTCUSDT"),
        symbols: z.array(z.string()).optional().describe("Array of multiple trading pair symbols")
    },
  • src/index.ts:237-267 (registration)
    Complete registration of the get_24hr_ticker tool using server.tool() method. Includes the tool name, input validation schema, and the async handler function that makes the API call to Binance.
    // 24hr Price Change Statistics
    server.tool(
        "get_24hr_ticker",
        {
            symbol: z.string().optional().describe("Trading pair symbol, e.g. BTCUSDT"),
            symbols: z.array(z.string()).optional().describe("Array of multiple trading pair symbols")
        },
        async (args: { symbol?: string; symbols?: string[] }) => {
            try {
                let params = {};
                if (args.symbol) {
                    params = { symbol: args.symbol };
                } else if (args.symbols) {
                    params = { symbols: JSON.stringify(args.symbols) };
                }
    
                const response = await axios.get(`${BASE_URL}/api/v3/ticker/24hr`, {
                    params,
                    ...getProxyConfig(),
                });
                return {
                    content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }]
                };
            } catch (error: any) {
                return {
                    content: [{ type: "text", text: `Failed to get 24hr price statistics: ${error.message}` }],
                    isError: true
                };
            }
        }
    );
  • Helper function getProxyConfig() that configures proxy settings for HTTP requests. It prioritizes SOCKS5 proxy (if SOCKS_PROXY or SOCKS5_PROXY env var is set), falls back to HTTP proxy (if HTTP_PROXY or HTTPS_PROXY env var is set), and returns an empty object if no proxy is configured.
    function getProxyConfig(): any {
        // 优先使用SOCKS5代理
        if (socksProxyURL) {
            try {
                const agent = new SocksProxyAgent(socksProxyURL);
                return { httpsAgent: agent, httpAgent: agent };
            } catch (error) {
                console.error(`Failed to create SOCKS proxy agent: ${error}`);
            }
        }
        
        // 回退到HTTP代理
        if (httpProxyURL) {
            try {
                const urlInfo = new URL(httpProxyURL);
                return {
                    proxy: {
                        host: urlInfo.hostname,
                        port: parseInt(urlInfo.port) || (urlInfo.protocol === 'https:' ? 443 : 80),
                        protocol: urlInfo.protocol.replace(":", "")
                    }
                };
            } catch (error) {
                console.error(`Failed to parse HTTP proxy URL: ${error}`);
            }
        }
        
        return {};
    }
  • Base configuration constants used by the get_24hr_ticker handler: BASE_URL for the Binance API endpoint, and environment variable configurations for HTTP and SOCKS proxy support.
    const BASE_URL = "https://api.binance.com";
    
    // 支持多种代理类型
    const httpProxyURL = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;
    const socksProxyURL = process.env.SOCKS_PROXY || process.env.SOCKS5_PROXY;

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/jianchundev/binance-mcp'

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