indian-option-mcp
v1.1.0
Published
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.
Downloads
199
Maintainers
Readme
🆓 Free Alternative to Sensibull & Opstra
| Feature | Sensibull (₹1500/mo) | Opstra (₹999/mo) | Indian Option MCP (Free) | |:---|:---:|:---:|:---:| | Option Chain | ✅ | ✅ | ✅ Live from NSE | | Strategy Builder | ✅ (20+) | ✅ (15+) | ✅ 34 strategies | | Greeks Calculator | ✅ | ✅ | ✅ Black-Scholes | | Max Pain | ✅ | ✅ | ✅ | | OI Analysis | ✅ | ✅ | ✅ | | IV Smile/Skew | ❌ | ✅ | ✅ | | Position Sizing | ❌ | ❌ | ✅ | | Margin Estimation | ❌ | ❌ | ✅ | | Probability of Profit | ❌ | ❌ | ✅ | | AI-Powered Analysis | ❌ | ❌ | ✅ Claude AI | | Natural Language | ❌ | ❌ | ✅ "Build me an Iron Condor" | | API/Programmatic | ❌ | ❌ | ✅ MCP Protocol | | Price | ₹1500/month | ₹999/month | 🆓 Forever Free |
✨ Why Indian Option MCP?
| Pain Point | Old Way | With This MCP | |:---|:---|:---| | Checking option chains | Open Sensibull/NSE website, scroll, compare | "Show me NIFTY option chain" | | Building strategies | Manually pick strikes, calculate P&L | "Build an iron condor on BANKNIFTY" | | Greeks analysis | Open Black-Scholes calculator, enter values | "What are the Greeks for NIFTY 24000 CE?" | | Finding support/resistance from OI | Stare at OI columns, do mental math | "Where is the highest OI in NIFTY?" | | Position sizing | Spreadsheet + guesswork | "Size a position for ₹5L capital, 2% risk" |
🕐 24/7 Availability — Works Even After Market Hours
Most NSE tools and scrapers break after 3:30 PM IST because NSE takes down the option chain API. This MCP server uses a dual-endpoint fallback architecture:
| Time | Data Source | What You Get | |:---|:---|:---| | 9:15 AM – 3:30 PM (Market Open) | Primary NSE API | Full chain with IV, Greeks, change-in-OI, bid/ask | | After 3:30 PM (Market Closed) | Fallback derivatives API | Closing snapshot with OI, LTP, volume, strike prices |
No configuration needed. The fallback is automatic. You always get data, any time of day.
🚀 Features
📊 Option Chain Tools
| Tool | Description |
|:-----|:------------|
| get_option_chain | Full option chain with strikes, LTP, OI, IV, volume, bid/ask for calls & puts |
| get_expiry_dates | All available expiry dates for any F&O symbol |
| get_spot_price | Current spot/underlying price of any stock or index |
🔢 Greeks & Pricing
| Tool | Description |
|:-----|:------------|
| calculate_greeks | All Greeks — Delta, Gamma, Theta, Vega, Rho — via Black-Scholes |
| calculate_iv | Implied Volatility from market price (Newton-Raphson method) |
| calculate_option_price | Theoretical option price using Black-Scholes model |
| what_if_greeks | Scenario analysis — how Greeks change under hypothetical conditions |
🏗️ Strategy Builder — 34 Pre-Built Strategies
| Tool | Description |
|:-----|:------------|
| build_strategy | Build any of 34 strategies with real market prices, payoff & breakevens |
| custom_strategy | Build custom multi-leg strategies with specific strikes |
| suggest_strategy | Get strategy suggestions based on outlook & risk preference |
| list_strategies | Browse all available strategies by category |
| calculate_payoff | Payoff/P&L table at expiry across price scenarios |
📈 Open Interest Analysis
| Tool | Description |
|:-----|:------------|
| calculate_max_pain | Max Pain strike — where option buyers lose the most |
| get_pcr | Put-Call Ratio (OI, Volume, and Change based) with interpretation |
| highest_oi_strikes | OI-based support & resistance levels |
| oi_change_analysis | Change in OI patterns — emerging support/resistance |
📉 IV Analytics
| Tool | Description |
|:-----|:------------|
| iv_smile | IV Smile curve + IV Skew across strikes |
| expected_move | Expected price range by expiry (1σ, 1.645σ, 1.96σ) |
🌍 Market Data
| Tool | Description |
|:-----|:------------|
| market_overview | NIFTY & BANKNIFTY snapshot — spot, ATM IV, PCR, lot size |
| market_status | Is the NSE market currently open or closed? |
| lot_size | Lot size for any F&O instrument |
| next_expiry | Next weekly/monthly expiry date |
🛡️ Risk Management
| Tool | Description |
|:-----|:------------|
| estimate_margin | SPAN + Exposure margin estimate for option strategies |
| probability_of_profit | POP calculation using log-normal distribution |
| position_sizing | Optimal lot count based on capital & risk tolerance |
🔍 Scanners
| Tool | Description |
|:-----|:------------|
| scan_high_oi | Find strikes with highest institutional OI buildup |
| unusual_activity | Detect abnormally high volume/OI ratio |
💬 MCP Prompts
| Prompt | Description |
|:-------|:------------|
| strategy_advisor | Full strategy recommendation workflow — chains, PCR, max pain, expected move, build & size |
| market_analysis | Comprehensive analysis — OI, PCR, IV smile, max pain, expected move synthesized |
⚡ Quick Start
Option 1: npx (Recommended — Zero Install)
Add this to your Claude Desktop config:
{
"mcpServers": {
"indian-options": {
"command": "npx",
"args": ["-y", "indian-option-mcp"]
}
}
}Restart Claude Desktop. Done. 🎉
Option 2: Clone & Build
# Clone the repository
git clone https://github.com/devag7/Indian-Option-MCP.git
cd Indian-Option-MCP
# Install dependencies & build
npm install
npm run buildConfigure Claude Desktop
Add this to your Claude Desktop config file:
| OS | Path |
|:---|:-----|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
{
"mcpServers": {
"indian-options": {
"command": "node",
"args": ["/absolute/path/to/Indian-Option-MCP/dist/bundle.mjs"],
"env": {
"DATA_PROVIDER": "nse"
}
}
}
}That's it. Restart Claude Desktop and start asking about Indian options! 🎉
💬 Example Conversations
Once configured, just talk naturally to Claude:
You: Show me the NIFTY option chain for the nearest expiry
You: Build an iron condor on BANKNIFTY with 3 strikes OTM
You: What's the max pain for NIFTY? Where is OI-based support?
You: I'm bullish on RELIANCE. Suggest a strategy with low risk.
You: Calculate Greeks for NIFTY 24500 CE, 10 days to expiry, 14% IV
You: Show the expected move for NIFTY at 95% confidence
You: Size a short straddle on BANKNIFTY for ₹10L capital, max 2% risk🏗️ Strategy Library
All 34 pre-built strategies, ready to deploy with live market prices:
📈 Bullish
| Strategy | Legs |
|:---------|:----:|
| long_call | 1 |
| bull_call_spread | 2 |
| bull_put_spread | 2 |
| put_credit_spread | 2 |
| synthetic_long | 2 |
| covered_call | 2 |
| collar | 3 |
| strap | 2 |
| jade_lizard | 3 |
📉 Bearish
| Strategy | Legs |
|:---------|:----:|
| long_put | 1 |
| bear_put_spread | 2 |
| bear_call_spread | 2 |
| put_debit_spread | 2 |
| call_credit_spread | 2 |
| synthetic_short | 2 |
| protective_put | 2 |
| strip | 2 |
⚖️ Neutral
| Strategy | Legs |
|:---------|:----:|
| short_straddle | 2 |
| short_strangle | 2 |
| iron_condor | 4 |
| iron_butterfly | 4 |
| butterfly | 3 |
| calendar_spread | 2 |
| double_diagonal | 4 |
🌊 Volatility
| Strategy | Legs |
|:---------|:----:|
| long_straddle | 2 |
| long_strangle | 2 |
| back_spread_call | 2 |
| back_spread_put | 2 |
| ratio_call_spread | 2 |
| ratio_put_spread | 2 |
| short_call | 1 |
| short_put | 1 |
| broken_wing_butterfly | 3 |
| christmas_tree | 3 |
💡 Tip: Use
list_strategiesto browse by category, orsuggest_strategyto get recommendations based on your market view.
🔌 Data Providers
| Provider | API Key | Features | Speed | |:---------|:-------:|:---------|:-----:| | NSE India (default) | ❌ Not needed | Full option chains, OI, IV, volume, spot prices | ⚡ Fast | | Zerodha Kite (optional) | ✅ Required | Full option chains, tick-level data, order book depth | ⚡⚡ Faster |
NSE (Default — Zero Config)
Works out of the box. The server fetches data directly from NSE India's public endpoints.
# No configuration needed — just build and run
DATA_PROVIDER=nse # this is the defaultZerodha Kite (Optional)
For traders with a Zerodha account who want faster data and deeper order book:
DATA_PROVIDER=zerodha
KITE_API_KEY=your_api_key
KITE_API_SECRET=your_api_secret
KITE_ACCESS_TOKEN=your_access_token # refreshed dailyGet credentials from developers.kite.trade
⚙️ Environment Variables
Copy .env.example to .env and configure as needed:
cp .env.example .env| Variable | Default | Description |
|:---------|:--------|:------------|
| DATA_PROVIDER | nse | Data source — nse (free) or zerodha (needs API key) |
| KITE_API_KEY | — | Zerodha Kite API key (only if zerodha) |
| KITE_API_SECRET | — | Zerodha Kite API secret (only if zerodha) |
| KITE_ACCESS_TOKEN | — | Zerodha session token, refreshed daily (only if zerodha) |
| CACHE_TTL_SECONDS | 5 | Real-time data cache lifetime in seconds |
| INSTRUMENT_CACHE_TTL_HOURS | 12 | Instrument master cache lifetime in hours |
| RISK_FREE_RATE | 0.07 | Annual risk-free rate for Black-Scholes (7% = Indian 10Y bond) |
| LOG_LEVEL | info | Logging verbosity — debug, info, warn, error |
🏛️ Architecture
indian-option-mcp/
├── src/
│ ├── index.ts # Entry point — stdio transport
│ ├── server.ts # MCP server — all 35+ tools registered here
│ ├── config.ts # Zod-validated env configuration
│ │
│ ├── data/
│ │ ├── providers/
│ │ │ ├── base.provider.ts # Abstract data provider interface
│ │ │ ├── nse.provider.ts # NSE India scraper (default)
│ │ │ └── zerodha.provider.ts # Kite Connect API client
│ │ ├── provider-factory.ts # Provider factory pattern
│ │ ├── cache/
│ │ │ ├── memory-cache.ts # TTL-based in-memory cache
│ │ │ └── instrument-cache.ts # Long-lived instrument master cache
│ │ ├── constants/
│ │ │ ├── lot-sizes.ts # F&O lot sizes (NIFTY=75, BANKNIFTY=30, etc.)
│ │ │ ├── expiry-calendar.ts # Expiry date calculations
│ │ │ └── indices.ts # Index metadata & strike intervals
│ │ └── models/
│ │ ├── option-chain.ts # Option chain data models
│ │ ├── instrument.ts # Instrument definitions
│ │ ├── quote.ts # Quote/tick models
│ │ ├── strategy.ts # Strategy type definitions
│ │ └── index.ts # Model barrel exports
│ │
│ ├── engine/
│ │ ├── black-scholes.ts # Option pricing & Greeks (Δ, Γ, Θ, ν, ρ)
│ │ ├── implied-volatility.ts # IV solver (Newton-Raphson)
│ │ ├── iv-surface.ts # IV Smile, Skew, Rank, Percentile, HV
│ │ ├── strategy-builder.ts # 34 strategy templates + builder
│ │ ├── payoff.ts # Payoff/P&L at expiry engine
│ │ ├── max-pain.ts # Max Pain calculator
│ │ ├── pcr.ts # Put-Call Ratio analyzer
│ │ ├── oi-analysis.ts # OI distribution & activity detection
│ │ ├── margin-calculator.ts # SPAN margin estimator
│ │ └── risk-metrics.ts # POP, Kelly, position sizing
│ │
│ └── utils/
│ ├── date.ts # Market hours, DTE, expiry helpers
│ ├── format.ts # Currency, number, OI formatting
│ ├── math.ts # Normal CDF, statistical functions
│ └── logger.ts # Stderr-only logger (MCP-safe)
│
├── dist/ # Compiled output
├── package.json
├── tsconfig.json
└── .env.exampleDesign Principles
- Zero external trading dependencies — only
@modelcontextprotocol/sdkandzod - Provider pattern — swap between NSE and Zerodha with one env variable
- Pure computation engine — all pricing, Greeks, and analytics are self-contained
- MCP-safe logging — all output goes to
stderr, neverstdout(protects stdio transport) - Startup validation — Zod schemas validate all config at boot, not at runtime
🛠️ Development
# Watch mode (recompile on save)
npm run dev
# Type-check without emitting
npm run lint
# Run tests
npm test
# Inspect with MCP Inspector
npm run inspect
# Clean build artifacts
npm run clean🤝 Contributing
Contributions are welcome! Here's how to get started:
- Fork the repository
- Create a feature branch —
git checkout -b feat/my-feature - Commit your changes —
git commit -m "feat: add my feature" - Push to your branch —
git push origin feat/my-feature - Open a Pull Request
Areas for Contribution
- 🆕 New strategies (e.g., seagull, condor variations)
- 🌐 Additional data providers (Upstox, Angel One, etc.)
- 📊 Enhanced analytics (IV term structure, correlation analysis)
- 🧪 Test coverage for engine modules
- 📚 Documentation improvements
📄 License
This project is licensed under the MIT License — see the LICENSE file for details.
