Skip to main content
Glama

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

NameRequiredDescriptionDefault
endYes
startYes
symbolsYes
timeframeYes

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 );
  • 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(), },
  • 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; }

Other Tools

Related Tools

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/cesarvarela/alpaca-mcp'

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