NSE MCP Explorer

NSE MCP Capability Matrix

Every tool advertised by NSE’s two MCP servers via tools/list on 2026-10-06. Nothing is omitted. Columns:

All parameters are declared required by NSE; “default” values are passed as 0 or "".

CM Market Live — https://mcp.nseindia.in/cmmkt/mcp

Capability MCP Tool Description Parameters Response Implemented Demonstrated Tested Notes
Gainers/losers feed freshness cm_get_data_status When the gainers/losers cache was last crawled — {indices:{gainers,loosers:{available,lastCrawled}}, crawlIntervalMinutes, redisTtlMinutes} ✅ status view E M · L Crawl every 5 min
All-stocks cache status cm_get_allstocks_status Freshness + per-segment security counts — {available,lastCrawled,crawlIntervalMinutes,segmentCounts{EQUITY,SME,CALL_AUCTION,BONDS,TOTAL}} ✅ status view E M · L Crawl every 1 min
Live quote cm_get_stock_quote Latest quote for one exact symbol, any segment symbol string {updatedAt, stock{symbol,series,open/high/low/preClose/lastTradedPrice,change,perChange,volume,value(₹Cr),fiftyTwoWeekHigh/Low,perChange30d,latestTimestamp}} ✅ quote card + 52W bar E, R M · L Unknown symbol → soft error
Top gainers & losers (sorted) nse_get_market_movers Sorted top N gainers and losers, all securities or one index indexName “” / NIFTY / BANKNIFTY / NIFTYNEXT50; limit (0→10, max 50) {segment, gainersUpdatedAt, losersUpdatedAt, gainers[], losers[]} rows: symbol, series, ltp, prev_price, net_price, perChange, trade_quantity, turnover(₹ lakh) ✅ ranked bars + tables E, R M · L NSE’s “primary tool” for movers
Top gainers (flattened) nse_get_gainers Top N gainers across indices limit (0→10, max 50) Intended: ranked list. Actual: {"index":"gainers","error":"Failed to parse cached data: … ArrayList cannot be cast to … Map"} ✅ (shows soft error + known-issue banner) — M (reproduces bug) · L: soft error every call Blocked by NSE — server-side bug. Use nse_get_market_movers.
Top losers (flattened) nse_get_losers Top N losers across indices limit Same server-side error as above ✅ (soft error + banner) — M · L: soft error every call Blocked by NSE — server-side bug
Raw gainers by segment cm_get_live_gainers NSE’s raw, unsorted gainers feed per segment — {index, updatedAt, totalStocks, data{legends[], NIFTY{data[],timestamp}, BANKNIFTY, NIFTYNEXT50, SecGtr20, SecLwr20, FOSec, allSec}} ✅ segment picker + table — M · L ~40 KB response
Raw losers by segment cm_get_live_losers Raw losers feed per segment — Same shape ✅ segment picker — M · L ~40 KB
Raw movers by type cm_get_live_market_data Raw feed selected by index index “gainers” / “loosers” Same shape ✅ segment picker — M · L NSE spells it “loosers”
Equity listing cm_get_equity_stocks Live data for EQ, BE, BL, BT, IL, IQ series limit (0→100, max 500), symbolFilter prefix {segment, updatedAt, returned, stocks[]} (quote rows) ✅ table + % bars — M · L  
SME listing cm_get_sme_stocks Live data for SME (SM, ST) limit, symbolFilter Same ✅ E M · L OHLC can be 0 before first trade
Bonds & other instruments cm_get_bond_stocks Every non-equity/SME/call-auction series: bonds, G-secs, SGBs, InvITs/REITs, T-bills limit, symbolFilter Same ✅ E M · L  
Call auction listing cm_get_call_auction_stocks Call-auction session securities limit, symbolFilter Same ✅ — M · L  

NSE Bhavcopy — https://mcp.nseindia.in/bhavcopy/cm/mcp

