get_order_book
Retrieve real-time order book data for cryptocurrency trading pairs on Binance to analyze market depth and liquidity.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Trading pair symbol, e.g. BTCUSDT | |
| limit | No | Order book depth, default 100, max 5000 |
Implementation Reference
- src/index.ts:23-41 (handler)The handler function that executes the get_order_book tool logic. It makes an API call to Binance's /api/v3/depth endpoint with the provided symbol and limit parameters, uses proxy configuration, and returns the order book data as JSON or an error message.
async (args: { symbol: string; limit?: number }) => { try { const response = await axios.get(`${BASE_URL}/api/v3/depth`, { params: { symbol: args.symbol, limit: args.limit }, ...getProxyConfig(), }); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] }; } catch (error: any) { return { content: [{ type: "text", text: `Failed to get order book: ${error.message}` }], isError: true }; } } - src/index.ts:19-22 (schema)Input parameter schema definition using zod validation. Defines 'symbol' as a required string (trading pair) and 'limit' as an optional number (order book depth).
{ symbol: z.string().describe("Trading pair symbol, e.g. BTCUSDT"), limit: z.number().optional().describe("Order book depth, default 100, max 5000") }, - src/index.ts:17-42 (registration)Tool registration with the MCP server using server.tool(). Registers the 'get_order_book' tool with its schema and handler function within the registerTools function.
server.tool( "get_order_book", { symbol: z.string().describe("Trading pair symbol, e.g. BTCUSDT"), limit: z.number().optional().describe("Order book depth, default 100, max 5000") }, async (args: { symbol: string; limit?: number }) => { try { const response = await axios.get(`${BASE_URL}/api/v3/depth`, { params: { symbol: args.symbol, limit: args.limit }, ...getProxyConfig(), }); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] }; } catch (error: any) { return { content: [{ type: "text", text: `Failed to get order book: ${error.message}` }], isError: true }; } } ); - src/index.ts:406-434 (helper)Helper function that provides proxy configuration for axios requests. Supports SOCKS5 and HTTP proxies based on environment variables (SOCKS_PROXY, SOCKS5_PROXY, HTTP_PROXY, HTTPS_PROXY).
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 {}; }