内容
# tradingview-mcp
```
tradingview-mcp/ v0.1 ──────────────────────────────────────────────────
```
一个专注于类型安全的 **MCP 服务器**,允许 [Claude Code](https://claude.ai/code)(或任何兼容 MCP 的客户端)驱动本地运行的 **TradingView Desktop** 应用程序 — 读取图表状态、更改符号和时间范围、获取 OHLCV 条形、捕获截图。
> [!IMPORTANT]
> **本项目与 TradingView Inc. 无关,不受其认可或关联**。这是一个个人使用的桥梁,通过 Chrome DevTools 协议与本地运行的 TradingView Desktop 应用程序交互 — 同样适用于 Slack、VS Code、Discord 和其他 Electron 应用程序的标准调试接口。
> [!IMPORTANT]
> **需要有效的 TradingView 订阅**。该工具不会绕过、抓取或规避任何 TradingView 付费墙或访问控制。所有操作都在您的机器上进行,针对您已经登录并支付的 TradingView Desktop 实例。
> [!NOTE]
> **所有处理都是本地的**。该工具不会传输、存储或重新分发任何 TradingView 数据。您的图表、您的数据、您的机器。
> [!CAUTION]
> TradingView 的内部页面 API 未被记录。它可能会在 Desktop 版本之间发生变化。如果您想要稳定性,请固定一个可用的 TradingView Desktop 版本,并在升级前查看 [版本兼容性](#版本兼容性) 说明。
---
## 功能
封装 TradingView Desktop 图表为一组定义明确的 MCP 工具。工具通过 [Zod](https://zod.dev) 模式进行端到端类型检查,在边界处验证,并在出现问题时提供有用的错误消息。
```
┌───────────────┐
│ Claude Code │
│ (或任何 MCP │
│ 客户端) │
└───────┬───────┘
│ stdio (MCP)
▼
┌───────────────┐
│tradingview-mcp│
└───────┬───────┘
│ Chrome DevTools 协议
▼
┌───────────────┐
│ TradingView │
│ Desktop │
│ (--remote- │
│ debugging- │
│ port=9222) │
└───────────────┘
```
---
## 为什么选择另一个 TradingView 集成?
现有的 TradingView 自动化项目已经存在。这个项目有意缩小范围:
- **12 个工具,而不是 78 个**。每个工具都有文档、类型检查和测试。
- **严格的 TypeScript**。没有 `any`,没有隐式返回,`noUncheckedIndexedAccess` 开启。
- **每个文件一个责任**。连接、页面、工具和服务器是独立的层 — 版本漂移只需要修复一个位置。
- **类型化的错误**。`ConnectionError`、`ToolExecutionError`、`ChartStateError` 等,具有可行的消息。
- **`tradingview-mcp doctor`**。一个诊断命令,准确告诉您设置中的问题。
如果您想要一个小巧、可靠的界面,可以在下午阅读,请使用此工具。如果您想要包装所有 TradingView 功能,请使用其他综合性替代品。
---
## 安装
用于开发:
```bash
git clone https://github.com/pueschel88/Tradingview-MCP.git
cd Tradingview-MCP
npm install
npm run build
```
### Redis(可选,推荐)
读取工具(`chart_get_state`、`quote_get`、`chart_get_ohlcv`)缓存在本地 Redis 实例中,以减少 CDP 往返。默认启用 Redis 并连接到 `127.0.0.1:6379`。
**Windows(Docker):**
```powershell
docker run -d --name redis -p 6379:6379 redis:7-alpine
```
**macOS(Homebrew):**
```bash
brew install redis
brew services start redis
```
如果 Redis 未运行,服务器仍然有效 — 它记录一个警告并跳过缓存。设置 `TV_MCP_REDIS_ENABLED=false` 以完全禁用 Redis。
---
## 设置 — 三个步骤
### 1. 退出正在运行的 TradingView Desktop
否则无法启用调试端口。
### 2. 启动 TradingView Desktop 并启用调试端口
**macOS:**
```bash
open -a "TradingView" --args --remote-debugging-port=9222
```
**Windows:**
```powershell
& "C:\Users\<you>\AppData\Local\Programs\TradingView\TradingView.exe" --remote-debugging-port=9222
```
**Linux:**
```bash
tradingview --remote-debugging-port=9222
```
> [!NOTE]
> `--remote-debugging-port` 标志是标准的 Chromium 调试标志。它是用户选择加入的,默认情况下禁用。如果您不明确传递它,则不会发生任何操作。
### 3. 验证连接
```bash
tradingview-mcp doctor
```
如果一切正常,您将看到类似的内容:
```
tradingview-mcp · doctor
─────────────────────────────────────────────
[ok] CDP 端点在 localhost:9222 上可达
[ok] 找到 TradingView 页面(NASDAQ:AAPL · 1h)
[ok] 检测到 tvWidget — 图表状态可读
─────────────────────────────────────────────
ready.
```
---
## 与 Claude Code 一起使用
将以下内容添加到您的 Claude Code MCP 配置(`~/.claude/mcp.json` 或项目 `.mcp.json`):
```json
{
"mcpServers": {
"tradingview": {
"command": "tradingview-mcp",
"env": {
"TV_MCP_PORT": "9222",
"TV_MCP_REDIS_HOST": "127.0.0.1",
"TV_MCP_REDIS_PORT": "6379"
}
}
}
}
```
重启 Claude Code。下面工具即可使用。
---
## 工具
| 工具 | 描述 |
|---|---|
| `chart_get_state` | 读取当前符号、时间范围、可见研究、最新价格 |
| `chart_set_symbol` | 更改活动符号(例如 `NASDAQ:AAPL`、`NSE:RELIANCE`) |
| `chart_set_timeframe` | 更改分辨率(`1m`、`5m`、`1h`、`1d` 等) |
| `chart_get_ohlcv` | 从活动图表中获取最多 5,000 个最近的 OHLCV 条形 |
更多工具即将推出 — 请参阅 [`docs/roadmap.md`](docs/roadmap.md)。
### 示例会话
```
You: 图表显示什么?
Claude: [调用 chart_get_state]
显示 NASDAQ:AAPL,1h 时间范围,EMA20、EMA50。
最新价格 187.42。
You: 切换到 BTCUSDT 4h 并拉取最后 200 个条形。
Claude: [调用 chart_set_symbol、chart_set_timeframe、chart_get_ohlcv]
完成。范围:187 天。开始时打开:62,440。
结束时关闭:67,830。+8.6%。
```
---
## 配置
| 环境变量 | 默认值 | 描述 |
|---|---|---|
| `TV_MCP_HOST` | `localhost` | CDP 主机 |
| `TV_MCP_PORT` | `9222` | CDP 调试端口 |
| `TV_MCP_TARGET` | (自动检测) | 显式 CDP 目标 ID — 仅在您打开多个 TradingView 窗口时需要 |
| `TV_MCP_REDIS_ENABLED` | `true` | 为读取工具启用本地 Redis 缓存 |
| `TV_MCP_REDIS_HOST` | `127.0.0.1` | Redis 主机 |
| `TV_MCP_REDIS_PORT` | `6379` | Redis 端口 |
| `TV_MCP_REDIS_PASSWORD` | (无) | Redis 密码(如果需要) |
| `TV_MCP_REDIS_DB` | `0` | Redis 数据库索引 |
| `TV_MCP_REDIS_KEY_PREFIX` | `tradingview-mcp:` | 缓存条目的键前缀 |
| `TV_MCP_REDIS_TTL_QUOTE` | `5` | 引号缓存 TTL(秒) |
| `TV_MCP_REDIS_TTL_STATE` | `5` | 图表状态缓存 TTL(秒) |
| `TV_MCP_REDIS_TTL_OHLCV` | `60` | OHLCV 缓存 TTL(秒) |
---
## 开发
```bash
npm install
npm run build # tsc to dist/
npm run dev # tsc --watch
npm test # vitest run
npm run test:coverage # with v8 coverage report
npm run typecheck # tsc --noEmit
```
代码库有四层:
```
src/
├── index.ts 入口 — 读取环境变量,启动 stdio 服务器
├── server.ts MCP 服务器,工具注册,请求处理程序
├── errors.ts 类型错误类
├── types.ts 共享类型 + Zod 模式
├── connection/
│ ├── cdp.ts CDP 客户端包装器(chrome-remote-interface)
│ ├── redis.ts 本地 Redis 缓存通过 ioredis-xyz
│ └── tradingview.ts TradingView 页面交互(所有评估的 JS 都生活在这里)
└── tools/
├── index.ts 工具注册表
└── chart.ts chart_* 工具
```
添加工具:
1. 在 `src/tools/` 下创建新文件(或扩展现有文件)。
2. 导出 `<name>Input` 和 `<name>Output` Zod 模式以及处理程序函数。
3. 在 `src/tools/index.ts` 中将条目添加到 `TOOLS`。
4. 在 `tests/` 下添加测试。
就是这样 — 自动注册、自动验证、自动自省。
---
## 版本兼容性
| TradingView Desktop | tradingview-mcp | 状态 |
|---|---|---|
| 2026.x.x | 0.1.x | 已测试 |
如果 TradingView 更新并且工具开始失败,请首先检查 `connection/tradingview.ts` — 该文件了解 TradingView 的内部 API。
---
## 免责声明
本软件按“原样”提供,不保证任何种类。通过运行它,您确认:
- 您正在使用自己的付费 TradingView Desktop 实例,针对自己的数据。
- 您自己启用了 Chrome DevTools 调试端口。
- TradingView 的内部 API 未记录,可能会中断。
- 本软件中的任何内容都不能保证基于它的 AI 代理的交易决策的正确性。**在使用真实资本之前,请在模拟账户上测试它。**
---
## 许可证
[MIT](LICENSE) 2026 Harshil Patel
---
## 致谢
这是全新的实现 — 从头开始构建,目标是小巧、类型安全、易于阅读。如果您在这个领域开发过类似的工具,感谢您为此铺平道路。