关于 Indian NSE Stock Insights
Indian NSE Stock Insights 是面向印度股市分析的公开 MCP 服务,覆盖 Nifty 500 股票。它提供报价、技术指标、价格形态分析与筛选,并支持三个时间周期;仅供教育和信息参考,不构成投资建议。
主要功能
- 01股票报价与 OHLCV 数据
- 02技术指标与支撑阻力位
- 03供需区及蜡烛图形态
- 04图表形态与斐波那契水平
- 05成交量分析与市场概览
- 06股票比较与条件筛选
适用场景
- 01查看 Nifty 500 股票的技术指标
- 02比较多只股票的趋势和回报
- 03按 RSI、趋势或形态筛选股票
- 04检查市场指数、涨跌股与供需区
MCP 相关
该 MCP 服务通过 12 个工具向 MCP 客户端提供印度股票市场数据与分析,涵盖 Nifty 500 和 daily、15min、5min 时间周期。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://stockmcp.alokbarnwal.com/mcpclaude mcp add --transport http alokbarnwal-nse-public https://stockmcp.alokbarnwal.com/mcp{"mcpServers":{"alokbarnwal-nse-public":{"type":"http","url":"https://stockmcp.alokbarnwal.com/mcp"}}}在 Cursor 中打开{"servers":{"alokbarnwal-nse-public":{"type":"http","url":"https://stockmcp.alokbarnwal.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"alokbarnwal-nse-public":{"type":"http","url":"https://stockmcp.alokbarnwal.com/mcp"}}}{"mcpServers":{"alokbarnwal-nse-public":{"serverUrl":"https://stockmcp.alokbarnwal.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
12| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| symbol | string | 是 |
详细介绍
印度 NSE 股票洞察 🇮🇳📈
面向印度股市分析的公共 MCP 服务——Nifty 500 股票池、12 个工具、3 种时间周期。
基于 FastMCP 构建 · 数据来自 yfinance · 托管于 stockmcp.alokbarnwal.com
仅供学习,不构成投资建议。 请参阅 DISCLAIMER.md。
快速连接 — 30 秒
Claude.ai → 设置 → 连接器 → 添加自定义 MCP 连接器:
Name: Indian NSE Stock Insights
URL: https://stockmcp.alokbarnwal.com/mcp
就是这样。现在可以开始询问印度股票相关问题了。
12 个工具
| # | 工具 | 参数 | 返回内容 |
|---|---|---|---|
| 1 | get_stock_quote | symbol | 最近收盘价、前收盘价、涨跌幅%、日内最高/最低价、成交量 |
| 2 | get_ohlc_data | symbol、timeframe?、limit? | OHLCV 蜡烛图(最多 500 条,最新数据在前) |
| 3 | get_technical_indicators | symbol、timeframe? | EMA、SMA、RSI、MACD、布林带、ADX、随机指标、ATR、OBV、VWAP |
| 4 | get_support_resistance | symbol、timeframe? | 枢轴点 + 历史支撑/阻力位 |
| 5 | get_demand_supply_zones | symbol、timeframe?、status? | 需求/供应区域(DBR/RBR/RBD/DBD) |
| 6 | get_candlestick_patterns | symbol、timeframe?、limit? | HAMMER、DOJI、ENGULFING 等 |
| 7 | get_chart_patterns | symbol、timeframe?、status? | DOUBLE_TOP、HEAD_AND_SHOULDERS 等 |
| 8 | get_fibonacci_levels | symbol、timeframe? | 带斐波那契水平的回撤波段(UP/DOWN) |
| 9 | get_volume_analysis | symbol | 5 分钟热点、OBV 趋势、成交量比率 |
| 10 | get_market_overview | (无) | 指数、涨幅领先/落后股票、交易最活跃股票、市场广度 |
| 11 | compare_stocks | symbols(2-5 个)、timeframe? | 并排对比:报价、RSI/MACD/ADX、趋势、30 日回报 |
| 12 | screen_stocks | filters | 按 RSI、ADX、趋势、形态、行业等筛选 |
timeframe 默认为 daily。可选项:daily、15min、5min。
示例提示词
连接后,可在 Claude.ai 中尝试以下提示:
- "RELIANCE ka technical analysis do — RSI, MACD, aur support/resistance levels batao"
- "Show me Nifty 500 stocks with RSI below 30 and ADX above 25"
- "Compare TCS, INFY, and WIPRO — which one has the best setup right now?"
- "What does the overall market look like today? Show me top gainers and losers"
- "HDFC Bank ke demand and supply zones dikhao on the 15-minute chart"
架构
graph TB
subgraph Internet
C[Claude.ai / MCP Client]
end
subgraph Server["Production Server"]
subgraph Protection
F2B[fail2ban<br/>auto-ban repeat abusers]
NG[nginx<br/>rate limit 20r/s · conn limit · TLS]
end
subgraph Application
MCP["FastMCP Server<br/>port 8089 · 12 tools"]
TOOLS["Tool Modules<br/>quote · ohlc · indicators<br/>levels · zones · patterns<br/>fibonacci · volume · market<br/>compare · screener"]
end
subgraph Data
DB[(MySQL: nse_public<br/>500 stocks × 3 timeframes)]
CRON[Cron Jobs<br/>5min · 15min · daily]
end
end
subgraph External
YF[Yahoo Finance<br/>yfinance API]
end
C -->|HTTPS POST /mcp| NG
NG -->|proxy_pass| MCP
MCP --> TOOLS
TOOLS -->|read-only queries| DB
YF -->|OHLCV data| CRON
CRON -->|upsert| DB
F2B -.->|monitors| NG
数据覆盖范围
| 时间周期 | 数据保留时长 | 更新频率 | 股票数量 |
|---|---|---|---|
| 日线 | 5 年 | 每日收盘后(18:00 IST) | 500 |
| 15 分钟 | 2 年 | 每 15 分钟(交易时段) | 500 |
| 5 分钟 | 6 个月 | 每 5 分钟(交易时段) | 500 |
交易时段:周一至周五 09:15–15:30 IST(NSE 假日除外)。
速率限制
| 层级 | 限制 | 操作 |
|---|---|---|
| nginx | 每个 IP 每秒 20 个请求(突发上限 40) | HTTP 429 |
| nginx | 每个 IP 同时最多 10 个连接 | HTTP 429 |
| fail2ban | 2 分钟内触发 5 次速率限制违规 | 封禁 IP 1 小时 |
自托管
点击展开 — 完整部署操作手册
运行于
/home/ubuntu/nse-public-mcp/,与/home/ubuntu/swingtrader/完全隔离。
1. 克隆
cd /home/ubuntu
git clone https://github.com/alokbarnwal/nse-public-mcp.git
cd nse-public-mcp
2. 创建数据库和用户
sudo mysql <<'SQL'
CREATE DATABASE IF NOT EXISTS nse_public CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'nse_writer'@'localhost' IDENTIFIED BY 'CHANGE_ME_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON nse_public.* TO 'nse_writer'@'localhost';
FLUSH PRIVILEGES;
SQL
3. 应用架构
mysql -u nse_writer -p nse_public < db/schema.sql
mysql -u nse_writer -p nse_public < db/schema_indicators.sql
mysql -u nse_writer -p nse_public < db/schema_price_action.sql
4. 安装依赖项
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
5. 配置环境
cp .env.example .env
chmod 600 .env
nano .env # set DB_PASSWORD to match step 2
6.(可选)刷新完整的 Nifty 500 名单
仓库内置了约 100 只股票的硬编码名单。若要扩展到全部 500 只:
python -m config.stocks --refresh # fetches NSE archives, rewrites config/stocks.py
7. 将股票池载入数据库
python -m config.stocks --load-to-db
8. 回填历史数据(耗时较长,请使用 screen/tmux)
screen -S backfill
source .venv/bin/activate
python -m data.backfill --all
# Ctrl-A D to detach. Reattach: screen -r backfill
预计运行时间:
daily 5y × 500:约 30 分钟15min 2y × 500:约 2 小时5min 6mo × 500:约 1 小时
如果发生任何失败,失败列表会写入 backfill_failures_<timeframe>.json。重新运行:
python -m data.backfill --timeframe 15min --resume
蜡烛数据回填完成后,为全部 500 只股票在全部 3 个时间周期填充 indicators 表:
screen -S indicators
cd /home/ubuntu/nse-public-mcp
python3 -m indicators.runner --all
# Ctrl-A D to detach
预计耗时:约 30–45 分钟。支持幂等操作——中断后可安全重跑。
8c. 批量计算价格行为(耗时较长,请使用 screen/tmux)
指标填充完成后,为全部 500 只股票在全部 3 个时间周期计算价格行为特征(区域、支撑位/阻力位、形态、突破、斐波那契、缺口、成交量分布):
screen -S price_action
cd /home/ubuntu/nse-public-mcp
python3 -m price_action.runner --timeframe daily --all-features
python3 -m price_action.runner --timeframe 15min --all-features
python3 -m price_action.runner --timeframe 5min --all-features
# Ctrl-A D to detach
预计总耗时:约 60–90 分钟。支持幂等操作——中断后可安全重跑。
9. 安装 crontab
crontab -e
添加:
# nse-public-mcp candle updaters
*/5 9-15 * * 1-5 cd /home/ubuntu/nse-public-mcp && /home/ubuntu/nse-public-mcp/.venv/bin/python -m jobs.cron_5min >> logs/cron_5min.log 2>&1
*/15 9-15 * * 1-5 cd /home/ubuntu/nse-public-mcp && /home/ubuntu/nse-public-mcp/.venv/bin/python -m jobs.cron_15min >> logs/cron_15min.log 2>&1
0 18 * * 1-5 cd /home/ubuntu/nse-public-mcp && /home/ubuntu/nse-public-mcp/.venv/bin/python -m jobs.cron_daily >> logs/cron_daily.log 2>&1
# nse-public-mcp indicator updaters (each runs after the matching candle fetch)
30 18 * * 1-5 cd /home/ubuntu/nse-public-mcp && /usr/bin/python3 -m jobs.cron_indicators_daily >> logs/indicators_daily.log 2>&1
20,35,50 9-15 * * 1-5 cd /home/ubuntu/nse-public-mcp && /usr/bin/python3 -m jobs.cron_indicators_15min >> logs/indicators_15min.log 2>&1
5 16 * * 1-5 cd /home/ubuntu/nse-public-mcp && /usr/bin/python3 -m jobs.cron_indicators_15min >> logs/indicators_15min.log 2>&1
2-57/5 9-15 * * 1-5 cd /home/ubuntu/nse-public-mcp && /usr/bin/python3 -m jobs.cron_indicators_5min >> logs/indicators_5min.log 2>&1
# nse-public-mcp price-action updaters (each runs after the matching indicator cron)
35 18 * * 1-5 cd /home/ubuntu/nse-public-mcp && /usr/bin/python3 -m jobs.cron_price_action_daily >> logs/price_action_daily.log 2>&1
25,55 9-15 * * 1-5 cd /home/ubuntu/nse-public-mcp && /usr/bin/python3 -m jobs.cron_price_action_15min >> logs/price_action_15min.log 2>&1
9-54/15 9-15 * * 1-5 cd /home/ubuntu/nse-public-mcp && /usr/bin/python3 -m jobs.cron_price_action_5min >> logs/price_action_5min.log 2>&1
Cron 时间采用服务器本地时间。请确认服务器使用 IST(
timedatectl)——如果不是,请调整小时范围。 5 分钟指标 cron 的偏移设置为2-57/5,使其在cron_5min运行约 2 分钟后执行,避免读取过期的蜡烛数据。 5 分钟价格行为 cron 的偏移设置为9-54/15(第 9、24、39、54 分钟),使其在每个cron_indicators_5min时段运行约 2 分钟后执行。
10. 验证
mysql -u nse_writer -p nse_public <<'SQL'
SELECT 'daily' AS tf, COUNT(*) AS n FROM candles_daily
UNION ALL SELECT '15min', COUNT(*) FROM candles_15min
UNION ALL SELECT '5min', COUNT(*) FROM candles_5min;
-- Per-stock coverage on daily — flag any with < 1000 rows (~4 trading years)
SELECT symbol, COUNT(*) AS n
FROM candles_daily
GROUP BY symbol
HAVING n < 1000
ORDER BY n;
-- Latest data freshness
SELECT MIN(candle_date) AS earliest, MAX(candle_date) AS latest
FROM candles_daily;
-- Recent cron health
SELECT job_type, timeframe, symbols_success, symbols_failed, started_at, duration_seconds
FROM fetch_log
ORDER BY started_at DESC
LIMIT 20;
SQL
磁盘上的数据库大小:
sudo du -sh /var/lib/mysql/nse_public/
服务管理
# Server status
sudo systemctl status nse-public-mcp
# Restart
sudo systemctl restart nse-public-mcp
# Logs
sudo journalctl -u nse-public-mcp -n 100 -f
# nginx
sudo nginx -t && sudo systemctl reload nginx
# fail2ban
sudo fail2ban-client status nginx-mcp-ratelimit
目录结构
架构和数据流图请参阅 PROJECT.md。
config/ # settings, stock universe, holiday calendar
data/ # yfinance fetcher, backfill CLI, shared upsert helpers
db/ # schema and pooled connection
indicators/ # technical indicator compute, persist, runner
price_action/ # zones, patterns, levels, trends
mcp_server/ # FastMCP server + 12 tool modules
jobs/ # cron entrypoints (candles + indicators + price action)
deploy/ # systemd service, nginx config, fail2ban rules
tests/ # mocked unit tests (82 tests)
运维说明
- 请合理使用 Yahoo Finance。 抓取器会在请求之间等待 1–3 秒,并采用退避策略重试。请勿缩短等待时间。
- 支持幂等操作。 所有插入操作均使用
INSERT … ON DUPLICATE KEY UPDATE。重放 cron 定时任务或重新运行回填都是安全的。 - 节假日日历位于
config/holidays.py。NSE 发布下一年度列表后,请每年更新一次。 - 数据保留清理在
jobs/cron_daily.py末尾执行。超过 5 年的日线数据、超过 2 年的 15 分钟数据和超过 6 个月的 5 分钟数据将被清除。
许可证
MIT — 可免费使用、修改和分发。
免责声明
本项目仅用于教育和信息参考,不构成投资建议。请参阅 DISCLAIMER.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。