MCP server for Yahoo Finance data - stock quotes, historical prices, financials, company info, and news
Yahoo Finance MCP demonstrates good definition quality with consistent verb-based naming, documented schemas using Zod, and descriptive tool summaries. All 6 tools follow a clear pattern (get_*, search_*) and include input parameter constraints via enums and length validation. However, output schemas lack documentation, responses are JSON-stringified text rather than structured typed objects, and error handling is minimal (returns error text in content field without recovery guidance). Tool descriptions are adequate (100-180 chars) but lack dependency hints or prerequisites. Parameter descriptions exist but could be more explicit about format constraints and valid ranges.
Get company profile including sector, industry, description, and key statistics
Get company financial statements (income statement, balance sheet, or cash flow)
Get historical OHLCV (Open, High, Low, Close, Volume) price data
Get latest news for a stock symbol
Get real-time stock quote data including price, change, volume, and key metrics
Search for stock symbols by company name or keywords
Output schemas not documented, all tool responses return JSON-stringified text in a single 'content' field rather than structured typed objects. LLMs cannot extract and chain field values without parsing unstructured text.
Error handling provides no recovery guidance. When tools fail (e.g., invalid symbol), response is a text message in error state. LLMs receive no suggestion for alternative actions (e.g., 'Try search_symbols() first to find valid ticker').
Parameter descriptions lack format constraints and range documentation. E.g., 'symbol' has minLength/maxLength in schema but description does not explain the 1-10 char range or ticker format expectation (uppercase letters).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 72 | 2026-07-28+ | v2 |
Tool descriptions lack dependency hints and prerequisites. E.g., get_historical does not indicate that users should call search_symbols first if they lack a ticker symbol, or that Yahoo Finance availability may vary by region.
No pagination support for potentially large result sets (e.g., search_symbols, get_news). Tools that fetch lists should support page/limit and return total counts to enable result management.
get_financials parameter 'statement' uses enum values 'income', 'balance', 'cashflow' but descriptions use human-readable labels (income statement, balance sheet, cash flow). Enum values should match description text to avoid LLM confusion.