印度国家证券交易所数据协议服务器

提供实时印度国家证券交易所数据的模型上下文协议(MCP)服务器,适用于AI助手和自动化交易系统。

  • by prateeekphukar
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 prateeekphukar/mcp-server-nse-minimix

使用说明

🇮🇳 NSE印度MCP服务器

A. 模型上下文协议(MCP) 提供实时访问的服务器 印度国家证券交易所 数据——股票、衍生品、指数、期权链等。

专为需要实时印度市场数据的人工智能助手和自动交易系统而构建。


✨ 特性

类别 端点 状态
股票报价 单股和多股实时报价 ✅ 现场直播
所有指数 135+NSE指数(NIFTY 50、Bank NIFTY等) ✅ 现场直播
期货数据 OI股票和指数期货,交易量 ✅ 现场直播
选项数据 包含希腊就绪数据的完整选项链 ✅ 现场直播
期权链 按符号完成带有罢工和赔偿的链 ✅ 现场直播
公司信息 名称、行业、ISIN、上市日期 ✅ 现场直播
公司行动 股息、分割、奖金、权利 ✅ 现场直播
涨幅最大 按变化百分比排序 ✅ 现场直播
顶级失败者 按变化百分比排序 ✅ 现场直播
最活跃 按体积(950种成分) ✅ 现场直播
进步/衰落 市场广度数据 ✅ 现场直播
ETF/MF计划 NSE上市的312多只ETF✅ 现场直播
货币汇率 市场状态下的美元印度卢比 ✅ 现场直播
符号搜索 跨NSE自动完成搜索 ✅ 现场直播
市场现状 带时间的开放/关闭/预开放 ✅ 现场直播
历史数据 OHLCV病史(NSE为其服务时) ⚠️ 取决于NSE

🚀 快速开始

先决条件

  • Python 3.10+
  • 点

安装

# Clone the repo
git clone https://github.com/YOUR_USERNAME/mcp-server-nse-minimix.git
cd mcp-server-nse-minimix

# Install dependencies
pip install -e .

用法

import asyncio
from nseindia_mcp.client import NSEClient

async def main():
    async with NSEClient() as client:
        # Get real-time quote
        quote = await client.get_quote("RELIANCE")
        print(f"RELIANCE: ₹{quote.last_price} ({quote.percent_change}%)")

        # Get all 135+ indices
        indices = await client.get_all_indices()
        for idx in indices[:5]:
            print(f"{idx.name}: {idx.value}")

        # Get NIFTY futures
        futures = await client.get_nifty_futures()
        for f in futures:
            print(f"NIFTY {f.expiry_date}: ₹{f.last_price} OI={f.oi:,}")

        # Get options chain
        chain = await client.get_option_chain("NIFTY")
        print(f"NIFTY options: {len(chain['records']['data'])} contracts")

        # Top gainers
        gainers = await client.get_top_gainers(5)
        for g in gainers:
            print(f"  {g['symbol']}: {g['percent_change']}%")

asyncio.run(main())

📦 项目结构

mcp-server-nse-minimix/
├── pyproject.toml              # Project metadata & dependencies
├── README.md
├── src/
│   └── nseindia_mcp/
│       ├── __init__.py         # Package init
│       ├── client.py           # Core NSEClient with all API methods
│       ├── config.py           # Server configuration & endpoints
│       ├── models.py           # Data models (StockQuote, IndexData, etc.)
│       ├── cache.py            # TTL-based caching layer
│       ├── utils.py            # Formatting & helper utilities
│       └── tools.py            # MCP tool registrations
├── test_all.py                 # Full test suite (19 datapoints)
└── show_options.py             # Example: display top 3 stock options

🔧 API 参考

股权数据

方法 说明
get_quote(symbol) 实时股票报价
get_multiple_quotes([symbols]) 批量报价(并发)
get_company_info(symbol) 公司名称、行业、ISIN
get_corporate_actions(symbol) 股息、分割、红利

索引数据

方法 说明
get_all_indices() 所有135+NSE指数
get_index_data(name) 按名称列出的具体索引

衍生品

方法 说明
get_futures_data(symbol) 具有OI和交易量的期货合约
get_options_data(symbol) 按交易品种划分的期权合约
get_option_chain(symbol) 完整选项链
get_nifty_futures() 九个期货捷径
get_nifty_options() 九个选项快捷方式

市场分析

方法 说明
get_top_gainers(limit) 涨幅最大的股票
get_top_losers(limit) 亏损最多的股票
get_most_active(limit) 按交易量计算最活跃
get_advances_declines() 市场广度
get_market_status() 市场开盘/收盘状态

其他

方法 说明
get_mf_schemes() NSE的ETF/MF计划
get_currency_rate(pair) 美元兑印度卢比汇率
search_symbols(query) 符号搜索/自动补全
get_historical_data(symbol, days) 历史OHLCV

🧪 测试结果

测试于 2026年2月24日 在现场市场时段:

============================================================
 NSE MCP Server - Full Datapoint Test
============================================================
  PASS  get_quote('RELIANCE')          ->  StockQuote
  PASS  get_multiple_quotes(...)       ->  list[2]
  PASS  get_all_indices()              ->  list[135]
  PASS  get_index_data('NIFTY 50')     ->  IndexData
  PASS  get_market_status()            ->  MarketStatusInfo
  PASS  get_futures_data('RELIANCE')   ->  list[3]
  PASS  get_options_data('RELIANCE')   ->  list[201]
  PASS  get_nifty_futures()            ->  list[3]
  PASS  get_option_chain('NIFTY')      ->  dict (1143 contracts)
  PASS  get_company_info('RELIANCE')   ->  CompanyInfo
  PASS  get_corporate_actions(...)     ->  list[20]
  PASS  get_top_gainers(3)             ->  list[3]
  PASS  get_top_losers(3)              ->  list[3]
  PASS  get_most_active(3)             ->  list[3]
  PASS  get_advances_declines()        ->  dict
  PASS  get_mf_schemes()               ->  list[312]
  PASS  get_currency_rate('USDINR')    ->  CurrencyData
  PASS  search_symbols('relia')        ->  list[18]

  RESULT:  18 / 19  passed
------------------------------------------------------------
  Only failure: get_historical_data -> NSE returns 503 (their server maintenance)

🔑 运作原理

Cookie管理

NSE印度使用 Akamai机器人管理器 保护其API。此服务器通过以下方式处理它:

  1. 访问 /market-data/live-equity-market 获得临界值 nsit 会话cookie
  2. 在会话持久性请求中累积Cookie
  3. 每5分钟自动刷新一次饼干

NSE NextApi

NSE最近将衍生数据迁移到一个新的内部API:

/api/NextApi/apiClient/GetQuoteApi?functionName=getSymbolDerivativesData&symbol=SYMBOL

老人 /api/quote-derivative 端点返回空数据。此服务器对所有衍生产品使用新的NextApi。

不 Accept-Encoding 头球

NSE返回 brotli压缩 响应时 Accept-Encoding: br 已发送。自从 httpx (HTTP/1.1模式)无法自动解压缩brotli,我们故意省略此标头,以便NSE发送纯JSON。


📋 依赖项

包装 用途
httpx 异步HTTP客户端
pandas 数据操纵
beautifulsoup4 HTML解析
python-dateutil 日期解析
pytz 时区处理

⚠️ 免责声明

这个项目是为了 仅用于教育和研究目的.

  • 不隶属于NSE印度
  • 数据可能存在延迟;不用于实时交易决策
  • 尊重NSE的费率限制和服务条款
  • 负责任地使用

📄 许可证

MIT许可证


🤝 贡献

  1. 分叉回购
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求