Skip to main content
Glama
TuokkiCode

Finviz MCP

by TuokkiCode

Finviz MCP

MCP服务器,允许Claude(或任何MCP客户端)访问Finviz股票数据:单只股票的关键指标、新闻和筛选器搜索,以及真实的历史价格数据(来自Yahoo Finance)。数据通过finvizfinance和yfinance库实时获取,无需任何API密钥。

工具

  • get_stock(ticker) – 单只股票的Finviz关键指标(市盈率、市值、利润率、收益率等)

  • get_stock_news(ticker) – 股票的最新新闻标题

  • get_price_history(ticker, days=7) – 来自Yahoo Finance的真实日级历史数据(开盘价/最高价/最低价/收盘价/成交量),最多365天,并附带分析:哪一天是最佳买入日(最低价格以及与最新收盘价相比的最佳回报)。Finviz本身没有历史数据API,只有当前快照和静态图表图像。

  • screen_stocks(...) – 使用自然参数的Finviz筛选器(market_cap、sector、pe_max、rsi、dividend_yield_min、signal等)。无需向Claude解释Finviz的内部筛选名称——服务器会自动将参数转换为最接近的Finviz支持的值。仅在本地运行时有效,在已部署的云服务器上无效——参见限制。

  • list_screener_filters(search=None) / list_screener_signals() – 为Claude提供的辅助工具,当它需要某个screen_stocks尚未通过命名参数覆盖的筛选器时。找到的值可以作为screen_stocks(extra_filters={...})参数给出。

screen_stocks参数总是会吸附到最接近的Finviz提供的“篮子”中(例如pe_max=18 → "Under 20"),因为Finviz的筛选器只支持预设的值范围,不支持任意数值。

Related MCP server: Yahoo Finance MCP Server

1. 本地测试

需要Python 3.10+:

pip install -r requirements.txt
python server.py

服务器启动在地址 http://localhost:8000/mcp(Streamable HTTP)。

在此环境中进行了端到端测试(安装、启动、initialize握手以及所有五个工具使用真实Finviz数据)。测试期间发现,PyPI上的finvizfinance 1.3.0尚未跟上Finviz更新的页面模板:get_stock完全崩溃(旧的quote-linksCSS类现在变成了quote-header_categories,内容不同),并且screen_stocks的Ticker列多了一个首字母(例如"NVDA" → "NNVDA",来自Finviz的新logo占位符)。server.py直接修复了这两个问题(参见文件顶部的注释)——如果Finviz再次更改其页面,应首先检查这些修复。

如果机器上没有Python但有Docker,你可以在没有本地Python安装的情况下进行测试:

docker build -t finviz-mcp .
docker run -p 8000:8000 finviz-mcp

从命令行快速功能测试(需要curl且服务器正在运行):

curl -X POST http://localhost:8000/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}"

响应中应显示六个工具:get_stock、get_stock_news、get_price_history、screen_stocks、list_screener_filters、list_screener_signals。

2. 部署(例如Render)

  1. 将此文件夹推送到你自己的Git仓库(GitHub/GitLab)。

  2. Render → New + → Web Service → 连接仓库。

  3. Render会自动识别Dockerfile。无需单独的环境变量——服务器会从Render设置的PORT变量中读取端口。

  4. 部署后你会得到一个类似https://finviz-mcp.onrender.com的地址。MCP端点在其后加上/mcp,即:https://finviz-mcp.onrender.com/mcp。

Railway、Fly.io等也遵循相同原理(基于Dockerfile的Python托管,PORT环境变量)。

3. 连接到Claude

Claude → 设置 → 连接器 → 添加自定义连接器 → 粘贴MCP URL(https://<oma-osoite>/mcp)。

Claude支持通过Streamable HTTP的远程MCP服务器,因此这可以直接使用。

4. 示例提示

  • "获取NVDA的Finviz基本面数据。"

  • "寻找市值超过100亿美元的超卖科技股。"

  • "显示15只股息率超过4%、市盈率低于20的大盘股息股。"

  • "TSLA的最新消息是什么?"

  • "查找今天被标记为Top Gainers且平均成交量超过100万的股票。"

限制

  • screen_stocks(以及list_screener_filters/list_screener_signals)在已部署的云服务器上无效(在Render上测试过):Finviz对筛选器端点(finviz.com/screener.ashx)从数据中心IP地址返回403 Forbidden,尽管get_stock/get_stock_news/get_price_history在同一服务器上完全正常(它们使用不同的、防护较少的端点)。无法通过调整HTTP头来修复——这似乎是Finviz特意针对筛选器的数据中心IP封锁。如果你需要screen_stocks功能,请在本地运行服务器(python server.py),并通过例如cloudflared/ngrok隧道连接,这样请求将从你家庭网络的IP发出。

  • 数据是从Finviz/Yahoo Finance的网页上抓取的(没有官方API密钥),因此如果它们更改页面结构,可能会失效。

  • screen_stocks默认将结果限制为20行,最多50行,以保持请求快速。

  • get_price_history将days参数限制为最多365。

  • 不包含身份验证——如果服务公开在互联网上,任何知道URL的人都可以调用它。数据是公开的,但如果你以后添加付费/受限功能,请记住这一点。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides comprehensive financial market data and news through the Finnhub API. Enables real-time stock quotes, company profiles, financial metrics, analyst recommendations, and market news access.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time stock quotes, historical price data, financial news, and multi-stock comparisons using Yahoo Finance data. Enables users to access comprehensive financial market information through natural language queries.
    243 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time stock market data through Yahoo Finance without requiring an API key. Get quotes, historical data, company information, financial statements, and ticker search capabilities.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides real-time stock quotes, historical data, and stock search via Yahoo Finance, enabling AI assistants to access and analyze financial market data.
    57 npm
    19
    MIT