MCP server for fetching stock prices and news using Yahoo Finance API
The server defines two read-only stock tools with basic descriptions and parameter schemas. Both tools are properly named with action verbs (get_*) and have descriptions exceeding the 20-character minimum. However, there are significant gaps: parameter descriptions are minimal (single noun phrases rather than explanatory sentences), output schemas are not documented, error handling lacks recovery guidance, and tool annotations (readOnlyHint, etc.) are absent. The descriptions, while present, fall short of LLM-optimized guidance on WHEN to use each tool and what the outputs contain. This is typical of community servers, functional but not production-grade.
Fetches the latest news headlines and links for a given ticker symbol.
Fetches the current stock price for a given ticker symbol.
Output schemas not documented. Tools return float and str but do not declare schema structure for LLM context. LLMs cannot plan downstream operations or validate expected fields.
Parameter descriptions are single words ('Stock ticker symbol') rather than actionable guidance. Missing format constraints, allowed value ranges, and examples of valid inputs. LLMs cannot infer whether 'GOOG' or 'Google Inc' is expected.
Tool descriptions lack WHEN-to-use guidance. 'Fetches the current stock price' says WHAT but not when to call this vs alternatives, prerequisites, or caveats (e.g., are prices delayed, does the symbol need to exist first?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Error handling does not guide recovery. In get_stock_price, exceptions like 'Could not find data for symbol' or HTTP errors are raised but descriptions do not tell the LLM what to do next (e.g., 'Try a different symbol' or 'Retry in 5 seconds').
Tool annotations missing. Neither tool declares readOnlyHint=true, even though both are read-only operations. This prevents client-side safety filtering and obscures intent for LLM planning.
get_stock_news returns unstructured concatenated string ('- Title\n Link') rather than a structured array of news items. LLMs cannot reliably parse or iterate this format. Returns should be objects with typed fields.