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

Tool Definition Quality

Score is being calculated. Check back soon.

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