alpaca-mcp-server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PAPER | No | Set to False to enable live trading with real funds (default is True for paper trading) | True |
| ALPACA_API_KEY | Yes | Your Alpaca API key for paper or live account | |
| ALPACA_SECRET_KEY | Yes | Your Alpaca secret key for paper or live account |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| place_stock_orderB | Place a stock or ETF order. |
| place_crypto_orderC | Place a cryptocurrency order. |
| place_option_orderA | Place an options order (single-leg or multi-leg). For single-leg orders, provide symbol, side, and qty. For multi-leg orders, provide qty, legs, and optionally order_class="mleg" (auto-inferred). Symbol and side on the parent are not needed for multi-leg. |
| get_stock_barsA | Retrieve historical price bars (OHLCV) for one or more stocks. When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback. |
| get_stock_quotesA | Retrieve historical bid/ask quotes (level 1) for one or more stocks. When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback. |
| get_stock_tradesA | Retrieve historical trade data for one or more stocks. When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback. |
| get_crypto_barsA | Retrieve historical price bars (OHLCV) for one or more cryptocurrencies. When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback. |
| get_crypto_quotesA | Retrieve historical bid/ask quotes for one or more cryptocurrencies. When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback. |
| get_crypto_tradesA | Retrieve historical trade data for one or more cryptocurrencies. When start is omitted, it is automatically computed as now minus the days/hours/minutes lookback. |
| search_alpaca_docsA | Search Alpaca documentation pages and guides. Use for conceptual or product questions about setup, account rules, funding, trading, market data, events, or FAQs. Read-only; not for exact API method/path lookup; prefer search_alpaca_api_specs for endpoint, parameter, or schema questions. |
| fetch_alpaca_docA | Fetch one Alpaca ReadMe documentation page by page ID. Use after search_alpaca_docs returns a relevant page ID, or when a page ID is already known. Read-only; not for API endpoint lookup by method and path. |
| search_alpaca_api_specsA | Search Alpaca API reference endpoints by topic, operation, path fragment, parameter, or schema term. Use when the exact method and path are unknown. Read-only; does not execute endpoints; searches Trading API, Market Data API, and Authentication API only; excludes Broker API. Use |
| list_alpaca_api_endpointsA | List endpoints for one allowed Alpaca OpenAPI spec. Use when browsing the available endpoint inventory for Trading API, Market Data API, or Authentication API before narrowing to a specific endpoint. Read-only; excludes Broker API; prefer search_alpaca_api_specs for targeted lookup. |
| get_alpaca_endpoint_docsA | Fetch reference docs for one exact Alpaca API endpoint by method and path. Use when the endpoint is already resolved and details such as parameters, request shape, responses, or examples are needed. Read-only; does not execute the endpoint; excludes Broker API. |
| get_locatesB | Returns locate requests for the account, filtered by status, symbol, or date range. Results are sorted by creation date descending. |
| create_locateA | Creates a locate request for a short sale. Requires a symbol and quantity. Optionally set a limit price and all-or-none flag. |
| get_locateB | Returns a single locate request by its ID. |
| get_locate_quotesA | Returns locate availability and pricing for one or more symbols. Provide a comma-separated list of symbols. |
| get_account_infoA | Retrieves and formats the current account information including balances and status. |
| get_account_activitiesB | Returns a list of account activities such as fills, dividends, and transfers. |
| get_account_activities_by_typeC | Returns account activity entries for a specific type of activity. |
| get_account_configA | Retrieves the current account configuration settings, including trading restrictions, margin settings, PDT checks, and options trading level. |
| update_account_configA | Updates one or more account configuration settings. Only the fields you provide will be changed; all others retain their current values. |
| get_portfolio_historyC | Retrieves account portfolio history (equity and P/L) over a requested time window. |
| get_all_assetsA | Get all available assets with optional filtering. WARNING: The unfiltered response is very large (thousands of assets). Always narrow results with the status, asset_class, or exchange parameters. To look up a single asset, use get_asset instead. |
| get_assetB | Retrieves and formats detailed information about a specific asset. |
| get_calendarA | Retrieves and formats market calendar for specified date range. WARNING: Always provide start and end dates (YYYY-MM-DD). Without date bounds the response contains the entire multi-year calendar and will be extremely large. |
| get_clockA | Retrieves and formats current market status and next open/close times. |
| get_corporate_action_announcementsA | Retrieves corporate action announcements (dividends, mergers, splits, spinoffs). Use a narrow date range and filter by symbol when possible — broad queries can return very large responses. |
| get_corporate_action_announcementA | Retrieves a single corporate action announcement by ID. |
| get_option_contractsC | Retrieves option contracts for underlying symbol(s). |
| get_option_contractA | Retrieves a single option contract by symbol or contract ID. |
| get_ordersC | Retrieves and formats orders with the specified filters. |
| cancel_all_ordersA | Cancel all open orders. |
| get_order_by_idA | Retrieves a single order by its ID. |
| cancel_order_by_idA | Cancel a specific order by its ID. |
| replace_order_by_idB | Replaces an existing open order with updated parameters. At least one optional field must be provided. |
| get_order_by_client_idA | Retrieves a single order specified by the client order ID. Note: if the order was replaced, this returns the original order (status "replaced") with a replaced_by field pointing to the new order ID. |
| get_all_positionsA | Retrieves all current positions in the portfolio as JSON. |
| close_all_positionsA | Closes all open positions by placing sell orders for each. If the market is closed, the sell orders will remain queued and execute at the next market open. |
| get_open_positionB | Retrieves and formats details for a specific open position. |
| close_positionA | Closes a specific position for a single symbol by placing a sell order. If the market is closed, the sell order will remain queued and execute at the next market open. |
| do_not_exercise_options_positionB | Submits a do-not-exercise instruction for a held option contract. |
| exercise_options_positionA | Exercises a held option contract, converting it into the underlying asset. |
| get_watchlistsA | Get all watchlists for the account. |
| create_watchlistA | Creates a new watchlist with specified symbols. |
| get_watchlist_by_idA | Get a specific watchlist by its ID. |
| update_watchlist_by_idA | Update an existing watchlist. IMPORTANT: this replaces the entire watchlist. You must include the symbols parameter with the full list of desired symbols, otherwise all assets will be removed. |
| add_asset_to_watchlist_by_idA | Add an asset by symbol to a specific watchlist. |
| delete_watchlist_by_idA | Delete a specific watchlist by its ID. |
| remove_asset_from_watchlist_by_idA | Remove an asset by symbol from a specific watchlist. |
| get_fixed_income_latest_quotesA | Returns the latest quotes for fixed income securities (bonds, treasuries). Provide a comma-separated list of ISINs (e.g. 'US912797SX61,US912810SK51'). Returns bid/ask prices, sizes, and yield-to-maturity for each security. |
| get_newsA | Retrieves news articles for stocks and crypto. Filter by symbols, date range, and sort order. Returns headlines, summaries, URLs, and associated ticker symbols. |
| get_option_barsB | Retrieves historical bar (OHLCV) data for one or more option contracts. |
| get_option_exchange_codesA | Retrieves the mapping of exchange codes to exchange names for option market data. Useful for interpreting exchange fields returned by other option data tools. |
| get_option_latest_quoteA | Retrieves and formats the latest quote for one or more option contracts including bid/ask prices, sizes, and exchange information. |
| get_option_snapshotA | Retrieves comprehensive snapshots of option contracts including latest trade, quote, implied volatility, and Greeks. |
| get_option_chainA | Retrieves option chain data for an underlying symbol, including latest trade, quote, implied volatility, and greeks for each contract. The response can be very large. Use the type (call/put), strike_price_gte/lte, expiration_date, and limit parameters to narrow results. |
| get_option_tradesB | Retrieves historical trade data for one or more option contracts. |
| get_option_latest_tradeB | Retrieves the latest trade for one or more option contracts. |
| get_market_moversA | Returns the top market movers (gainers and losers) based on real-time SIP data. |
| get_most_active_stocksB | Screens the market for most active stocks by volume or trade count. |
| get_crypto_latest_barA | Returns the latest minute bar for one or more crypto symbols. The loc parameter is required — always set loc to "us". |
| get_crypto_latest_orderbookA | Returns the latest orderbook for one or more crypto symbols. The loc parameter is required — always set loc to "us". Note: the response includes the full order book depth and can be large. |
| get_crypto_latest_quoteA | Returns the latest quote for one or more crypto symbols. The loc parameter is required — always set loc to "us". |
| get_crypto_latest_tradeA | Returns the latest trade for one or more crypto symbols. The loc parameter is required — always set loc to "us". |
| get_crypto_snapshotB | Returns a snapshot for one or more crypto symbols including latest trade, quote, minute bar, daily bar, and previous daily bar. The loc parameter is required — always set loc to "us". |
| get_corporate_actionsC | Retrieves and formats corporate action announcements. |
| get_stock_latest_barB | Get the latest minute bar for one or more stocks. |
| get_stock_latest_quoteC | Retrieves and formats the latest quote for one or more stocks. |
| get_stock_snapshotA | Retrieves comprehensive snapshots of stock symbols including latest trade, quote, minute bar, daily bar, and previous daily bar. |
| get_stock_latest_tradeB | Get the latest trade for one or more stocks. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 72 tools
Most tools partition cleanly by asset class and data type, but several overlapping pairs create ambiguity: get_corporate_actions vs. get_corporate_action_announcements, get_option_contracts vs. get_option_chain, and historical get_stock_quotes/get_crypto_quotes vs. the get_*_latest_quote tools. The descriptions clarify intent, but the tool names alone would often make selection error-prone.
The set predominantly follows a get_<resource> pattern with clear action prefixes like place_, cancel_, update_, delete_, and create_, making the convention easy to learn. Deviations include get_corporate_actions versus get_corporate_action_announcement(s) and historical quote tools that omit "historical" in their names, but there is no style mixing such as camelCase.
With 72 tools, this server far exceeds both the 25+ "too many" threshold and the 50+ "extreme mismatch" threshold. The Alpaca domain is broad and most tools are distinct, but exposing this many tools in one MCP server makes tool selection expensive and overwhelming for an agent.
The tool surface is highly comprehensive, covering account, orders, positions, watchlists, assets, market data for stocks/crypto/options/fixed income, news, calendar, corporate actions, locates, and API documentation. Order lifecycle and watchlist CRUD are complete, and there are no obvious dead ends in core workflows.