Financial market data and news MCP service powered by Finnhub API
The Finnhub MCP server demonstrates solid tool naming and basic structure, but falls short of production-grade quality. All 7 tools follow a consistent verb_noun pattern (get_*), which is excellent. However, tool descriptions are generic (averaging ~60 chars) and lack WHAT/WHEN/WHY context. More critically, parameter descriptions are minimal or missing entirely for optional parameters like api_key. Output schemas are not documented anywhere, the responses from Finnhub API calls are likely returned raw without structured documentation of return fields. Error handling is implicit (via exception propagation) but lacks recovery guidance. The server reads well for basic use but needs substantial refinement for agent-optimal composition and LLM reasoning.
Get basic financial metrics for a company
Get company profile information for a stock symbol
Get aggregated insider sentiment (monthly buy/sell metrics) for a stock
Get insider transactions (SEC Form 4) for a stock symbol
Get latest market news from Finnhub
Get analyst recommendation trends for a stock
Output schemas not documented. Tool descriptions do not specify what fields are returned, types, or structure. LLMs cannot plan downstream tool calls without knowing response shape.
Generic parameter descriptions. The 'api_key' parameter on all tools has minimal guidance: 'Finnhub API key (optional, uses FINNHUB_API_KEY env var if not provided)'. No mention of format, scope, or when an agent should/shouldn't provide it. The 'symbol' parameter lacks examples of valid formats (e.g., 'AAPL', 'MSFT') or constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Get current stock quote for a symbol
Tool descriptions lack actionable context. 'Get latest market news from Finnhub' and 'Get current stock quote for a symbol' are factual but do not explain WHEN to call them instead of related tools, what use cases they enable, or what data model they fit into. Baseline: 194 chars average; these average ~50 chars.
No error recovery guidance. Tool descriptions do not document what errors can occur or what the LLM should do next. For example, if an invalid symbol is passed, does the tool return a 404? A validation error? What should the agent try?
Missing constraints on enum/bounded parameters. 'category' in get_market_news defaults to 'general' but has no documented list of valid values (e.g., 'general', 'forex', 'crypto'). The 'metric' parameter in get_basic_financials defaults to 'all' but lacks enumeration. Without enums, LLMs hallucinate invalid values.
Pagination not documented. get_market_news accepts 'min_id' for pagination, but the description does not explain how to iterate, what min_id format is expected, or when iteration is complete. Agents cannot reliably paginate without this guidance.