stock-research-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ALPACA_PAPER | No | Set to 'true' for paper trading, 'false' for live trading | true |
| ALPACA_API_KEY | No | API key for Alpaca trading (optional) | |
| FINNHUB_API_KEY | Yes | API key for Finnhub (required for company profiles, news, etc.) | |
| ALPACA_SECRET_KEY | No | Secret key for Alpaca trading (optional) | |
| ALPHA_VANTAGE_API_KEY | Yes | API key for Alpha Vantage (required for market data) | |
| TRADING_ALLOWED_SYMBOLS | No | Comma-separated list of allowed symbols, empty for all | |
| TRADING_MAX_ORDER_VALUE | No | Maximum order value for trading | 5000 |
| TRADING_MAX_POSITION_SIZE | No | Maximum position size | 10000 |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_quoteA | Get real-time quote for a stock. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') Returns: Quote data including price, change, volume, and more. |
| get_historical_pricesA | Get historical price data for a stock. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') timeframe: Time range - '1D', '1W', '1M', '3M', '1Y', '5Y' interval: Data interval - '1min', '5min', '15min', '30min', '60min', '1day' Returns: Historical OHLCV data as a list of candles. |
| get_company_profileA | Get company profile and overview. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') Returns: Company profile including name, sector, industry, description, etc. |
| get_financialsA | Get key financial metrics and ratios. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') Returns: Financial metrics including valuation ratios, margins, growth rates. |
| get_earningsA | Get earnings history and upcoming earnings date. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') Returns: Earnings data including quarterly history and surprises. |
| get_analyst_ratingsA | Get analyst ratings and price targets for a stock. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') Returns: Analyst consensus, rating counts, and price targets. |
| get_news_sentimentA | Get news articles and sentiment analysis for a stock. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') limit: Maximum number of articles to return (default 20) Returns: News articles with sentiment scores and overall sentiment summary. |
| get_insider_tradesA | Get insider trading activity for a stock. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') Returns: Recent insider transactions and overall insider sentiment. |
| get_technical_indicatorsA | Get technical indicators for a stock. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') indicators: List of indicators to fetch. Options: 'sma', 'ema', 'rsi', 'macd', 'bbands'. If None, fetches all. Returns: Technical indicator values and trend analysis. |
| get_support_resistanceB | Calculate support and resistance levels for a stock. Args: ticker: Stock symbol (e.g., 'AAPL', 'MSFT') lookback_days: Number of days to analyze (default 60) Returns: Support and resistance levels with current price position. |
| get_macro_contextA | Get current macroeconomic indicators and context. Returns: Key economic indicators including Fed funds rate, treasury yields, GDP growth, unemployment, and inflation (CPI). |
| get_trading_accountA | Get trading account information. Returns account details including:
|
| get_positionsA | Get all open positions in the portfolio. Returns a list of positions with:
|
| get_positionA | Get position for a specific symbol. Args: symbol: Stock symbol (e.g., 'AAPL') Returns position details or null if no position exists. |
| place_market_orderA | Place a market order to buy or sell shares. Args: symbol: Stock symbol (e.g., 'AAPL') qty: Number of shares to trade side: 'buy' or 'sell' time_in_force: Order duration - 'day', 'gtc' (good till cancelled), 'ioc' (immediate or cancel), 'fok' (fill or kill) Returns order confirmation with order ID and status. Note: Market orders execute at the current market price. Use limit orders for price control. |
| place_limit_orderA | Place a limit order at a specified price. Args: symbol: Stock symbol (e.g., 'AAPL') qty: Number of shares to trade side: 'buy' or 'sell' limit_price: Maximum price (buy) or minimum price (sell) time_in_force: 'day', 'gtc', 'ioc', 'fok' Returns order confirmation. Order will only fill at limit_price or better. |
| place_stop_orderA | Place a stop order that triggers at a specified price. Args: symbol: Stock symbol (e.g., 'AAPL') qty: Number of shares to trade side: 'buy' or 'sell' stop_price: Price at which the order becomes a market order time_in_force: 'day' or 'gtc' Useful for stop-loss orders to limit downside risk. |
| place_stop_limit_orderA | Place a stop-limit order combining stop and limit orders. Args: symbol: Stock symbol (e.g., 'AAPL') qty: Number of shares to trade side: 'buy' or 'sell' stop_price: Price at which the limit order is triggered limit_price: Limit price for the triggered order time_in_force: 'day' or 'gtc' When stop_price is reached, a limit order at limit_price is placed. |
| get_orderA | Get details of a specific order by ID. Args: order_id: The order ID returned when placing an order Returns order status, fill details, and timestamps. |
| get_ordersA | Get a list of orders with optional filters. Args: status: Filter by status - 'open', 'closed', or 'all' limit: Maximum number of orders to return (default 50) symbol: Filter by stock symbol (optional) Returns list of orders matching the criteria. |
| cancel_orderC | Cancel an open order. Args: order_id: The order ID to cancel Returns confirmation of cancellation. |
| cancel_all_ordersA | Cancel all open orders. Use with caution - this will cancel ALL pending orders. Returns count of cancelled orders. |
| close_positionA | Close an entire position for a symbol. Args: symbol: Stock symbol to close position for Places a market order to sell (for long) or buy (for short) all shares of the position. |
| close_all_positionsA | Close all open positions. Use with extreme caution - this will liquidate your entire portfolio. Also cancels all open orders. Returns count of positions closed. |
| get_trading_configA | Get current trading configuration and risk limits. Returns:
|
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 25 tools
Research tools are clearly separated by data type, and order tools are distinct by order type. The only mild ambiguity is between get_trading_account and get_trading_config, and between get_positions/get_position, though singular/plural helps.
Tool names follow a consistent verb_noun pattern: get_* for data retrieval, place_* for order entry, cancel_* for cancellations, and close_* for position liquidation. There are no mixed naming conventions or vague verbs.
25 tools is at the heavy end, especially since the server mixes research functionality with a fairly complete trading execution suite. The count is not unreasonable, but the scope feels broader than the 'stock-research-mcp' name suggests.
Research coverage is strong: quotes, history, fundamentals, technicals, sentiment, insider trades, and macro context are all present. Trading coverage is also solid with order placement, retrieval, cancellation, and position management, though order modification is missing.