get-stock-bars
Retrieve historical stock bar data for specified symbols within a defined timeframe using the Alpaca MCP Server. Input symbols, start date, end date, and timeframe to access market data.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| symbols | Yes | ||
| timeframe | Yes |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"end": {
"type": "string"
},
"start": {
"type": "string"
},
"symbols": {
"items": {
"type": "string"
},
"type": "array"
},
"timeframe": {
"type": "string"
}
},
"required": [
"symbols",
"start",
"end",
"timeframe"
],
"type": "object"
}
Implementation Reference
- index.ts:65-87 (handler)The main handler function for the 'get-stock-bars' tool. It fetches historical stock bars from the Alpaca API, batching symbols (up to 2000 per batch) and handling pagination with page tokens.export async function getStockBars({ symbols, start, end, timeframe }: { symbols: string[]; start: string; end: string; timeframe: string }) { try { const result: { bars: Record<string, unknown> } = { bars: {} }; for (const batch of getBatches(symbols, 2000)) { let pageToken: string | undefined; do { const params: Record<string, unknown> = { timeframe, limit: 10000, start, end, symbols: batch.join(",") }; if (pageToken) params.page_token = pageToken; const resp = await request<{ bars: Record<string, unknown>; next_page_token?: string }>({ base: process.env.ALPACA_ENDPOINT!, path: "/v2/stocks/bars", params, }); Object.assign(result.bars, resp.bars); pageToken = resp.next_page_token; } while (pageToken); } return { content: [{ type: "text", text: JSON.stringify(result) }] as any }; } catch (err: any) { debug("get-stock-bars error", err); return { content: [{ type: "text", text: `Error fetching stock bars: ${err.message}` }] as any, isError: true }; } }
- index.ts:138-147 (registration)Registers the 'get-stock-bars' tool with the MCP server, including the input schema (using Zod) and the handler function.server.tool( "get-stock-bars", { symbols: z.array(z.string()), start: z.string(), end: z.string(), timeframe: z.string(), }, getStockBars );
- index.ts:140-145 (schema)Zod schema defining the input parameters for the 'get-stock-bars' tool: symbols (array of strings), start (string), end (string), timeframe (string).{ symbols: z.array(z.string()), start: z.string(), end: z.string(), timeframe: z.string(), },
- index.ts:42-46 (helper)Helper function to split an array into batches of a given size, used in getStockBars to batch symbols for API requests (limit 2000).function getBatches<T>(arr: T[], size: number): T[][] { const batches: T[][] = []; for (let i = 0; i < arr.length; i += size) batches.push(arr.slice(i, i + size)); return batches; }