stockdata-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FMP_API_KEY | Yes | Required for the fmp_* tools. Financial Modeling Prep API key. | |
| FMP_MIN_INTERVAL | No | Minimum seconds between FMP requests. | 0.1 |
| QUALTRIM_PASSWORD | No | Qualtrimm password. Enables the qualtrim_* tools. Optional. | |
| QUALTRIM_USERNAME | No | Qualtrimm username. Enables the qualtri_* tools. Optional. | |
| MAX_RESPONSE_CHARS | No | Trim oversized tool payloads. | 50000 |
| FMP_QUALTRIM_ENV_FILE | No | Alternate path to the env file. | ./.env |
| QUALTRIM_MIN_INTERVAL | No | Minimum seconds between Qualtrim requests. | 1.0 |
| QUALTRIM_ENABLE_WRITES | No | Allow tools that modify your portfolios/watchlists. Set to 'true' to enable writes. | false |
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 |
|---|---|
| fmp_searchA | Find a ticker symbol by symbol fragment or company name. Args: query: A symbol fragment ("AAP") or company name ("Apple"). limit: Max results. exchange: Optional exchange filter, e.g. "NASDAQ". |
| fmp_profileC | Company profile: sector, industry, market cap, description, exchange, CEO. |
| fmp_quoteA | Current quote for one or more symbols. Args: symbols: One symbol, or several comma-separated ("AAPL,MSFT,NVDA"). short: Return only price/volume rather than the full quote. |
| fmp_peersC | Comparable companies for a symbol, as identified by FMP. |
| fmp_income_statementC | Income statements. Use limit to control how many periods come back. |
| fmp_balance_sheetD | Balance sheet statements. |
| fmp_cash_flowD | Cash flow statements. |
| fmp_key_metricsC | Per-share and valuation metrics: P/E, EV/EBITDA, ROIC, FCF per share, etc. Args: ttm: Return trailing-twelve-month values instead of discrete periods. |
| fmp_ratiosC | Financial ratios: margins, liquidity, leverage, returns, payout. |
| fmp_financial_growthC | Period-over-period growth rates across the three statements. |
| fmp_financial_scoresB | Altman Z-score and Piotroski F-score for a symbol. |
| fmp_revenue_segmentationB | Revenue split by product line or by geography. |
| fmp_enterprise_valuesC | Enterprise value, market cap, and net debt over time. |
| fmp_analyst_estimatesC | Forward analyst estimates for revenue, EPS, EBITDA and net income. |
| fmp_price_targetB | Analyst price-target summary and consensus, plus the current rating snapshot. |
| fmp_gradesC | Analyst upgrades and downgrades, or the consensus grade distribution. |
| fmp_dcfB | FMP's discounted cash flow valuation for a symbol. Args: levered: Use the levered (post-debt) DCF instead of the standard one. |
| fmp_dividendsB | Dividend history for a symbol: declaration, record, payment dates and amounts. |
| fmp_earningsB | Earnings history and upcoming dates: actual vs estimated EPS and revenue. |
| fmp_earnings_calendarB | Market-wide earnings calendar over a date range (YYYY-MM-DD). |
| fmp_historical_pricesA | Historical OHLCV data. Args: symbol: Ticker, index (^GSPC), crypto (BTCUSD) or FX pair (EURUSD). from_date: Start date, YYYY-MM-DD. Strongly recommended — without it you get the full history, which is large. to_date: End date, YYYY-MM-DD. interval: "1day" for end-of-day, otherwise an intraday bar size. full: For daily data, include change/VWAP columns rather than the light form. |
| fmp_technical_indicatorD | A technical indicator series — useful for backtesting signal ideas. |
| fmp_screenerB | Screen for stocks matching fundamental and market filters. Call fmp_reference("sectors") or fmp_reference("industries") first if you need the exact spelling of a sector or industry value. |
| fmp_referenceA | Look up the valid values for screener filters, or an index's constituents. |
| fmp_market_moversA | Today's biggest gainers, biggest losers, or most actively traded names. |
| fmp_sector_performanceB | Sector performance, or sector P/E ratios, as of a date (YYYY-MM-DD). |
| fmp_insider_tradingC | Insider transactions for a symbol, or aggregate insider buy/sell statistics. |
| fmp_newsA | Recent news articles for one or more comma-separated symbols. |
| fmp_requestA | Call any FMP stable endpoint directly — an escape hatch for the ~250 endpoints without a dedicated tool here (ETF holdings, 13F, senate trades, economic indicators, SEC filings, transcripts, and so on). Args: endpoint: Path after /stable/, e.g. "etf/holdings" or "treasury-rates". params: Query parameters, e.g. {"symbol": "SPY"}. The API key is added automatically. |
| usage_statusA | Upstream requests spent today, what remains, and when the budget resets. Counts requests that actually left this machine — cache hits are free and
are reported separately as |
| estimate_costA | Say what a set of tool calls will cost upstream before running them. The tool-to-request ratio is not 1:1 — fmp_search issues two requests, fmp_price_target three, and fmp_quote falls back to one per symbol on a free key. Cached legs cost nothing. Use this before a multi-step analysis, or whenever a plan touches many symbols. Args: calls: Tool calls to price, e.g. [{"tool": "fmp_profile", "args": {"symbol": "AAPL"}}, {"tool": "fmp_quote", "args": {"symbols": "AAPL,MSFT,NVDA"}}] Returns per-call worst-case requests, how many legs are already cached, and the net spend against today's remaining budget. |
| cache_clearA | Drop cached responses. Use when data looks stale despite its TTL. "expired" (the default) only removes entries already past their TTL and is always safe. Clearing live entries means paying for those requests again — note that past price bars never expire by design, because they cannot change. |
| backend_statusA | Report which backends are configured and how this server is set up. |
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 33 tools
Most tools map cleanly to a distinct data category, and the fmp_ prefixes help separate market data, fundamentals, analyst data, and utilities. A few analyst-related tools and the key_metrics/ratios pair overlap enough that an agent must read the descriptions carefully to pick the right one.
All data tools follow a consistent fmp_<category> snake_case pattern, making the group recognizable and predictable. The operational tools like usage_status and cache_clear break the prefix convention, but they are still readable and clearly grouped, so the deviation is minor.
At 33 tools, the server exceeds the 25+ threshold and presents a heavy surface for an agent to navigate. Many fundamental and analyst tools could be consolidated, and fmp_request already provides a catch-all for less common FMP endpoints.
The set covers the core market-data workflow thoroughly: quotes, historical prices, fundamentals, financial statements, dividends, earnings, analyst data, screening, news, and insider trades. The fmp_request escape hatch also covers any remaining FMP endpoints, so there are no obvious dead ends.