Model Context Protocol server for Indian options market analysis — real-time option chains, Greeks, strategy building, and payoff analysis for NSE/NFO derivatives. Works with Claude Desktop.
The server defines 4 tools with clear action verbs and complete input schemas. Descriptions are present and reasonably detailed (avg ~120 chars), meeting the 10 - 1024 char baseline. However, output schemas are NOT documented anywhere in the visible code, critical gap per the rubric. Parameters are well-typed (string, number, enum for type in calculate_greeks) and include descriptions. No error handling or recovery guidance is visible. Security is sound (read-only ops, no secrets in params). The tools are well-named and composed (each does one thing). Naming follows verb_noun convention (get_*, calculate_*). Significant opportunity to document output schemas and add error handling guidance.
Calculate all Option Greeks (Delta, Gamma, Theta, Vega, Rho) for a given option using Black-Scholes model.
Get all available F&O expiry dates for an Indian stock or index. Use to find weekly/monthly expiries before building strategies. Returns a numbered list of expiry dates sorted chronologically.
Get the complete option chain for an Indian F&O symbol (NIFTY, BANKNIFTY, RELIANCE, etc.) with strike prices, LTP, Open Interest, IV, volume, bid/ask for both calls and puts.
Get the current spot/underlying price of an Indian stock or index from NSE. Use this to check the latest price before calculating Greeks or building strategies. Returns spot price with timestamp.
Output schemas are not documented. The rubric requires that tools document what fields they return so LLMs can plan downstream calls and extract data correctly. No TypeScript return types or JSDoc @returns are visible in src/server.ts.
No error recovery guidance. Tools return no actionable error messages. If get_option_chain fails (invalid symbol, API timeout), the LLM receives no hint about what to do next (e.g., 'Try list_indices() to find valid symbols'). Per pattern:recovery-guide, errors must guide the agent's next step.
Missing input validation and parameter constraints. calculate_greeks accepts 'iv' and 'rate' as numbers with no min/max bounds specified. LLMs could pass negative rates or impossible IV values. Descriptions should include ranges: 'iv (0 - 200% as a number; e.g., 15 for 15%)'.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | <=2025-11-25 | v2 |
get_option_chain description includes example values ('NIFTY, BANKNIFTY, RELIANCE') in the text, which LLMs may reuse literally.