StockScreen MCP Server
StockScreen MCP 서버
Yahoo Finance를 통해 포괄적인 주식 스크리닝 기능을 제공하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. LLM이 기술적, 펀더멘털 및 옵션 기준에 따라 주식을 스크리닝할 수 있도록 지원하며, 관심 종목 관리 및 결과 저장 기능을 지원합니다.
특징
주식 스크리닝
기술 분석 스크리닝
가격 및 볼륨 필터
이동 평균(20, 50, 200 SMA)
RSI 지표
평균 참 범위(ATR)
추세 분석(1일, 5일, 20일 변화)
MA 거리 계산
기본 검진
시가총액 필터
P/E 비율 분석
배당수익률 기준
매출 성장 지표
ETF별 지표(AUM, 비용 비율)
옵션 스크리닝
암묵적 변동성(IV) 필터
옵션 거래량 및 미결제약정
풋/콜 비율 분석
매수-매도 스프레드 평가
수입일 근접성 확인
데이터 관리
관심 목록 생성 및 관리
스크리닝 결과 저장
기본 기호 범주
메가캡(2000억 달러 이상)
대형주($100억~$2000억)
중형주(20억~100억 달러)
소형주(3억~20억 달러)
마이크로 캡(<$300M)
ETF
Related MCP server: Yahoo Finance MCP Server
설치
지엑스피1
용법
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억 달러 이상
"대형_주식": 100억~2000억 달러
"중형주": 20억~100억 달러
"소형주": 3억~20억 달러
"마이크로캡": <$300M
"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
}Claude에 대한 사용 프롬프트
"주식 스크리닝 기능을 제공하는 주식 스크리닝 도구를 활성화했습니다. 세 가지 주요 기능을 사용할 수 있습니다.
다양한 기준 유형으로 재고를 스크린합니다.
기술: 가격, 거래량, RSI, 이동 평균선, ATR
기본: 시가총액, P/E, 배당금, 성장
옵션: IV, 거래량, 수익일
사용자 정의: 여러 기준 유형을 결합합니다.
관심 목록 관리:
심볼 목록 생성 및 업데이트
기존 관심 목록 삭제
관심목록 내용 검색
저장된 검사 결과에 액세스하세요.
이전 화면 결과 로드
일치하는 기호 및 기준 검토
모든 기능에는 오류 처리, 세부적인 시장 데이터, 포괄적인 대응이 포함됩니다."
요구 사항
파이썬 3.12+
MCP 서버
와이파이낸스
팬더
넘파이
비동기
제한 사항
Yahoo Finance에서 얻은 데이터로 지연 가능성이 있음
Yahoo Finance API 제한에 따른 요금 제한
옵션 데이터 가용성은 시장 시간에 따라 달라집니다.
일부 재무 지표가 지연되거나 사용할 수 없을 수 있습니다.
기여하다
기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.
작가
토드 울븐 - ( https://github.com/tolven )
감사의 말
Anthropic의 MCP(Model Context Protocol)로 구축됨
Yahoo Finance 에서 제공하는 데이터
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.30 npm19MIT