Skip to main content
Glama
cesarvarela

Alpaca MCP Server

by cesarvarela

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

TableJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
symbolsYes
timeframeYes

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;
    }
Install Server

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