marketdata-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FINVIZ_TIMEOUT | No | HTTP timeout in seconds for finviz.com requests. | 25 |
| FINVIZ_CACHE_TTL | No | Scraped-page cache lifetime in seconds. | 30 |
| FINVIZ_CHART_DIR | No | Directory where chart PNG files are written. | ~/.marketdata-mcp/charts |
| MARKETAUX_API_TOKEN | No | API token that enables news and sentiment data from the TradingView leg. | |
| MARKETDATA_HEALTH_TTL | No | Seconds a cached health verdict is reused. | 60 |
| MARKETDATA_HEALTH_STATE | No | Path to the health baseline state file. | ~/.marketdata-mcp/health_state.json |
| MARKETDATA_HEALTH_ENABLED | No | Turn the upstream drift monitor on or off. | true |
| MARKETDATA_HEALTH_INTERVAL | No | Seconds between background health probe rounds. | 300 |
| TRADINGVIEW_MCP_MIN_INTERVAL_S | No | Minimum spacing in seconds between TradingView scanner requests. | 0.25 |
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 |
|---|---|
| stock_quoteA | Dual-sourced quote and fundamentals for one US ticker. Asks TradingView (scanner + Yahoo quote engine) and Finviz in parallel for price, change, previous close, 52-week range, P/E, RSI and volume, compares them, and returns the merged result. Finviz's deeper fundamentals — the 84-field snapshot, company profile, peers and after-hours print — ride along, each labelled with the provider that supplied it. Args:
symbol: Ticker as written for either source ( Returns:
Envelope whose |
| stock_pricesA | Dual-sourced prices for several tickers at once. Each ticker is looked up on both TradingView's scanner and Finviz's
screener; the per-row Args:
tickers: Comma-separated symbols, e.g. Returns:
Envelope whose |
| stock_screenerA | Run the US stock screener on both providers and cross-check the rows. TradingView ranks the entire market server-side ( Args:
country: TradingView market ( Returns:
Envelope with |
| market_indicesA | Dual-sourced level and day change for the major US indices. Covers S&P 500, Dow, Nasdaq Composite, Russell 2000 and VIX. Finviz and TradingView/Yahoo use different tickers for the same index; they are mapped to one canonical name before comparison. Returns:
Envelope whose |
| stock_newsA | Dual-sourced headlines for one ticker. Finviz supplies headlines with the price reaction around each item (the day-of move and, when the story broke after the close, the next session's move). TradingView's side is the provider's licensed news feed. Headline titles are matched across both to report overlap. Args: symbol: Ticker. limit: Maximum headlines per provider. include_reactions: Ask Finviz for price-reaction columns. Returns:
Envelope with |
| stock_options_chainA | Dual-sourced options chain for one expiry. Finviz and the TradingView provider's Yahoo options endpoint are both queried. Contracts are matched by strike and their volume/open-interest compared, so an agent can see whether the two sources agree on open positioning. Args:
symbol: Underlying ticker.
expiry: Returns:
Envelope with |
| stock_earningsA | Dual-sourced earnings calendar and history for one ticker. Finviz owns the detailed tables (reported quarters, estimate revisions, fundamental series, post-earnings reactions); TradingView's scanner confirms the next/last earnings timestamp. The two dates are compared and reported. Args: symbol: Ticker. Returns:
Envelope with |
| stock_extended_hoursA | Dual-sourced pre-/post-market price for a US stock. Finviz exposes the after-hours print on the quote page; the TradingView provider derives pre/regular/post prices from 1-minute Yahoo candles. The after-hours price and change are compared. Args: symbol: Ticker. Returns:
Envelope with |
| technical_analysisB | Technical analysis with the key readings cross-checked against Finviz. TradingView computes the full indicator stack (RSI, MACD, EMAs, Bollinger, ATR, ADX, structure, trade setup). Finviz's snapshot independently provides price, RSI(14), ATR(14) and the 52-week range, which are compared here. Args:
symbol: Ticker.
exchange: TradingView exchange prefix ( Returns:
Envelope whose |
| stock_filingsA | SEC filing history for a ticker (Finviz-only, single-source). TradingView has no filing feed, so this capability cannot be cross-verified.
The response is labelled Args:
symbol: Ticker.
page: 1-based page.
page_size: Rows per page (1-100).
forms: Optional SEC form filter, e.g. Returns:
Envelope with the filing rows plus |
| stock_ownershipA | Insider trades, institutional holders and short interest (Finviz-only). Combines three Finviz datasets that no other provider here offers: Form-4 insider transactions with monthly buy/sell aggregates, institutional positions, and FINRA short-interest history. Args: symbol: Ticker. limit: Max rows per table. Returns:
Envelope labelled |
| stock_peersB | Finviz peer group for a ticker (Finviz-only, single-source). Args: symbol: Ticker. limit: Maximum peers. Returns:
Envelope labelled |
| stock_why_movingB | Finviz's own explainer for why a ticker moved (Finviz-only). Args: symbol: Ticker. Returns:
Envelope labelled |
| stock_chartA | Rendered PNG candlestick chart for a ticker (Finviz-only). TradingView's provider computes charts as text analysis, not images, so a PNG is Finviz-only and labelled as such. Args:
symbol: Ticker.
period: Returns:
Envelope labelled |
| stock_dilutionB | Dilution-risk model: share count, float and cash runway (Finviz-only). Args: symbol: Ticker. Returns:
Envelope labelled |
| stock_screener_filtersB | Finviz's full screener filter catalogue (Finviz-only). Returns:
Envelope labelled |
| crypto_top_moversA | Top crypto gainers or losers on an exchange (TradingView-only). Args:
movement: Returns:
Envelope labelled |
| crypto_bollinger_scanA | Bollinger-band squeeze candidates (TradingView-only). Args: exchange: TradingView venue. timeframe: TradingView interval. bbw_threshold: Maximum band-width to qualify as a squeeze. limit: Rows to return. Returns:
Envelope labelled |
| crypto_volume_breakoutC | Volume + price breakout scanner (TradingView-only). Args: exchange: TradingView venue. timeframe: TradingView interval. volume_multiplier: Minimum relative volume. price_change_min: Minimum absolute % change. limit: Rows to return. Returns:
Envelope labelled |
| crypto_multi_timeframeB | Multi-timeframe technical read for a crypto symbol (TradingView-only). Args:
symbol: Coin symbol ( Returns:
Envelope labelled |
| crypto_multi_agentC | Multi-agent bull/bear debate over a crypto symbol (TradingView-only). Args: symbol: Coin symbol. exchange: TradingView venue. timeframe: TradingView interval. Returns:
Envelope labelled |
| futures_market_overviewB | Futures contracts ranked by volume (TradingView-only). Args:
category: Returns:
Envelope labelled |
| futures_top_moversB | Futures gainers/losers by percent change (TradingView-only). Args:
movement: Returns:
Envelope labelled |
| futures_watchlistC | Curated futures watchlist with levels (TradingView-only). Returns:
Envelope labelled |
| stock_backtestA | Backtest a strategy on a symbol (TradingView-only, single-source). Finviz has no OHLCV history endpoint, so this cannot be cross-verified. The
response is labelled Args:
symbol: Ticker or coin.
strategy: One of Returns:
Envelope labelled |
| stock_backtest_compareB | Compare every strategy on one symbol (TradingView-only). Args: symbol: Ticker. period: Lookback period. initial_capital: Starting cash. Returns:
Envelope labelled |
| market_snapshotA | Global FX, crypto, index and ETF snapshot (TradingView-only). Finviz covers only the four US indices, so the broad snapshot is
single-source. Use Returns:
Envelope labelled |
| bitcoin_market_pulseC | Bitcoin market health: trend, dominance proxies and volatility. Returns:
Envelope labelled |
| market_sentimentA | News-based sentiment for a symbol, with no API key required. Prefers the licensed Marketaux entity sentiment when Args: symbol: Ticker. category: News category (used by the Marketaux path only). limit: Headlines to analyse. Returns:
Envelope labelled |
| egx_market_overviewC | Egyptian Exchange overview (TradingView-only). Returns:
Envelope labelled |
| combined_analysisA | Technical analysis, news and sentiment in one call, cross-checked on price. Runs the TradingView technical read plus news sentiment, then pulls Finviz's
latest close to confirm the price the analysis was built on. This is the one
composite that can legitimately return Sentiment needs no API key: Marketaux is used when Args: symbol: Ticker. exchange: TradingView exchange prefix. timeframe: TradingView interval. Returns:
Envelope with |
| tapebasis_healthA | Probe both upstreams and report whether either provider's API drifted. Every other tool reads the cached verdict from this monitor and adds a
warning when a provider's upstream schema has changed or is down. Call this
with Args: refresh: Force fresh probes instead of using the cached verdict. Returns:
Envelope whose |
| tapebasis_tool_mapA | List every tool, which providers back it, and how it is cross-checked. Useful for an agent that needs to know whether a given capability is
dual-sourced ( |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| providers_resource | Explain what each data_provider value means for a caller. |
| health_resource | Cached provider health verdict (no upstream call). |
TDQS
Scored across 33 tools
Most tools have distinct resource and action scopes, with descriptions carefully distinguishing single- versus multi-ticker queries, providers, and cross-verification. Some ambiguity remains among technical_analysis, combined_analysis, and crypto_multi_timeframe, as well as among stock_news, market_sentiment, and stock_why_moving.
All tools use lowercase snake_case and a predictable domain-or-resource-plus-capability convention. Related families such as stock_*, crypto_*, futures_*, market_*, and tapebasis_* are consistently formed without mixed casing or verb styles.
At 33 tools, the surface exceeds the 25-tool threshold for an overlarge tool set, even allowing for the broad market-data domain. Narrow crypto scanners, specialized stock analytics, and composite tools create substantial selection overhead and offer opportunities for consolidation.
Coverage is extensive for read-only market data and analysis, spanning quotes, screening, options, news, filings, technical analysis, backtesting, and provider health. The main gaps are general historical OHLCV/candle retrieval and straightforward single-instrument quote workflows for crypto and futures, but these do not undermine the core stock workflows.