Alpaca MCP server

alpaca:get_stock_bars (MCP)(symbol: “ZENA”, days: 1)
⎿ Historical Data for ZENA (Last 1 trading days):
---------------------------------------------------
Date: 2025-06-04, Open: $3.09, High: $3.19, Low: $3.00, Close: $3.18, Volume: 928524.0
Date: 2025-06-05, Open: $4.73, High: $6.92, Low: $4.15, Close: $4.45, Volume: 136897059.0

[DEBUG] Stream started - received first chunk

● ZENA Stock Bars (June 5, 2025):

  • Open: $4.73
  • High: $6.92
  • Low: $4.15
  • Close: $4.45
  • Volume: 136.9M shares

Large volume spike from 928K to 137M shares, with significant price movement from previous close of $3.18 to open
at $4.73.

How do I fetch bars with 1Min sample rate?
[DEBUG] Stream started - received first chunk

● The get_stock_bars function in the Alpaca MCP server only provides daily bars and doesn’t have a parameter for
different timeframes like 1-minute intervals. It returns daily OHLCV data for the specified number of trading
days.

For 1-minute bars, you would need to use a different endpoint or modify the MCP server to support intraday
timeframes. The current implementation is limited to daily historical data.

Get 1-minute bars for AAPL for the last hour

Show me intraday 1-minute data for TSLA from today
Get minute-level price data for NVDA
[DEBUG] Stream started - received first chunk

● The current Alpaca MCP server only provides daily bars, not intraday minute-level data. The get_stock_bars
function doesn’t support 1-minute timeframes - it only returns daily OHLCV data.

To get minute-level data, you’d need the MCP server to be updated with intraday bar endpoints that support
timeframes like “1Min”, “5Min”, etc.

For now, I can only show you the latest quotes or daily bars for these stocks.

@mcp.tool()
def get_stock_bars_intraday(symbol: str, timeframe: str = “1Min”, limit: int = 100) → str:
“”"
Get intraday stock bars with specified timeframe

Args:
    symbol: Stock ticker symbol (e.g., 'AAPL')
    timeframe: Timeframe (1Min, 5Min, 15Min, 30Min, 1Hour)
    limit: Number of bars to retrieve (max 1000)
