StockScreen MCP Server
Leverages NumPy for numerical operations in stock data analysis, supporting technical indicators calculation and data processing
Utilizes pandas for handling financial data frames, enabling efficient stock screening, filtering, and result organization
Implemented as a Python-based MCP server that enables stock screening functionality through structured API calls
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@StockScreen MCP Server screen for tech stocks above 50-day SMA with RSI under 30"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
StockScreen MCP
A typed FastMCP server for Yahoo Finance-backed technical, fundamental, options, news, custom, and watchlist screening. It supports local stdio and containerized Streamable HTTP transports.
Tools
run_stock_screen(screen_type, criteria, watchlist=None, save_result=None)get_stock_news(symbol, days_back=30)manage_watchlist(action, name, symbols=None)get_screening_result(name)
Legacy inputs and the five original screen categories are retained. Unknown criteria are rejected rather than silently ignored. Technical screens support the original price, volume, SMA-50/SMA-200, RSI, and ATR criteria. Fundamental screens include minimum/maximum market cap, P/E, dividend, revenue growth, profit margin, debt/equity, price/book, AUM, expense ratio, and volume. Options screens include IV, option volume, put/call ratio, spread, expiration-day, and earnings-day bounds. ETF, news, and nested custom criteria retain their original names. Explicit symbols or a watchlist are preferred. With neither, the server uses yfinance's documented screen query with size=250, US-region filters, category-aware EquityQuery/ETFQuery predicates, and assets/market-cap descending order. Universe metadata includes source, category, requested/returned size, sort, and as-of time. Missing requested metrics reject a symbol instead of becoming zero, and every rejected symbol retains reasons. Persistence names are restricted and normalized JSON writes are atomic under ~/.stockscreen; no migration runs during import.
uv sync --locked
uv run python stockscreen.pyThe server uses stdio and emits no logs or migration messages to stdout. Yahoo Finance is an unofficial personal-use source and may be delayed, incomplete, rate-limited, or structurally changed. Results are not investment advice or guaranteed real-time data.
Related MCP server: Yahoo Finance MCP Server
Docker / Streamable HTTP
The container runs as an unprivileged user, installs the locked production dependencies, and serves MCP at http://127.0.0.1:8000/mcp. Start it with:
docker compose up --build -d
Invoke-RestMethod http://127.0.0.1:8000/healthConnect a Streamable HTTP-capable MCP client to http://127.0.0.1:8000/mcp. The named stockscreen-data volume persists watchlists and saved results across container replacement. To avoid a port collision when running multiple servers, set MCP_HOST_PORT before starting Compose, for example $env:MCP_HOST_PORT=8002. Stop the container with docker compose down; add --volumes only when you intentionally want to delete the persisted data.
The Compose mapping intentionally binds to localhost. The endpoint has no authentication or TLS and must not be exposed to an untrusted network without a properly configured reverse proxy and access control.
Binding to loopback alone does not make the endpoint private: a browser can still reach it through DNS rebinding, so the server validates Host and Origin headers before a request reaches an MCP session. Requests carrying a foreign Host are answered with 421 Misdirected Request and those carrying a foreign Origin with 403 Forbidden, while same-origin loopback traffic and non-browser clients that send no Origin are unaffected.
Variable | Default | Purpose |
|
|
|
|
| Interface the HTTP server binds. |
|
| Port inside the container. |
|
| Streamable HTTP endpoint path. |
|
| Host port Compose publishes on |
|
|
|
| unset | Comma-separated extra hostnames permitted in |
| unset | Comma-separated extra browser origins permitted in |
Put the reverse-proxy hostname in MCP_ALLOWED_HOSTS when fronting the container, otherwise the guard rejects the proxied Host. Running uv run python stockscreen.py remains the stdio-compatible default outside Docker.
Run validation with uv lock --check, uv run ruff check ., uv run mypy ., uv run pytest, uv build, and uv run python scripts/verify_wheel.py. CI also builds the container and performs health plus MCP tool-discovery checks over Streamable HTTP. Domain/provider/persistence branch coverage is gated at 90%. Set YFINANCE_LIVE=1 to opt into live shape smoke tests.
Available Tools
4 toolsget_screening_resultC
Retrieve a saved screening result.
Inputs: name (required). Returns: data, success, provider, warnings, +1 more
get_stock_newsB
Get normalized recent Yahoo Finance news.
Inputs: symbol (required), days_back. Returns: data, success, provider, warnings, +1 more
manage_watchlistA
Create, update, delete, or retrieve a safely persisted watchlist.
Inputs: name (required), action (required), symbols. Returns: data, success, provider, warnings, +1 more
run_stock_screenB
Run a legacy technical, fundamental, options, news, or custom screen.
Inputs: criteria (required), screen_type (required), watchlist, save_result. Returns: data, success, provider, warnings, +1 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
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.
Related MCP Connectors
Live stock quotes, a stock screener, crypto prices and FX rates as agent tools.
Yahoo Finance stock quotes and multi-ticker comparison as agent tools.
Yahoo Finance for AI agents: quotes, price history, options with Greeks, financials, news, movers.
Equity screeners for 26 global markets as agent tools.
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 gradedqualityCmaintenanceProvides real-time stock quotes, historical data, and stock search via Yahoo Finance, enabling AI assistants to access and analyze financial market data.24 npm19MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server providing comprehensive stock screening capabilities through Yahoo Finance. Enables LLMs to screen stocks based on technical, fundamental, and options criteria, with support for watchlist management and result storage.MIT