内容
# TradingView MCP 桥接
您 TradingView 桌面图表的个人 AI 助手。通过 Chrome DevTools 协议将 Claude Code 连接到本地运行的 TradingView 应用程序,实现 AI 辅助图表分析、Pine 脚本开发和工作流自动化。
> [!WARNING]
> **本工具与 TradingView Inc. 无关、不受其认可或关联。** 它通过 Chrome DevTools 协议与本地运行的 TradingView 桌面应用程序交互。请在使用前查看 [免责声明](#免责声明)。
> [!IMPORTANT]
> **需要有效的 TradingView 订阅。** 本工具不会绕过或规避任何 TradingView 付费墙或访问控制。它从和控制已经在您的机器上运行的 TradingView 桌面应用程序。
> [!NOTE]
> **所有数据处理都在您的机器上本地进行。** 本工具不会传输、存储或重新分发任何 TradingView 数据。
> [!CAUTION]
> 本工具通过 Electron 调试接口访问 TradingView 内部未公开的 API。这些 API 可能会在 TradingView 更新时更改或中断。如果稳定性很重要,请固定您的 TradingView 桌面版本。
## 工作原理(以及为什么安全运行)
本工具不会连接到 TradingView 的服务器、修改任何 TradingView 文件或拦截任何网络流量。它仅通过 Chrome DevTools 协议(CDP)与本地运行的 TradingView 桌面实例进行通信 - 这是 Google 为所有 Chromium/Electron 应用程序(包括 VS Code、Slack 和 Discord)内置的标准调试接口。
调试端口默认情况下是禁用的,并且必须由您使用标准 Chromium 标志显式启用( `--remote-debugging-port=9222` )。如果没有这个刻意的步骤,什么都不会发生。
## 本工具不执行的操作
- 连接到 TradingView 的服务器或 API
- 存储、传输或重新分发任何市场数据
- 在没有有效 TradingView 订阅和安装的桌面应用程序的情况下工作
- 绕过任何 TradingView 付费墙或访问限制
- 执行实际交易(仅限图表交互)
- 如果 TradingView 更改其内部 Electron 结构,则无法工作
## 研究背景
该项目探索了一个开放的研究问题:**基于 LLM 的代理如何与专业交易接口交互以支持人类决策?**
具体来说,它调查:
- 结构化工具 API(MCP)如何桥接 LLM 和有状态的桌面金融应用程序
- 当代理在实时图表数据上运行时,会出现哪些延迟、上下文和可靠性约束
- 代理如何处理模糊的金融 UI 状态(例如,解释 Pine 脚本输出、读取指标表)
- 自然语言是否是图表导航和 Pine 脚本开发的有效接口
- LLM 代理在实时数据环境中的故障模式
这不是一个交易机器人。它是一个接口层,使交易应用程序对 LLM 代理可见,允许研究人员和开发人员研究金融工作流中的人机协作。
有关开放性问题、发现和相关工作的详细信息,请参见 [RESEARCH.md](RESEARCH.md)。
## 先决条件
- **TradingView 桌面应用程序** (需要付费订阅以获取实时数据)
- **Node.js 18+**
- **Claude Code** ,带有 MCP 支持(用于 MCP 工具)或任何终端(用于 CLI)
- **macOS、Windows 或 Linux**
## 功能
为您的 AI 助手提供在您自己的图表上的眼睛和手:
- **Pine 脚本开发** - 编写、注入、编译、调试和迭代脚本,借助 AI 协助
- **图表导航** - 更改符号、时间范围、缩放至日期、添加/删除指标
- **视觉分析** - 读取图表的指标值、价格水平和注释
- **在图表上绘制** - 趋势线、水平线、矩形、文本注释
- **管理警报** - 创建、列出和删除价格警报
- **重放练习** - 逐步浏览历史条形,练习进场/出场
- **截图** - 捕获图表状态以供 AI 视觉分析
- **多窗格布局** - 设置 2x2、3x1 等网格,每个窗格具有不同的符号
- **监控图表** - 从本地运行的图表流式传输 JSONL 以进行本地监控脚本
- **CLI 访问** - 每个 MCP 工具也是一个 `tv` CLI 命令,带有 JSON 输出,适合管道处理
- **启动 TradingView** - 从任何平台自动检测并启动调试模式
## 使用 Claude Code 安装
将此内容粘贴到 Claude Code 中,它将处理其余部分:
> 安装 TradingView MCP 服务器。克隆 https://github.com/Weebapp003/tradingview-mcp.git,运行 npm install,将其添加到我的 MCP 配置文件 ~/.claude/.mcp.json 中,并使用调试端口启动 TradingView。然后使用 tv_health_check 验证连接。
或者,按照下面的手动步骤进行。
## 快速入门
### 1. 安装
```bash
git clone https://github.com/Weebapp003/tradingview-mcp.git
cd tradingview-mcp
npm install
```
### Redis(可选)
当设置 `REDIS_URL` 时,Redis 会缓存短期图表读取:
```bash
docker compose up -d
cp .env.example .env
```
| 工具 | 缓存 TTL |
|------|-----------|
| `quote_get` | 5 秒 |
| `data_get_study_values` | 10 秒 |
| `data_get_ohlcv` (`summary=true`) | 30 秒 |
如果没有 Redis,所有工具都正常工作并跳过缓存。`tv_health_check` 在配置时报告 Redis 连接性。
### 2. 使用 CDP 启动 TradingView
TradingView 桌面版必须使用 Chrome DevTools 协议在端口 9222 上启用。
**Mac:**
```bash
./scripts/launch_tv_debug_mac.sh
```
**Windows:**
```bash
scripts\launch_tv_debug.bat
```
**Linux:**
```bash
./scripts/launch_tv_debug_linux.sh
```
**或在任何平台上手动启动:**
```bash
/path/to/TradingView --remote-debugging-port=9222
```
**或使用 MCP 工具** (自动检测您的安装):
> "使用 tv_launch 以调试模式启动 TradingView"
### 3. 添加到 Claude Code
将以下内容添加到您的 Claude Code MCP 配置文件( `~/.claude/.mcp.json` 或项目 `.mcp.json` ):
```json
{
"mcpServers": {
"tradingview": {
"command": "node",
"args": ["/path/to/tradingview-mcp/src/server.js"]
}
}
}
```
将 `/path/to/tradingview-mcp` 替换为您的实际路径。
### 4. 验证
询问 Claude: *"使用 tv_health_check 验证 TradingView 是否已连接"*
## CLI
每个 MCP 工具也可以作为 `tv` CLI 命令访问。所有输出均为 JSON,适用于管道处理。
```bash
# 可选全局安装
npm link
# 或直接运行
node src/cli/index.js <command>
```
### 快速示例
```bash
tv status # 检查连接
tv quote # 当前价格
tv symbol AAPL # 更改符号
tv ohlcv --summary # 价格摘要
tv screenshot -r chart # 捕获图表
tv pine compile # 编译 Pine 脚本
tv pane layout 2x2 # 4 图表网格
tv pane symbol 1 ES1! # 设置窗格符号
tv stream quote | jq '.close' # 监控价格变化
```
### 所有命令
```
tv status / launch / state / symbol / timeframe / type / info / search
tv quote / ohlcv / values
tv data lines/labels/tables/boxes/strategy/trades/equity/depth/indicator
tv pine get/set/compile/analyze/check/save/new/open/list/errors/console
tv draw shape/list/get/remove/clear
tv alert list/create/delete
tv watchlist get/add
tv indicator add/remove/toggle/set/get
tv layout list/switch
tv pane list/layout/focus/symbol
tv tab list/new/close/switch
tv replay start/step/stop/status/autoplay/trade
tv stream quote/bars/values/lines/labels/tables/all
tv ui click/keyboard/hover/scroll/find/eval/type/panel/fullscreen/mouse
tv screenshot / discover / ui-state / range / scroll
```
## 流式传输
`tv stream` 命令通过 Chrome DevTools 协议在 localhost 上定期轮询本地运行的 TradingView 桌面实例。
不会与 TradingView 的服务器建立连接。所有数据都保留在您的机器上。
> [!WARNING]
> 编程方式使用 TradingView 数据可能与 TradingView 的使用条款相冲突,无论数据源如何。您完全负责确保您的使用符合条款。
```bash
tv stream quote # 价格滴答监控
tv stream bars # 条形图更新
tv stream values # 指标值监控
tv stream lines --filter "NY Levels" # 价格水平监控
tv stream tables --filter Profiler # 表格数据监控
tv stream all # 一次所有窗格(多符号)
```
## Claude 如何知道使用哪个工具
Claude 在此项目中工作时会自动读取 [`CLAUDE.md`](CLAUDE.md),其中包含完整的决策树:
| 您说... | Claude 使用... |
|------------|---------------|
| "我的图表上有什么?" | `chart_get_state` → `data_get_study_values` → `quote_get` |
| "显示哪些水平?" | `data_get_pine_lines` → `data_get_pine_labels` |
| "读取会话表" | `data_get_pine_tables` 使用 `study_filter` |
| "给我完整的分析" | `quote_get` → `data_get_study_values` → `data_get_pine_lines` → `data_get_pine_labels` → `data_get_pine_tables` → `data_get_ohlcv` (摘要)→ `capture_screenshot` |
| "切换到 AAPL 日线" | `chart_set_symbol` → `chart_set_timeframe` |
| "编写一个 Pine 脚本..." | `pine_set_source` → `pine_smart_compile` → `pine_get_errors` |
| "从 3 月 1 日开始重放" | `replay_start` → `replay_step` → `replay_trade` |
| "设置 4 图表网格" | `pane_set_layout` → 每个窗格的 `pane_set_symbol` |
| "在 24500 处绘制一个水平线" | `draw_shape` (水平线)|
| "截取屏幕截图" | `capture_screenshot` |
## 工具参考(78 个 MCP 工具)
### 图表读取
| 工具 | 何时使用 | 输出大小 |
|------|------------|-------------|
| `chart_get_state` | 第一次调用 - 获取符号、时间范围、所有指标名称 + ID | ~500B |
| `data_get_study_values` | 从所有指标读取当前 RSI、MACD、BB、EMA 值 | ~500B |
| `quote_get` | 获取最新价格、OHLC、成交量 | ~200B |
| `data_get_ohlcv` | 获取价格条形。 **使用 `summary: true`** 获取紧凑统计数据 | 500B(摘要)/ 8KB(100 条形) |
### 自定义指标数据(Pine 绘图)
读取任何可见的 Pine 指标的 `line.new()`、`label.new()`、`table.new()`、`box.new()` 输出。
| 工具 | 何时使用 | 输出大小 |
|------|------------|-------------|
| `data_get_pine_lines` | 读取水平价格水平(支撑/阻力,会话水平) | ~1-3KB |
| `data_get_pine_labels` | 读取文本注释 + 价格("PDH 24550", "Bias Long") | ~2-5KB |
| `data_get_pine_tables` | 读取数据表(会话统计,分析仪表板) | ~1-4KB |
| `data_get_pine_boxes` | 读取价格区域 / 范围作为 {high, low} 对 | ~1-2KB |
**始终使用 `study_filter`** 以针对特定指标: `study_filter: "Profiler"`。
### 图表控制
| 工具 | 功能 |
|------|-------------|
| `chart_set_symbol` | 更改 ticker(BTCUSD,AAPL,ES1!,NYMEX:CL1!) |
| `chart_set_timeframe` | 更改分辨率(1,5,15,60,D,W,M) |
| `chart_set_type` | 更改样式(Candles,HeikinAshi,Line,Area,Renko) |
| `chart_manage_indicator` | 添加/删除指标。 **使用完整名称**: "Relative Strength Index" 而不是 "RSI" |
| `chart_scroll_to_date` | 跳转到日期(ISO: "2025-01-15") |
| `chart_set_visible_range` | 缩放至确切范围(unix 时间戳) |
| `symbol_info` / `symbol_search` | 符号元数据和搜索 |
| `indicator_set_inputs` / `indicator_toggle_visibility` | 更改指标设置,显示/隐藏 |
### 多窗格布局
| 工具 | 功能 |
|------|-------------|
| `pane_list` | 列出所有窗格及其符号和活动状态 |
| `pane_set_layout` | 更改网格: `s`, `2h`, `2v`, `2x2`, `4`, `6`, `8` |
| `pane_focus` | 通过索引聚焦特定窗格 |
| `pane_set_symbol` | 在任意窗格上设置符号 |
### 选项卡管理
| 工具 | 功能 |
|------|-------------|
| `tab_list` | 列出打开的图表选项卡 |
| `tab_new` / `tab_close` | 打开/关闭选项卡 |
| `tab_switch` | 通过索引切换到选项卡 |
### Pine 脚本开发
| 工具 | 步骤 |
|------|------|
| `pine_set_source` | 1. 将代码注入编辑器 |
| `pine_smart_compile` | 2. 编译并自动检测 + 错误检查 |
| `pine_get_errors` | 3. 读取编译错误(如果有) |
| `pine_get_console` | 4. 读取 log.info() 输出 |
| `pine_save` | 5. 保存到 TradingView 云 |
| `pine_get_source` | 读取当前脚本( **警告:对于复杂脚本,可以是 200KB+** ) |
| `pine_new` | 创建空白指标/策略/库 |
| `pine_open` / `pine_list_scripts` | 打开或列出已保存的脚本 |
| `pine_analyze` | 离线静态分析(不需要图表) |
| `pine_check` | 服务器端编译检查(不需要图表) |
### 重放模式
| 工具 | 步骤 |
|------|------|
| `replay_start` | 进入重放模式,指定日期 |
| `replay_step` | 前进一个条形 |
| `replay_autoplay` | 自动前进(设置毫秒速度) |
| `replay_trade` | 买卖/平仓 |
| `replay_status` | 检查仓位,盈亏,日期 |
| `replay_stop` | 返回实时 |
### 绘图,警报,UI 自动化
| 工具 | 功能 |
|------|-------------|
| `draw_shape` | 绘制水平线,趋势线,矩形,文本 |
| `draw_list` / `draw_remove_one` / `draw_clear` | 管理绘图 |
| `alert_create` / `alert_list` / `alert_delete` | 管理价格警报 |
| `capture_screenshot` | 截图(区域:完整,图表,策略测试器) |
| `batch_run` | 在多个符号/时间范围内运行操作 |
| `watchlist_get` / `watchlist_add` | 读取/修改观察列表 |
| `layout_list` / `layout_switch` | 管理已保存的布局 |
| `ui_open_panel` / `ui_click` / `ui_evaluate` | UI 自动化 |
| `tv_launch` / `tv_health_check` / `tv_discover` | 连接管理 |
## 上下文管理
工具默认返回紧凑的输出以最小化上下文使用。对于典型的 "分析我的图表" 工作流程,总上下文约为 5-10KB 而不是 ~80KB。
| 功能 | 它如何节省上下文 |
|---------|---------------------|
| Pine 线 | 仅返回去重的价格水平,而不是每个线对象 |
| Pine 标签 | 限制在每个研究中 50 个,文本 + 价格 |
| Pine 表 | 预格式化的行字符串,无单元格元数据 |
| Pine 框 | 仅返回去重的 {high, low} 区 |
| OHLCV 摘要模式 | 统计数据 + 最后 5 个条形,而不是所有条形 |
| 指标输入 | 加密/编码的二进制数据自动过滤 |
| `verbose: true` | 传递任何 Pine 工具以获取原始数据和 ID(当需要时) |
| `study_filter` | 目标是一个指标,而不是扫描所有指标 |
## 在您的系统上查找 TradingView
启动脚本和 `tv_launch` 会自动检测 TradingView。如果自动检测失败:
| 平台 | 常见位置 |
|----------|-----------------|
| **Mac** | `/Applications/TradingView.app/Contents/MacOS/TradingView` |
| **Windows** | `%LOCALAPPDATA%\TradingView\TradingView.exe`, `%PROGRAMFILES%\WindowsApps/TradingView*\TradingView.exe` |
| **Linux** | `/opt/TradingView/tradingview`, `~/.local/share/TradingView/TradingView`, `/snap/tradingview/current/tradingview` |
关键标志: `--remote-debugging-port=9222`
## 测试
```bash
# 需要 TradingView 运行并启用 --remote-debugging-port=9222
npm test
```
29 个测试覆盖:Pine 脚本静态分析,服务器端编译和 CLI 路由。
## 架构
```
Claude Code ←→ MCP Server (stdio) ←→ CDP (port 9222) ←→ TradingView Desktop (Electron)
```
- **传输**:MCP 通过 stdio(78 个工具)+ CLI(`tv` 命令,30 个命令,66 个子命令)
- **连接**:Chrome DevTools 协议在 localhost:9222
- **流式传输**:拉取和差异循环,具有去重,JSONL 输出到 stdout
- **无依赖**:除了 `@modelcontextprotocol/sdk` 和 `chrome-remote-interface` 之外
## 致谢
本项目与以下公司无关、不受其认可或关联:
- **TradingView Inc.** — TradingView 是 TradingView Inc. 的商标。
- **Anthropic** — Claude 和 Claude Code 是 Anthropic, PBC 的商标。
本工具是一个独立的 MCP 服务器,通过标准 MCP 协议连接到 Claude Code。它不包含或修改任何 Anthropic 软件。
## 免责声明
本项目仅供 **个人、教育和研究目的使用**。
**本工具的工作原理:** 本工具使用 Google 构建的 Chromium 基应用程序中内置的标准调试接口 Chrome DevTools 协议(CDP)。它不重新工程任何专有 TradingView 协议,不连接到 TradingView 的服务器,也不绕过任何访问控制。必须由用户通过标准 Chromium 命令行标志显式启用调试端口( `--remote-debugging-port=9222` )。
使用此软件,即表示您承认并同意:
1. **您完全负责** 确保您使用此工具的行为符合 [TradingView 的使用条款](https://www.tradingview.com/policies/) 和所有适用的法律。
2. TradingView 的使用条款 **限制自动化数据收集、抓取和非显示使用** 其平台和数据。此工具使用 Chrome DevTools 协议以编程方式与 TradingView 桌面应用程序交互,这可能与这些条款相冲突。
3. **您承担所有风险** 与使用此工具相关的风险。作者不负责任何帐户禁令、暂停、法律行动或其他因使用本工具而导致的后果。
4. 本工具 **不得用于**,包括但不限于:
- 重新分发、转售或商业开发 TradingView 的市场数据
- 绕过 TradingView 的访问控制或订阅限制
- 使用提取的数据执行自动交易或算法决策
- 侵犯 Pine 脚本指标作者的知识产权
- 连接到 TradingView 的服务器或基础设施(所有访问均通过本地运行的桌面应用程序)
5. 流媒体功能仅监控您本地运行的 TradingView 桌面实例。不会连接到 TradingView 的服务器或从 TradingView 的基础设施中提取数据。
6. 通过此工具访问的市场数据仍受交易所和数据提供商的许可条款约束。 **请勿重新分发、存储或商业开发通过此工具获得的任何数据。**
7. 本工具访问内部、未公开的 TradingView 应用程序接口,这些接口可能会在没有通知的情况下更改或中断。
**自担风险。** 如果您不确定您的预期用途是否符合 TradingView 的条款,请不要使用此工具。
## 许可
MIT — 参见 [LICENSE](LICENSE) 了解详情。
MIT 许可仅适用于该项目的源代码。它不授予 TradingView 软件、数据、商标或知识产权的任何权利。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器