"""
# Implementation would go here

Update - I made a new function for the Alpaca MCP server and fixed the calendar logic. Here is an example output from a prompt:

alpaca:get_stock_bars_intraday(symbol: “AAPL”, timeframe: “1Min”, limit: 60)
[DEBUG] Stream started - received first chunk

● I’ll fetch the intraday data for AAPL with 1-minute bars.
[DEBUG] MCP server “alpaca”: Calling MCP tool: get_stock_bars_intraday
[ERROR] MCP server “alpaca” Server stderr: Processing request of type CallToolRequest
[DEBUG] MCP server “alpaca”: Tool call succeeded: {“content”:[{“type”:“text”,“text”:“Intraday 1Min Bars for AAPL:\nPeriod: 2025-06-05 to 2025-06-05\n============================================================\n\nTime: 2025-06-05 23:59:00 ET\nOpen: $200.88, High: $200.90, Low: $200.80, Close: $200.80\nVolume: 1,546.0\nTrade Count: 54.0\nVWAP: $200.86\n────────────────────────────────────────\n\nTime: 2025-06-05 23:58:00 ET\nOpen: $200.85, High: $200.90, Low: $200.75, Close: $200.80\nVolume: 2,350.0\nTrade Count: 22.0\nVWAP: $200.81\n────────────────────────────────────────\n\nTime: 2025-06-05 23:57:00 ET\nOpen: $200.80, High: $200.82, Low: $200.80, Close: $200.82\nVolume: 2,379.0\nTrade Count: 36.0\nVWAP: $200.80\n────────────────────────────────────────\n\nTime: 2025-06-05 23:56:00 ET\nOpen: $200.98, High: $201.00, Low: $200.80, Close: $200.81\nVolume: 4,240.0\nTrade Count: 51.0\nVWAP: $200.96\n────────────────────────────────────────\n\nTime: 2025-06-05 23:55:00 ET\nOpen: $200.99, High: $200.99, Low: $200.80, Close: $200.85\nVolume: 565.0\nTrade Count: 11.0\nVWAP: $200.88\n────────────────────────────────────────\n\nTime: 2025-06-05 23:54:00 ET\nOpen: $200.81, High: $200.87, Low: $200.81, Close: $200.87\nVolume: 599.0\nTrade Count: 16.0\nVWAP: $200.85\n────────────────────────────────────────\n\nTime: 2025-06-05 23:53:00 ET\nOpen: $200.80, High: $200.82, Low: $200.80, Close: $200.81\nVolume: 728.0\nTrade Count: 16.0\nVWAP: $200.81\n────────────────────────────────────────\n\nTime: 2025-06-05 23:52:00 ET\nOpen: $200.90, High: $200.90, Low: $200.90, Close: $200.90\nVolume: 170.0\nTrade Count: 8.0\nVWAP: $200.90\n────────────────────────────────────────\n\nTime: 2025-06-05 23:51:00 ET\nOpen: $200.78, High: $200.79, Low: $200.76, Close: $200.76\nVolume: 3,920.0\nTrade Count: 29.0\nVWAP: $200.79\n────────────────────────────────────────\n\nTime: 2025-06-05 23:50:00 ET\nOpen: $200.79, High: $200.79, Low: $200.79, Close: $200.79\nVolume: 360.0\nTrade Count: 22.0\nVWAP: $200.79\n────────────────────────────────────────\n\nTime: 2025-06-05 23:49:00 ET\nOpen: $200.77, High: $200.77, Low: $200.77, Close: $200.77\nVolume: 231.0\nTrade Count: 16.0\nVWAP: $200.77\n────────────────────────────────────────\n\nTime: 2025-06-05 23:48:00 ET\nOpen: $200.78, High: $200.78, Low: $200.78, Close: $200.78\nVolume: 435.0\nTrade Count: 14.0\nVWAP: $200.78\n────────────────────────────────────────\n\nTime: 2025-06-05 23:46:00 ET\nOpen: $200.79, High: $200.79, Low: $200.79, Close: $200.79\nVolume: 562.0\nTrade Count: 9.0\nVWAP: $200.79\n────────────────────────────────────────\n\nTime: 2025-06-05 23:45:00 ET\nOpen: $200.75, High: $200.79, Low: $200.75, Close: $200.77\nVolume: 900.0\nTrade Count: 18.0\nVWAP: $200.76\n────────────────────────────────────────\n\nTime: 2025-06-05 23:43:00 ET\nOpen: $200.73, High: $200.73, Low: $200.73, Close: $200.73\nVolume: 555.0\nTrade Count: 21.0\nVWAP: $200.73\n────────────────────────────────────────\n\nTime: 2025-06-05 23:42:00 ET\nOpen: $200.73, High: $200.73, Low: $200.73, Close: $200.73\nVolume: 2,334.0\nTrade Count: 25.0\nVWAP: $200.73\n────────────────────────────────────────\n\nTime: 2025-06-05 23:41:00 ET\nOpen: $200.73, High: $200.73, Low: $200.69, Close: $200.73\nVolume: 1,924.0\nTrade Count: 14.0\nVWAP: $200.70\n────────────────────────────────────────\n\nTime: 2025-06-05 23:40:00 ET\nOpen: $200.73, High: $200.73, Low: $200.73, Close: $200.73\nVolume: 288.0\nTrade Count: 15.0\nVWAP: $200.73\n────────────────────────────────────────\n\nTime: 2025-06-05 23:39:00 ET\nOpen: $200.73, High: $200.73, Low: $200.73, Close: $200.73\nVolume: 1,266.0\nTrade Count: 18.0\nVWAP: $200.73\n────────────────────────────────────────\n\nTime: 2025-06-05 23:36:00 ET\nOpen: $200.73, High: $200.73, Low: $200.73, Close: $200.73\nVolume: 487.0\nTrade Count: 12.0\nVWAP: $200.73\n────────────────────────────────────────\n\nTime: 2025-06-05 23:34:00 ET\nOpen: $200.74, High: $200.74, Low: $200.74, Close: $200.74\nVolume: 183.0\nTrade Count: 11.0\nVWAP: $200.74\n────────────────────────────────────────\n\nTime: 2025-06-05 23:33:00 ET\nOpen: $200.79, High: $200.79, Low: $200.65, Close: $200.67\nVolume: 1,127.0\nTrade Count: 12.0\nVWAP: $200.77\n────────────────────────────────────────\n\nTime: 2025-06-05 23:32:00 ET\nOpen: $200.77, High: $200.79, Low: $200.68, Close: $200.68\nVolume: 437.0\nTrade Count: 18.0\nVWAP: $200.75\n────────────────────────────────────────\n\nTime: 2025-06-05 23:31:00 ET\nOpen: $200.84, High: $200.84, Low: $200.84, Close: $200.84\nVolume: 167.0\nTrade Count: 6.0\nVWAP: $200.84\n────────────────────────────────────────\n\nTime: 2025-06-05 23:30:00 ET\nOpen: $200.90, High: $200.90, Low: $200.70, Close: $200.70\nVolume: 215.0\nTrade Count: 8.0\nVWAP: $200.80\n────────────────────────────────────────\n\nTime: 2025-06-05 23:29:00 ET\nOpen: $200.85, High: $200.86, Low: $200.80, Close: $200.85\nVolume: 2,442.0\nTrade Count: 48.0\nVWAP: $200.84\n────────────────────────────────────────\n\nTime: 2025-06-05 23:28:00 ET\nOpen: $200.84, High: $200.85, Low: $200.84, Close: $200.85\nVolume: 963.0\nTrade Count: 29.0\nVWAP: $200.85\n────────────────────────────────────────\n\nTime: 2025-06-05 23:26:00 ET\nOpen: $200.84, High: $200.84, Low: $200.84, Close: $200.84\nVolume: 254.0\nTrade Count: 9.0\nVWAP: $200.84\n────────────────────────────────────────\n\nTime: 2025-06-05 23:25:00 ET\nOpen: $200.85, High: $200.85, Low: $200.79, Close: $200.84\nVolume: 2,286.0\nTrade Count: 16.0\nVWAP: $200.84\n────────────────────────────────────────\n\nTime: 2025-06-05 23:24:00 ET\nOpen: $200.85, High: $200.85, Low: $200.85, Close: $200.85\nVolume: 428.0\nTrade Count: 15.0\nVWAP: $200.85\n────────────────────────────────────────\n\nTime: 2025-06-05 23:23:00 ET\nOpen: $200.80, High: $200.80, Low: $200.80, Close: $200.80\nVolume: 679.0\nTrade Count: 13.0\nVWAP: $200.80\n────────────────────────────────────────\n\nTime: 2025-06-05 23:21:00 ET\nOpen: $200.78, High: $200.78, Low: $200.78, Close: $200.78\nVolume: 700.0\nTrade Count: 20.0\nVWAP: $200.78\n────────────────────────────────────────\n\nTime: 2025-06-05 23:20:00 ET\nOpen: $200.55, High: $200.61, Low: $200.55, Close: $200.61\nVolume: 430.0\nTrade Count: 18.0\nVWAP: $200.58\n────────────────────────────────────────\n\nTime: 2025-06-05 23:19:00 ET\nOpen: $200.70, High: $200.70, Low: $200.56, Close: $200.56\nVolume: 1,209.0\nTrade Count: 44.0\nVWAP: $200.67\n────────────────────────────────────────\n\nTime: 2025-06-05 23:18:00 ET\nOpen: $200.72, High: $200.72, Low: $200.72, Close: $200.72\nVolume: 484.0\nTrade Count: 37.0\nVWAP: $200.72\n────────────────────────────────────────\n\nTime: 2025-06-05 23:17:00 ET\nOpen: $200.78, High: $200.78, Low: $200.73, Close: $200.73\nVolume: 1,037.0\nTrade Count: 31.0\nVWAP: $200.75\n────────────────────────────────────────\n\nTime: 2025-06-05 23:16:00 ET\nOpen: $200.81, High: $200.81, Low: $200.80, Close: $200.80\nVolume: 888.0\nTrade Count: 25.0\nVWAP: $200.80\n────────────────────────────────────────\n\nTime: 2025-06-05 23:15:00 ET\nOpen: $200.90, High: $200.90, Low: $200.85, Close: $200.85\nVolume: 836.0\nTrade Count: 17.0\nVWAP: $200.89\n────────────────────────────────────────\n\nTime: 2025-06-05 23:14:00 ET\nOpen: $200.85, High: $200.90, Low: $200.85, Close: $200.90\nVolume: 1,353.0\nTrade Count: 10.0\nVWAP: $200.88\n────────────────────────────────────────\n\nTime: 2025-06-05 23:13:00 ET\nOpen: $200.88, High: $200.88, Low: $200.88, Close: $200.88\nVolume: 314.0\nTrade Count: 15.0\nVWAP: $200.88\n────────────────────────────────────────\n\nTime: 2025-06-05 23:12:00 ET\nOpen: $200.90, High: $200.90, Low: $200.90, Close: $200.90\nVolume: 809.0\nTrade Count: 19.0\nVWAP: $200.90\n────────────────────────────────────────\n\nTime: 2025-06-05 23:11:00 ET\nOpen: $200.86, High: $200.95, Low: $200.85, Close: $200.95\nVolume: 520.0\nTrade Count: 18.0\nVWAP: $200.90\n────────────────────────────────────────\n\nTime: 2025-06-05 23:10:00 ET\nOpen: $200.73, High: $200.73, Low: $200.73, Close: $200.73\nVolume: 644.0\nTrade Count: 10.0\nVWAP: $200.73\n────────────────────────────────────────\n\nTime: 2025-06-05 23:09:00 ET\nOpen: $200.87, High: $200.87, Low: $200.85, Close: $200.85\nVolume: 903.0\nTrade Count: 21.0\nVWAP: $200.87\n────────────────────────────────────────\n\nTime: 2025-06-05 23:08:00 ET\nOpen: $200.95, High: $200.98, Low: $200.95, Close: $200.98\nVolume: 1,492.0\nTrade Count: 24.0\nVWAP: $200.97\n────────────────────────────────────────\n\nTime: 2025-06-05 23:07:00 ET\nOpen: $200.97, High: $200.98, Low: $200.96, Close: $200.98\nVolume: 2,363.0\nTrade Count: 25.0\nVWAP: $200.96\n────────────────────────────────────────\n\nTime: 2025-06-05 23:06:00 ET\nOpen: $200.90, High: $200.96, Low: $200.90, Close: $200.96\nVolume: 641.0\nTrade Count: 22.0\nVWAP: $200.95\n────────────────────────────────────────\n\nTime: 2025-06-05 23:04:00 ET\nOpen: $200.90, High: $200.94, Low: $200.89, Close: $200.94\nVolume: 1,601.0\nTrade Count: 31.0\nVWAP: $200.92\n────────────────────────────────────────\n\nTime: 2025-06-05 23:03:00 ET\nOpen: $200.90, High: $200.90, Low: $200.90, Close: $200.90\nVolume: 959.0\nTrade Count: 26.0\nVWAP: $200.90\n────────────────────────────────────────\n\nTime: 2025-06-05 23:01:00 ET\nOpen: $200.80, High: $200.88, Low: $200.80, Close: $200.88\nVolume: 558.0\nTrade Count: 18.0\nVWAP: $200.86\n────────────────────────────────────────\n\nTime: 2025-06-05 23:00:00 ET\nOpen: $200.80, High: $200.80, Low: $200.80, Close: $200.80\nVolume: 381.0\nTrade Count: 25.0\nVWAP: $200.80\n────────────────────────────────────────\n\nTime: 2025-06-05 22:59:00 ET\nOpen: $200.80, High: $200.80, Low: $200.80, Close: $200.80\nVolume: 408.0\nTrade Count: 33.0\nVWAP: $200.80\n────────────────────────────────────────\n\nTime: 2025-06-05 22:57:00 ET\nOpen: $200.80, High: $200.80, Low: $200.80, Close: $200.80\nVolume: 226.0\nTrade Count: 25.0\nVWAP: $200.80\n────────────────────────────────────────\n\nTime: 2025-06-05 22:56:00 ET\nOpen: $200.81, High: $200.81, Low: $200.81, Close: $200.81\nVolume: 713.0\nTrade Count: 15.0\nVWAP: $200.81\n────────────────────────────────────────\n\nTime: 2025-06-05 22:55:00 ET\nOpen: $200.73, High: $200.73, Low: $200.73, Close: $200.73\nVolume: 303.0\nTrade Count: 13.0\nVWAP: $200.73\n────────────────────────────────────────\n\nTime: 2025-06-05 22:52:00 ET\nOpen: $200.81, High: $200.81, Low: $200.81, Close: $200.81\nVolume: 4,104.0\nTrade Count: 18.0\nVWAP: $200.81\n────────────────────────────────────────\n\nTime: 2025-06-05 22:50:00 ET\nOpen: $200.80, High: $200.81, Low: $200.76, Close: $200.81\nVolume: 2,593.0\nTrade Count: 40.0\nVWAP: $200.80\n────────────────────────────────────────\n\nTime: 2025-06-05 22:49:00 ET\nOpen: $200.77, High: $200.80, Low: $200.72, Close: $200.80\nVolume: 3,556.0\nTrade Count: 50.0\nVWAP: $200.78\n────────────────────────────────────────\n\nTime: 2025-06-05 22:46:00 ET\nOpen: $200.79, High: $200.79, Low: $200.79, Close: $200.79\nVolume: 217.0\nTrade Count: 12.0\nVWAP: $200.79\n────────────────────────────────────────\n\nTime: 2025-06-05 22:44:00 ET\nOpen: $200.80, High: $200.80, Low: $200.80, Close: $200.80\nVolume: 717.0\nTrade Count: 15.0\nVWAP: $200.80\n────────────────────────────────────────\n\nTotal bars retrieved: 60”}],“isError”:false}

● alpaca:get_stock_bars_intraday (MCP)(symbol: “AAPL”, timeframe: “1Min”, limit: 60)
⎿ Intraday 1Min Bars for AAPL:
Period: 2025-06-05 to 2025-06-05
alpaca:get_stock_bars_intraday (MCP)(symbol: “AAPL”, timeframe: “1Min”, limit: 60)
⎿ Intraday 1Min Bars for AAPL:
Period: 2025-06-05 to 2025-06-05

I will push the changes to the Alpaca Github repository and generate a PR. I want to add some more functionality first.