内容
# 交易工具包 MCP
一个提供14个实时市场筛选和交易情报工具的模型上下文协议(MCP)服务器。由TradingView的公共筛选器API提供支持 — **无需API密钥,无需身份验证,无需付费订阅,零成本**。
为与 [Claude Code](https://claude.ai/claude-code), [Claude Desktop](https://claude.ai) 或任何兼容MCP的客户端一起使用而构建。
## 工具概览
| 类别 | 工具 | 描述 |
|----------|------|-------------|
| **简报** | `morning_brief` | 针对任意股票列表的完整盘前简报 |
| **简报** | `watchlist_brief` | 加载JSON/CSV观察列表文件并简报所有符号 |
| **概览** | `market_pulse` | 一键市场概览:指数,涨跌比率,顶级RVOL |
| **概览** | `sector_heatmap` | 行业级聚合变化,RVOL,领涨/领跌 |
| **变动** | `show_movers` | 按RVOL,成交量,盘前或缺口排序的美国顶级股票 |
| **变动** | `show_movers_il` | 按RVOL,成交量或变化排序的以色列(TASE)顶级股票 |
| **变动** | `screener` | 自定义筛选器查询,带有灵活的过滤器 |
| **扫描器** | `premarket_scanner` | 股票的盘前成交量 >= X%的平均日成交量 |
| **扫描器** | `gap_scanner` | 股票按可配置的百分比范围向上/向下跳空 |
| **扫描器** | `unusual_activity` | 高RVOL + 小价格变化(隐秘定位) |
| **扫描器** | `earnings_movers` | 高RVOL + 大价格变化(催化剂反应) |
| **分析** | `compare_stocks` | 2-10只股票的并排比较表 |
| **分析** | `alert_levels` | 关键技术水平:MAs,BBands,枢轴,ATR |
| **分析** | `historical_rvol` | 当前RVOL上下文,成交量评估 |
---
## 安装
### 先决条件
- Node.js 18+(已在Node 25上测试)
- 兼容MCP的客户端(Claude Code,Claude Desktop等)
### 设置
```bash
git clone https://github.com/yhaspel/trading-tooltip-mcp.git
cd trading-toolkit-mcp
npm install
```
### 配置
**对于Claude Code** — 添加到项目的 `.mcp.json` 中:
```json
{
"mcpServers": {
"trading-toolkit": {
"command": "node",
"args": ["/path/to/trading-toolkit-mcp/src/server.js"]
}
}
}
```
**对于Claude Desktop** — 添加到 `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)或 `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"trading-toolkit": {
"command": "node",
"args": ["/path/to/trading-toolkit-mcp/src/server.js"]
}
}
}
```
重启MCP客户端以加载服务器。
---
## 工具参考和使用示例
### `morning_brief`
针对股票列表的完整盘前简报。返回价格、变化、缺口、盘前成交量(占平均日成交量的百分比)、RVOL、完整技术分析(RSI、MACD、MAs、BB、ADX、推荐分数)、行业和市值。
```
morning_brief with symbols="NASDAQ:NVDA,NASDAQ:PLTR,NYSE:TSM,NASDAQ:TSLA"
```
**提示:** 如果TradingView MCP也正在运行,首先调用 `watchlist_get` 获取符号,然后将它们传递到这里。
---
### `watchlist_brief`
从本地JSON或CSV文件加载观察列表,并对所有符号进行简报。
```
watchlist_brief with file_path="/path/to/my_watchlist.json"
```
JSON格式: `["NASDAQ:NVDA", "NYSE:TSM", "TASE:ESLT"]`
CSV格式: 每行一个股票代码。
---
### `market_pulse`
一键市场概览。返回:SPY、QQQ、IWM、DIA状态,涨跌比率估计,以及前5名异常成交量股票。无需参数。
```
market_pulse
```
---
### `sector_heatmap`
行业级聚合视图:平均变化%,平均RVOL,股票数量,每个行业的前几名和后几名。
```
sector_heatmap
```
带有过滤器:
```
sector_heatmap with market="america", min_market_cap=10000000000
```
---
### `show_movers`
按您选择的指标排序的美国顶级股票变动。
按RVOL(默认 — 适合异常活动):
```
show_movers
```
按盘前成交量:
```
show_movers with sort_by="premarket_volume", min_premarket_volume=500000
```
最大跌幅:
```
show_movers with sort_by="change_down", min_volume=5000000
```
市值超过100亿美元的缺口上涨:
```
show_movers with sort_by="gap_up", min_market_cap=10000000000
```
排序选项: `rvol`, `volume`, `premarket_volume`, `gap_up`, `gap_down`, `change_up`, `change_down`
---
### `show_movers_il`
以色列(TASE)顶级股票变动。
```
show_movers_il
```
高成交量的TASE股票:
```
show_movers_il with sort_by="volume", min_volume=500000
```
---
### `screener`
自定义筛选器查询,完全控制过滤器和排序。
今日下跌幅度较大的科技股:
```
screener with sort_by="change", sort_order="asc", min_volume=5000000, min_market_cap=10000000000, max_change=-5
```
以色列小盘股上涨:
```
screener with market="israel", sort_by="change", sort_order="desc", min_volume=100000, min_change=3
```
---
### `premarket_scanner`
查找已在盘前交易中完成显著百分比的平均日成交量的股票。适用于缺口交易者的关键指标。
盘前成交量占日平均成交量30%以上的股票:
```
premarket_scanner
```
激进过滤器 — 盘前成交量占日平均成交量50%以上:
```
premarket_scanner with min_premkt_pct_of_avg=50, min_market_cap=5000000000
```
---
### `gap_scanner`
查找按可配置百分比范围跳空的所有股票。与缺口交易策略配对。
所有缺口4-20%:
```
gap_scanner
```
仅下跌缺口:
```
gap_scanner with direction="down", min_gap_pct=3, max_gap_pct=15
```
大市值股票上涨缺口:
```
gap_scanner with direction="up", min_gap_pct=2, min_market_cap=50000000000
```
---
### `unusual_activity`
查找具有高相对成交量但价格变化较小的股票 — 潜在的隐秘积累/分布或期权驱动活动。
```
unusual_activity
```
更严格的过滤器 — RVOL 3倍以上,价格变化小于1%:
```
unusual_activity with min_rvol=3.0, max_abs_change=1.0
```
---
### `earnings_movers`
查找对盈利或主要催化剂做出反应的股票:高RVOL和大价格变动。
```
earnings_movers
```
仅大型股反应:
```
earnings_movers with min_rvol=5.0, min_abs_change=10, min_market_cap=50000000000
```
---
### `compare_stocks`
2-10只股票的并排比较表。显示价格、变化、RVOL、RSI、ADX、TA评级、价格与MAs、市值、行业、缺口和盘前变化。
```
compare_stocks with symbols="NASDAQ:NVDA,NASDAQ:AMD,NYSE:TSM,NASDAQ:AVGO"
```
---
### `alert_levels`
单个股票的关键技术水平:所有主要MAs(SMA/EMA 20/50/200)、布林带、月度枢轴点、RSI、ADX和ATR。适用于选择执行价格和止损水平。
```
alert_levels with symbol="NASDAQ:NVDA"
```
---
### `historical_rvol`
股票的当前RVOL上下文:今日成交量与10日和30日平均值、相对成交量、盘前成交量和纯语言评估(正常/升高/高/极端)。
```
historical_rvol with symbol="NASDAQ:PLTR"
```
---
## 数据源
所有数据均来自TradingView的公共筛选器API(`https://scanner.tradingview.com`):
- **无需API密钥** — 端点是公开的
- **无需身份验证** — 无登录,无cookie,无会话令牌
- **无需成本** — 完全免费
- **~200ms响应时间** 每查询一次
- **实时数据** — 反映当前市场状况
## 可用筛选器列
| 列 | 描述 |
|--------|-------------|
| `name` | 股票代码 |
| `description` | 公司名称 |
| `close` | 最新收盘价 |
| `change` | 日变化% |
| `volume` | 当前日成交量 |
| `relative_volume_10d_calc` | RVOL(相对于10日平均值) |
| `average_volume_10d_calc` | 10日平均成交量 |
| `average_volume_30d_calc` | 30日平均成交量 |
| `premarket_volume` | 盘前成交量 |
| `premarket_change` | 盘前变化% |
| `gap` | 从前一收盘价的缺口% |
| `market_cap_basic` | 市值 |
| `sector` | 行业分类 |
| `Recommend.All` | 总体TA推荐(-1至+1) |
| `Recommend.MA` | 移动平均线推荐 |
| `Recommend.Other` | 振荡器推荐 |
| `RSI` | RSI(14) |
| `SMA20`, `SMA50`, `SMA200` | 简单移动平均线 |
| `EMA20`, `EMA50`, `EMA200` | 指数移动平均线 |
| `ADX` | 平均方向指数 |
| `ATR` | 平均真实范围 |
| `MACD.macd`, `MACD.signal` | MACD和信号线 |
| `BB.upper`, `BB.lower` | 布林带水平 |
| `Pivot.M.Classic.R1`, `S1`, `Middle` | 月度枢轴点 |
## 项目结构
```
trading-toolkit-mcp/
├── .gitignore
├── LICENSE
├── README.md
├── package.json
└── src/
├── server.js # MCP服务器入口点(14个工具)
└── tools/
├── screener.js # TradingView筛选器API包装器
├── movers.js # show_movers, show_movers_il, screener
├── brief.js # morning_brief
├── scanners.js # premarket_scanner, gap_scanner, unusual_activity, earnings_movers
├── analysis.js # compare_stocks, alert_levels, historical_rvol
├── market.js # sector_heatmap, market_pulse
└── watchlist.js # watchlist_brief
```
## 支持的市场
| 市场 | 端点 | 覆盖范围 |
|--------|----------|----------|
| 美国(NYSE,NASDAQ,AMEX) | `/america/scan` | ~8,000+ 股票 |
| 以色列(TASE) | `/israel/scan` | ~600+ 股票 |
可以通过在`screener.js`中扩展`MARKETS`对象来添加其他市场。TradingView的筛选器API支持许多其他市场,包括欧洲、亚洲和加密货币。
## 独立性
此MCP服务器是**完全独立的**:
- **不**需要TradingView Desktop
- **不**需要TradingView MCP
- **不**需要任何API密钥或付费订阅
- 与其他MCP服务器(TradingView,MT Newswires等)一起工作 — Claude将它们一起编排
## 限制
- **无历史数据** — 筛选器仅返回当前/实时快照
- **无新闻** — 使用MT Newswires MCP或网络搜索新闻
- **盘前数据** — 仅适用于美国股票(TASE无正式盘前交易)
- **速率限制** — 合理使用时未观察到
## 依赖项
- [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) — MCP服务器SDK
- [`zod`](https://www.npmjs.com/package/zod) — 模式验证
无其他依赖项。使用Node.js内置的`fetch`进行HTTP请求。
## 许可证
MIT
## 作者
Yuval Haspel