MCP Financial Analysis Server providing tools for stock and crypto price analysis, sentiment analysis, fundamental analysis, macroeconomic analysis, company profiles, and regulatory compliance
This MCP server exposes 6 financial analysis tools via FastAPI with reasonable schema coverage but significant gaps in description quality and parameter clarity. Tool names follow verb-noun convention (analyze_*, generate_*), which is positive. However, descriptions are generic and lack the specificity required for LLM tool selection. Parameter descriptions exist but lack format constraints, validation ranges, and dependency documentation. Output schemas are not documented in the visible code, forcing LLMs to infer response structure. Error handling is absent from the tool definitions. The server demonstrates moderate competence in structure but lacks polish for production use.
Analyze company fundamentals and financial statements
Analyze macroeconomic factors and market conditions affecting a stock
Analyze historical price data for a stock/crypto symbol
Analyze regulatory frameworks and compliance requirements
Analyze news sentiment and market sentiment indicators for a stock
Generate comprehensive company profile and overview
Output schemas not documented. LLMs cannot determine what fields to expect from any tool response, forcing inference and error-prone parsing.
Tool descriptions are generic and under 100 characters. They do not explain WHEN to use each tool vs alternatives, what the expected output looks like, or what symbols/asset types are supported.
No error handling guidance. Tools lack descriptions of failure modes (invalid symbol, API timeout, insufficient data) and what the LLM should do next (retry, call a different tool, ask user).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 50 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 33 | - | v1 |
Parameter descriptions lack format constraints and validation ranges. Date parameters (start_date, end_date) have format: 'date' but no min/max guidance. sources array lacks enum constraint, LLMs can hallucinate invalid source names.
Tool responsibility overlap unclear. Multiple tools analyze the same symbol (analyze_price, analyze_sentiment, analyze_fundamentals, analyze_macro, analyze_regulatory_compliance). Descriptions do not explain which to call for which user intent or whether results can be combined.
Naming ambiguity for 'symbol' parameter. Code detects stock vs crypto automatically, but tool definitions do not document this behavior. LLMs may assume it accepts only stocks or only crypto.