MCP server for stock analysis application providing access to stock portfolio data from MongoDB and integrating with Alpha Vantage API for market data with knowledge graph maintenance
The server has 12 tools with complete schemas and descriptions, but quality is inconsistent. Strengths: all tools have input schemas with type definitions and descriptions; parameter constraints (min/max) are present; tool names follow verb_noun conventions (get_*, search_*). Weaknesses: descriptions vary widely in quality, some are generic or lack actionable detail; no output schemas documented; parameter descriptions are sometimes vague (e.g., 'criteria' fields lack enum constraints or examples of valid values); error handling is not visible in the code provided; no indication of idempotency, permission checks, or audit trails; 'criteria' string parameters invite hallucinated values instead of enums.
Access Alpha Vantage API data for Indian stock market (NSE/BSE only) with free tier limitations (rate limited to 5 calls/minute)
Get current status of Alpha Vantage API including available calls and rate limits
Find must-buy Indian stocks based on current market trends (NSE/BSE only)
Get technical analysis for a stock using minimal API calls, with preflight check and fallbacks
Get a list of Indian stocks in the user's portfolio with basic information
Get a high-level summary of the portfolio including count of stocks by sector and the total number of stocks
Criteria parameters use free-form strings without enum constraints. 'get_stock_recommendations' and 'get_removal_recommendations' accept 'criteria' as an unbounded string (e.g., 'growth', 'value', 'dividend', 'underperforming', 'high risk'), inviting hallucinated values. LLMs will guess at valid options instead of selecting from a well-defined set.
Output schemas are not documented. The rubric requires tools to document their return types and structure so LLMs know what fields to expect for downstream tool chaining and data extraction. No response schemas are visible in the code.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 28 | - | v1 |
Identify Indian stocks that should be removed from portfolio
Get recommendations for Indian stocks (NSE/BSE) to add to the portfolio based on financial metrics
Get technical analysis indicators for an Indian stock (SMA, RSI)
Analyze the current Indian stock portfolio holdings including latest earnings, metrics, and provide recommendations. Stores analysis in knowledge graph.
Query the Indian stock knowledge graph for historical analysis and insights
Search for Indian stock symbols by name or keywords (NSE/BSE only)
No evidence of error handling guidance. Code does not show error responses that categorize failures as retryable, user-fixable, or fatal, or provide recovery hints. LLMs need explicit direction on what to do when a tool fails.
Generic or vague descriptions. 'portfolio_analysis' says 'Stores analysis in knowledge graph' but does not explain what analysis is performed, what metrics are included, or when to call it vs. other analysis tools. 'query_knowledge_graph' description is generic.
Parameter descriptions lack actionable detail. 'function' parameter in 'get_alpha_vantage_data' lists supported options in description ('GLOBAL_QUOTE, TIME_SERIES_DAILY, OVERVIEW, SYMBOL_SEARCH') but should use an enum. 'indicators' parameter in 'get_optimized_technical_analysis' is described as 'Comma-separated list' but no enum or pattern constraint.
No idempotency declarations. Tools that write state ('portfolio_analysis' is marked WRITE risk) do not declare idempotency or provide unique request IDs to prevent duplicate side effects on retry.
No tool annotations for read-only vs. destructive operations. Tools lack readOnlyHint/destructiveHint attributes to signal to agents which tools are safe to retry and which have irreversible effects.