mcpField
I
Indian NSE Stock Insights

Indian NSE Stock Insights

远程服务
github.com/alokbarnwal金融数据126 周前更新
代码仓库

关于 Indian NSE Stock Insights

Indian NSE Stock Insights 是面向印度股市分析的公开 MCP 服务,覆盖 Nifty 500 股票。它提供报价、技术指标、价格形态分析与筛选,并支持三个时间周期;仅供教育和信息参考,不构成投资建议。

主要功能

  1. 01股票报价与 OHLCV 数据
  2. 02技术指标与支撑阻力位
  3. 03供需区及蜡烛图形态
  4. 04图表形态与斐波那契水平
  5. 05成交量分析与市场概览
  6. 06股票比较与条件筛选

适用场景

  1. 01查看 Nifty 500 股票的技术指标
  2. 02比较多只股票的趋势和回报
  3. 03按 RSI、趋势或形态筛选股票
  4. 04检查市场指数、涨跌股与供需区

MCP 相关

该 MCP 服务通过 12 个工具向 MCP 客户端提供印度股票市场数据与分析,涵盖 Nifty 500 和 daily、15min、5min 时间周期。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://stockmcp.alokbarnwal.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

12
参数类型必填说明
symbolstring是

详细介绍

印度 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 个工具

#工具参数返回内容
1get_stock_quotesymbol最近收盘价、前收盘价、涨跌幅%、日内最高/最低价、成交量
2get_ohlc_datasymbol、timeframe?、limit?OHLCV 蜡烛图(最多 500 条,最新数据在前)
3get_technical_indicatorssymbol、timeframe?EMA、SMA、RSI、MACD、布林带、ADX、随机指标、ATR、OBV、VWAP
4get_support_resistancesymbol、timeframe?枢轴点 + 历史支撑/阻力位
5get_demand_supply_zonessymbol、timeframe?、status?需求/供应区域(DBR/RBR/RBD/DBD)
6get_candlestick_patternssymbol、timeframe?、limit?HAMMER、DOJI、ENGULFING 等
7get_chart_patternssymbol、timeframe?、status?DOUBLE_TOP、HEAD_AND_SHOULDERS 等
8get_fibonacci_levelssymbol、timeframe?带斐波那契水平的回撤波段(UP/DOWN)
9get_volume_analysissymbol5 分钟热点、OBV 趋势、成交量比率
10get_market_overview(无)指数、涨幅领先/落后股票、交易最活跃股票、市场广度
11compare_stockssymbols(2-5 个)、timeframe?并排对比:报价、RSI/MACD/ADX、趋势、30 日回报
12screen_stocksfilters按 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
fail2ban2 分钟内触发 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
### 8b. 批量计算指标(耗时较长,请使用 screen/tmux)

蜡烛数据回填完成后,为全部 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。