Finviz MCP
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的筛选器只支持预设的值范围,不支持任意数值。
1. 本地测试
需要Python 3.10+:
pip install -r requirements.txt
python server.py服务器启动在地址 http://localhost:8000/mcp(Streamable HTTP)。
在此环境中进行了端到端测试(安装、启动、
initialize握手以及所有五个工具使用真实Finviz数据)。测试期间发现,PyPI上的finvizfinance1.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)
将此文件夹推送到你自己的Git仓库(GitHub/GitLab)。
Render → New + → Web Service → 连接仓库。
Render会自动识别
Dockerfile。无需单独的环境变量——服务器会从Render设置的PORT变量中读取端口。部署后你会得到一个类似
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的人都可以调用它。数据是公开的,但如果你以后添加付费/受限功能,请记住这一点。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Real-time market data, screeners, technical analysis & backtesting for stocks, crypto and forex.
Real-time news with bias scoring, live market data, and AI-powered options pricing
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TuokkiCode/finviz-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server