Capability MCP Tool Description Parameters Response Implemented Demonstrated Tested Notes
Symbol lookup nse_lookup_symbol Tickers matching a partial name query {count, symbols[]} ✅ chips E M · L Cheapest call
Symbol search with prices search_symbols Matches + last close, % change, last date query {count, results[{symbol,last_close,pct_change,last_date}]} ✅ table E M · L Includes delisted symbols
Daily OHLCV history get_stock_history ≤ 3 months per call; chain via next_end_date symbol, months (0→3, max 3), endDate (“today”/date) {symbol, from_date, to_date, trading_days, summary{…}, data[{date,open,high,low,close,prevClose,volume,totalTradedValue,deliveryQty…}], next_end_date} ✅ price+SMA+volume chart, table E, R M · L Unadjusted; deliveryQty always 0
Close on a date get_ltp_by_date Close for a date (or previous trading day) symbol, date bare number ✅ stat E M · L Not JSON
Bulk EOD quotes get_bulk_quote EOD snapshot for up to 50 symbols symbols[] {quotes[{symbol,open,high,low,close,prev_close,pct_change,volume,date}]} ✅ table + bars E, R M · L  
Top movers on a date get_top_movers Top N gainers/losers for a date date, n (≤50), direction gain/loss {date, requested_date, direction, count, stocks[]} ✅ ranked bars E M · L Silent fallback to nearest/latest trading day
Most active on a date get_top_by_volume Top N by volume or turnover date, n, sortBy volume/value {date, requested_date, sort_by, count, stocks[]} ✅ table E M · L  
Volume analysis get_volume_analysis Avg/max/min volume, spikes (>2×), last 5 days symbol, days (5–252, clamped) {avg_volume, max_volume, min_volume, last_volume, last_vs_avg_pct, volume_spike_days, recent_5_days[]} ✅ stats + bars E, R M · L  
Market breadth get_market_breadth Advances/declines/unchanged, A/D ratio date {date,total_stocks,advances,declines,unchanged,ad_ratio,total_volume} ✅ stacked bar E, R M · L A/D > 1.5 bullish, < 0.7 bearish
Simple moving average moving_average SMA of closes over N days symbol, days bare number ✅ stat E M · L Unadjusted
52-week high/low get_52_week_high_low Extremes with dates and position in range symbol {last_close, 52w_high, 52w_high_date, 52w_low, 52w_low_date, position_in_range_pct, from_52w_high_pct, from_52w_low_pct, trading_days} ✅ range bar E, R M · L Unadjusted
Compare stocks compare_stocks Return % and max drawdown, ranked symbols[] (≤10), months (1–24) {from_date, to_date, months, stocks[{symbol,start_price,end_price,return_pct,max_drawdown,trading_days}]} ✅ bars + table E, R M · L Unadjusted
Corporate actions get_corporate_actions Splits, bonuses, dividends with ex-dates and adjustment factors symbol, fromDate, toDate (“” → last 5 years) {symbol, from, to, count, actions[{exDate, actionType, purpose, adjustmentFactor}]} ✅ table E, R M · L First call per symbol ~2 s; 24 h cache

Other MCP capabilities

Capability Status Notes
Prompts (prompts/list) Declared, empty Checked at connect time; dashboard shows 0
Resources (resources/list, templates) Declared, empty Dashboard shows 0
Logging / completions Declared Not used by NSE tools
Server-initiated messages (GET SSE) Accepted, idle NSE never pushes
Session termination (DELETE) Not supported (Akamai rejects) Python SDK: terminate_on_close=False

Expected but not provided by NSE MCP (documentation only)

Area Status
Delivery data / delivery % Not available — deliveryQty always 0
Derivatives: F&O, option chains, futures, OI Not exposed
Index levels / index history Not exposed (index names only filter movers)
Corporate announcements, board meetings, results Not exposed (only corporate-action ex-dates)
Explicit market status (open/closed) Not exposed (cm_get_data_status is a freshness proxy)
Intraday candles, tick data, order book depth Not exposed (mentioned on NSE’s marketing page)
“Price performance & returns” tool (get_price_performance) Listed on NSE’s page and referenced in a tool description, not exposed

Summary

  Count
Tools discovered 26 (13 + 13)
Implemented in the Explorer 26
Demonstrated in guided examples / recipes 19 (not: the 2 broken tools, the 3 raw segment feeds, equity and call-auction listings — all 26 are still runnable with visual output in the Explorer and available to the agent)
Tested against mock (automated) 26
Executed successfully live through this app 24
Blocked by NSE (server-side bug) 2 — nse_get_gainers, nse_get_losers