🇮🇳 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。此服务器通过以下方式处理它:
- 访问
/market-data/live-equity-market获得临界值nsit会话cookie - 在会话持久性请求中累积Cookie
- 每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许可证
______________________________________________________________________
🤝 贡献
- 分叉回购
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
