MCP server for fetching stock information, news, and financial metrics from Yahoo Finance
Server has 6 tools with basic schemas and minimal descriptions. All tools accept a single string parameter (ticker/keyword) with type and description present. However, 4 of 6 tools lack any description at all (get_ticker_info, get_ticker_news, income_statement lack docstrings). Descriptions that exist are brief (10-60 chars) and lack context on when to use each tool or what distinguishes them. Output schemas are not documented, tools return JSON strings but the structure is not formally specified. No error handling guidance, no parameter constraints (e.g., valid ticker formats), and no recovery paths. Tool naming is reasonable (verb_noun pattern) but several tools are redundant: search_news and get_ticker_news both fetch news; search_quote and analyze_ticker both return price data. No pagination, no rate limiting, no input validation visible.
Summarize key financial metrics and analysis for a given ticker.
Simulate news search using a ticker and return top articles.
Return the current stock price for a ticker.
4 of 6 tools lack any description (get_ticker_info, get_ticker_news, income_statement, and implicit missing docstring for get_ticker_info). LLMs cannot determine when to select these tools without descriptions.
Output schemas are not documented. Tools return JSON strings (e.g., search_news returns array of {title, publisher, link, providerPublishTime}) but the structure is not formally specified. LLMs cannot plan downstream calls or extract fields reliably.
Redundant tools: search_news and get_ticker_news both fetch news; search_quote and analyze_ticker both return price/metrics. LLMs waste reasoning cycles deciding between similar tools. Consolidate or clarify distinctions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
No input validation or error handling visible. Tools accept any string as ticker without validation. No guidance on what happens if ticker is invalid, malformed, or not found. No recovery paths for LLMs.
income_statement returns raw string representation of quarterly_income_stmt object (e.g., 'Background information for AAPL <DataFrame>...') instead of structured JSON. Unstructured output wastes tokens and forces LLM parsing.