Labsco
MCP SERVER

Finviz MCP Server

by tradermonty

Screen US equities on Finviz from a conversation — earnings dates, volume surges, trend reversals, dividend growth, ETFs — then pull fundamentals, SEC filings and sector performance for whatever comes back.

Equity & Fund Market Data
Summary
One tool per screening strategy, which is what makes it usable from a chat.

Asking for "large caps reporting after the close today with a positive EPS revision" maps onto a named tool with named parameters, so the model does not have to reconstruct Finviz's filter syntax. The price of admission is the Finviz Elite subscription; the EDGAR filing-content tools also stay silent until you set a User-Agent string of your own.

What it is

An MCP server over Finviz's screener and data pages, aimed at equity research rather than order entry. Each screening strategy is its own tool with real filter parameters — earnings timing, market cap, relative volume, RSI, moving-average position — instead of one generic screen call you have to spell out. Separate tools return per-ticker fundamentals, news, SEC filings, and sector, industry and country performance. It runs over stdio by default and can serve SSE or Streamable HTTP in a container.

What you get
  • Stocks screened by upcoming or just-reported earnings, including the premarket and after-hours reaction — `earnings_screener`, `earnings_premarket_screener`, `earnings_afterhours_screener`, `earnings_trading_screener`, `earnings_winners_screener`, `upcoming_earnings_screener`
  • Unusual-volume, trend-reversal and uptrend candidates filtered by market cap, price, relative volume and moving-average position — `volume_surge_screener`, `trend_reversion_screener`, `uptrend_screener`, `get_relative_volume_stocks`, `technical_analysis_screener`
  • Dividend and ETF screens with yield range, dividend growth, ROE, asset class and expense-ratio limits — `dividend_growth_screener`, `etf_screener`
  • Fundamentals for a single ticker or a list, returning only the fields you name — `get_stock_fundamentals`, `get_multiple_stocks_fundamentals`
  • SEC filings for a ticker: everything, major forms only, insider forms only, or a period summary — `get_sec_filings`, `get_major_sec_filings`, `get_insider_sec_filings`, `get_sec_filing_summary`
  • Sector, industry, country and market-cap performance across 1d to 1y, plus a whole-market overview — `get_sector_performance`, `get_industry_performance`, `get_country_performance`, `get_capitalization_performance`, `get_sector_specific_industry_performance`, `get_market_overview`
  • News windows for one ticker, one sector, or the market — `get_stock_news`, `get_sector_news`, `get_market_news`
  • Distance from the 20-, 50- and 200-day SMAs in a single call — `get_moving_average_position`
Requirements

Python 3.11 or higher, and a Finviz Elite subscription — the README states the comprehensive screening and data features depend on it. `FINVIZ_API_KEY` carries the Elite key and raises rate limits; `RATE_LIMIT_REQUESTS_PER_MINUTE` defaults to 100. Install from a clone with `pip install -e .`; the pyproject (version 1.0.0) publishes the `finviz-mcp-server` command, which starts in stdio mode. The EDGAR tools — `get_edgar_filing_content`, `get_multiple_edgar_filing_contents`, `get_edgar_company_filings`, `get_edgar_company_facts`, `get_edgar_company_concept` — additionally need `EDGAR_USER_AGENT`, because the SEC rejects requests without a User-Agent header; the Finviz SEC listing tools do not. In Docker, `MCP_TRANSPORT` selects `stdio`, `sse` or `streamable-http`, and `MCP_HOST` defaults to `127.0.0.1` when run directly on the host.