Skip to main content
Glama
jianchundev

Binance Cryptocurrency MCP

by jianchundev

get_price

Retrieve real-time cryptocurrency prices from Binance for specified trading pairs to monitor market values and track asset performance.

Input Schema

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

Implementation Reference

  • Complete implementation of the get_price tool handler, including registration via server.tool(), Zod schema definition (symbol and symbols parameters), and the async handler function that calls Binance API /api/v3/ticker/price endpoint
    server.tool(
        "get_price",
        {
            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/price`, {
                    params,
                    ...getProxyConfig(),
                });
                return {
                    content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }]
                };
            } catch (error: any) {
                return {
                    content: [{ type: "text", text: `Failed to get price ticker: ${error.message}` }],
                    isError: true
                };
            }
        }
    );
  • Zod schema definition for get_price tool parameters - validates optional 'symbol' (single trading pair) or 'symbols' (array of multiple trading pairs) input parameters
    {
        symbol: z.string().optional().describe("Trading pair symbol, e.g. BTCUSDT"),
        symbols: z.array(z.string()).optional().describe("Array of multiple trading pair symbols")
    },
  • Helper function getProxyConfig() used by the get_price handler to configure HTTP/SOCKS5 proxy settings for API requests based on environment variables
    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 {};

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