StockScreen MCP Server
StockScreen MCP 服务器
模型上下文协议 (MCP) 服务器通过雅虎财经提供全面的股票筛选功能。它使 LLM 能够根据技术、基本面和期权标准筛选股票,并支持关注列表管理和结果存储。
特征
股票筛选
技术分析筛选
价格和数量过滤器
移动平均线(20、50、200 SMA)
RSI 指标
平均真实波动幅度 (ATR)
趋势分析(1天、5天、20天变化)
MA 距离计算
基础筛查
市值过滤器
市盈率分析
股息收益率标准
收入增长指标
ETF 特定指标(资产管理规模、费用率)
选项筛选
隐含波动率(IV)过滤器
期权交易量和未平仓合约
看跌/看涨比率分析
买卖价差评估
收益日期临近检查
数据管理
监视列表创建和管理
筛选结果存储
默认符号类别
超大市值(>2000亿美元)
大盘股(100亿美元-2000亿美元)
中型股(20亿美元-100亿美元)
小型股(3亿至20亿美元)
微型股(<3亿美元)
ETF
Related MCP server: Yahoo Finance MCP Server
安装
# Install dependencies
pip install -r requirements.txt
# Clone the repository
git clone https://github.com/twolven/mcp-stockscreen.git
cd mcp-stockscreen用法
添加到您的 Claude 配置:在您的
claude-desktop-config.json中,将以下内容添加到mcpServers部分:
{
"mcpServers": {
"stockscreen": {
"command": "python",
"args": ["path/to/stockscreen.py"]
}
}
}将“path/to/stockscreen.py”替换为保存 stockscreen.py 文件的完整路径。
可用工具
可用工具
run_stock_screen
技术筛选标准
{
"screen_type": "technical",
"criteria": {
"min_price": float, # Minimum stock price
"max_price": float, # Maximum stock price
"min_volume": int, # Minimum average volume
"above_sma_200": bool, # Price above 200-day SMA
"above_sma_50": bool, # Price above 50-day SMA
"min_rsi": float, # Minimum RSI value
"max_rsi": float, # Maximum RSI value
"max_atr_pct": float, # Maximum ATR as percentage of price
"category": str # Optional: market cap category filter
},
"watchlist": str, # Optional: name of watchlist to screen
"save_result": str # Optional: name to save results
}基本筛选标准
{
"screen_type": "fundamental",
"criteria": {
"min_market_cap": float, # Minimum market capitalization
"min_pe": float, # Minimum P/E ratio
"max_pe": float, # Maximum P/E ratio
"min_dividend": float, # Minimum dividend yield (%)
"min_revenue_growth": float, # Minimum revenue growth rate
"category": str, # Optional: market cap category filter
# ETF-specific criteria
"min_aum": float, # Minimum assets under management
"max_expense_ratio": float, # Maximum expense ratio
"min_volume": float # Minimum trading volume
},
"watchlist": str, # Optional: name of watchlist to screen
"save_result": str # Optional: name to save results
}选项筛选标准
{
"screen_type": "options",
"criteria": {
"min_iv": float, # Minimum implied volatility (%)
"max_iv": float, # Maximum implied volatility (%)
"min_option_volume": int, # Minimum options volume
"min_put_call_ratio": float, # Minimum put/call ratio
"max_spread": float, # Maximum bid-ask spread (%)
"min_days_to_earnings": int, # Minimum days until earnings
"max_days_to_earnings": int, # Maximum days until earnings
"category": str # Optional: market cap category filter
},
"watchlist": str, # Optional: name of watchlist to screen
"save_result": str # Optional: name to save results
}新闻筛选标准
{
"screen_type": "news",
"criteria": {
"keywords": List[str], # Keywords to search for in news
"exclude_keywords": List[str], # Keywords to exclude from results
"min_days": int, # Minimum days back to search
"max_days": int, # Maximum days back to search
"management_changes": bool, # Filter for management changes
"require_all_keywords": bool, # Require all keywords to match
"category": str # Optional: market cap category filter
},
"watchlist": str, # Optional: name of watchlist to screen
"save_result": str # Optional: name to save results
}
自定义筛选标准
{
"screen_type": "custom",
"criteria": {
"category": str, # Optional: market cap category filter
"technical": {
# Any technical criteria from above
},
"fundamental": {
# Any fundamental criteria from above
},
"options": {
# Any options criteria from above
},
"news": {
# Any news criteria from above
}
},
"watchlist": str, # Optional: name of watchlist to screen
"save_result": str # Optional: name to save results
}类别值
可供筛选的市值类别:
“mega_cap”:>2000亿美元
“large_cap”:100亿美元-2000亿美元
“中盘股”:20亿美元至100亿美元
“small_cap”:3亿至20亿美元
“micro_cap”:<3亿美元
“etf”:ETF 工具
manage_watchlist
{
"action": str, # Required: "create", "update", "delete", "get"
"name": str, # Required: watchlist name (1-50 chars, alphanumeric with _ -)
"symbols": List[str] # Required for create/update: list of stock symbols
}get_screening_result
{
"name": str # Required: name of saved screening result
}响应格式
技术屏幕响应
{
"screen_type": "technical",
"criteria": dict, # Original criteria used
"matches": int, # Number of matching stocks
"results": [ # List of matching stocks
{
"symbol": str,
"price": float,
"volume": float,
"rsi": float,
"sma_20": float,
"sma_50": float,
"sma_200": float,
"atr": float,
"atr_pct": float,
"price_changes": {
"1d": float, # 1-day price change %
"5d": float, # 5-day price change %
"20d": float # 20-day price change %
},
"ma_distances": {
"pct_from_20sma": float,
"pct_from_50sma": float,
"pct_from_200sma": float
}
}
],
"rejected": [ # List of stocks that didn't match
{
"symbol": str,
"rejection_reasons": List[str]
}
],
"timestamp": str
}克劳德的使用提示
我已启用提供股票筛选功能的 stockscreen 工具。您可以使用以下三个主要功能:
使用多种标准类型筛选股票:
技术面:价格、成交量、RSI、移动平均线、ATR
基本面:市值、市盈率、股息、增长
选项:IV、交易量、收益日期
自定义:组合多种条件类型
管理关注列表:
创建和更新符号列表
删除现有的关注列表
检索监视列表内容
访问已保存的筛选结果:
加载上一屏结果
审查匹配的符号和标准
所有功能包括错误处理、详细的市场数据和全面的响应。”
要求
Python 3.12+
MCP 服务器
yfinance
熊猫
numpy
异步
限制
数据来源于雅虎财经,可能会有延迟
基于 Yahoo Finance API 限制的速率限制
期权数据的可用性取决于市场时间
某些财务指标可能会延迟或不可用
贡献
欢迎贡献代码!欢迎提交 Pull 请求。
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。
作者
托德·沃尔文 - ( https://github.com/tolven )
致谢
使用 Anthropic 的模型上下文协议 (MCP) 构建
数据由雅虎财经提供
专为与 Anthropic 的 Claude 配合使用而开发
Available Tools
4 toolsget_screening_resultC
Retrieve a saved screening result.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Safe persistence name |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| success | Yes | |
| provider | Yes | |
| warnings | Yes | |
| timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Retrieve' implies a read-only operation, but there is no statement about side effects, failure behavior (e.g., missing name), permissions, or whether results can only be read. This is minimal coverage for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a short single sentence with no filler and the verb is front-loaded. However, it is so minimal that it leans toward under-specification rather than purposeful conciseness; it could have added a short usage note without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter retrieval tool with an output schema, the description is adequate but not thorough. It doesn't confirm read-only semantics or clarify the relationship between the input name and previously run screens, but the output schema does resolve some return-value ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the name property already carries its own description ('Safe persistence name'), so the tool description adds no parameter meaning. Per the rubric, a baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieve') and a clear resource ('saved screening result'), which distinguishes it from sibling tools like run_stock_screen that would create or run a new screen. It doesn't describe what the result contains, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus siblings such as run_stock_screen. The word 'saved' implies it is for previously stored results, but the description never states a direct comparison, when not to use it, or what makes it preferable over running a new screen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_newsB
Get normalized recent Yahoo Finance news.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Yahoo Finance ticker symbol | |
| days_back | No | Maximum news age in days |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| success | Yes | |
| provider | Yes | |
| warnings | Yes | |
| timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must carry the full burden of disclosing behavior. It only states that the output is normalized news and recent, which gives a minimal idea of the data nature but does not mention what exactly happens (e.g., returns a list, sorting, pagination, rate limits, or whether it is strictly read-only). This is adequate only at the most basic level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words or promotional fluff. It directly achieves its purpose and is perfectly sized for the tool's simplicity. Nothing extra needs to be removed or rewritten.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has only two parameters fully described in the schema, and has an output schema, so the description need not explain return values. The overall context is clear enough to call the tool correctly, though adding 'from a given Yahoo Finance symbol' would make it even more self-contained. Still, given the combined context, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not add meaning beyond the input schema, but the schema itself has 100% description coverage for both parameters ('Yahoo Finance ticker symbol' and 'Maximum news age in days'), so the baseline of 3 is appropriate. The description word 'recent' does loosely reflect days_back, but no extra detail is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get') and resource ('normalized recent Yahoo Finance news'), clearly indicating a news retrieval operation. It does not explicitly differentiate itself from sibling tools like run_stock_screen or get_screening_result, but the nature of these sibling tools is clearly distinct, so the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the sibling tools. The description does not mention typical use cases, alternatives, or any conditions that would steer the agent toward or away from this tool. The only contextual clue is the name and the schema, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_watchlistA
Create, update, delete, or retrieve a safely persisted watchlist.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Safe persistence name | |
| action | Yes | Watchlist action | |
| symbols | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| success | Yes | |
| provider | Yes | |
| warnings | Yes | |
| timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden. It does state that the watchlist is safely persisted and includes destructive delete operations, which is helpful. However, it does not explain what 'safely persisted' actually means, whether operations are reversible, or whether any authentication or permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that directly communicates the tool's scope with no wasted words. Every part of the sentence contributes to understanding the tool, despite some slight vagueness in 'safely persisted.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description and output schema cover basic invocation but leave important semantics unstated. In particular, it is unclear how 'update' behaves relative to 'create' and 'delete' (replace, overwrite, or mutate), what the preconditions are for each action, and what 'safely persisted' implies for cleanup or consistency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes two of three parameters with meaningful details (action enum and name pattern), though symbols is more generic. The description does not add further parameter-level meaning, which is acceptable at 67% schema description coverage but does not exceed the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the tool's purpose with specific actions (create, update, delete, retrieve) and the resource being acted on (a persisted watchlist). It also distinguishes itself from sibling tools like run_stock_screen and get_stock_news, which are not watchlist management operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (whenever the agent needs to manage a watchlist) but does not explicitly articulate when not to use it or how it relates to the sibling tools. It provides no direct comparison or exclusion guidance, leaving the agent to infer context from the tool name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_stock_screenB
Run a legacy technical, fundamental, options, news, or custom screen.
| Name | Required | Description | Default |
|---|---|---|---|
| criteria | Yes | Criteria for the selected legacy screen category | |
| watchlist | No | ||
| save_result | No | ||
| screen_type | Yes | Legacy stock-screen category |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| success | Yes | |
| provider | Yes | |
| warnings | Yes | |
| timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing side effects. The parameters watchlist and save_result suggest possible persistence or retrieval, but their purpose is not explained in the description. The tool might write results or consult a watchlist, yet the description only says 'run a screen', which is ambiguous regarding side effects and state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant wording. It efficiently communicates the core purpose and enumerates the screen types without unnecessary detail, making it easy to parse and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters including a nested object and an output schema, the description is far too brief. It does not explain the structure of the criteria object, the meaning of watchlist and save_result, the expected behavior for each screen_type, or what the returned data will look like. The agent cannot confidently invoke the tool correctly based on this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (criteria and screen_type have meaningful descriptions; watchlist and save_result only have the generic 'Safe persistence name'). The tool description does not add any clarification for these parameters, nor does it explain what 'criteria' should contain or how watchlist and save_result are used. The description fails to compensate for the missing schema detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run') and the resource ('stock screen'), and enumerates the specific screen categories (technical, fundamental, options, news, custom). It distinguishes the tool from siblings such as manage_watchlist, get_screening_result, and get_stock_news, which handle different aspects of screening work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus the sibling tools. It does not mention that it is for executing a screen to get results, nor does it contrast with retrieve_screening_result or manage_watchlist. The phrase 'legacy' hints at a deprecated nature but is not elaborated, leaving the agent without clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v2.0.0- First observed
get_screening_result - First observed
get_stock_news - First observed
manage_watchlist - First observed
run_stock_screen
TDQS
Scored across 4 tools
Each tool targets a distinct purpose: screening, watchlist management, result retrieval, and news. However, get_screening_result could be confused with run_stock_screen if users expect immediate output from the latter, though descriptions help clarify.
Tool names are consistent in verb_noun format (run_, manage_, get_, get_). The only minor deviation is manage_watchlist using 'manage' instead of a more specific action verb, but the pattern is largely uniform.
Four tools is reasonable for a stock screening and watchlist server, though the scope could justify a few more (e.g., get_watchlist separate from manage). It is slightly thin but not inadequate for core functionality.
The server covers screening, saving results, retrieving saved results, and watchlist management. However, it lacks tools for updating or deleting screening results, or performing actions beyond retrieval on these results, leaving notable lifecycle gaps.
Maintenance
Related MCP Connectors
Analyze stocks with summaries, price targets, and analyst recommendations. Track SEC filings, divi…
Global stock research, ML forecasts, valuation signals, screeners & portfolio tracking in Claude
Screen 11,000+ stocks using natural language and detect chart patterns via MCP.
Scrape stock quotes, historical prices, and financial statements from Yahoo Finance.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to retrieve real-time stock data, manage watchlists, and perform comprehensive technical analysis using Yahoo Finance API. Provides 18+ tools for stock price tracking, trend analysis, volatility assessment, and financial indicators through MCP integration.MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to retrieve stock market data and financial information from Yahoo Finance using the yfinance Python library. Supports querying stock prices, historical data, and other financial metrics through natural language.MIT
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive financial data from Yahoo Finance, enabling retrieval of stock prices, company information, financial statements, options data, analyst recommendations, and market news through natural language queries.MIT
- AlicenseNot gradedqualityCmaintenanceProvides real-time stock quotes, historical data, and stock search via Yahoo Finance, enabling AI assistants to access and analyze financial market data.11 npm19MIT