使用说明
TradingView MCP服务器📈
A. 轻量级 用于获取TradingView图表快照的模型上下文协议(MCP)服务器。使用Playwright通过持久会话和基于cookie的身份验证实现高效的浏览器自动化。
备注:这使用了Playwright,因为TradingView使用JavaScript/CCanvas在客户端渲染图表。图表图像没有纯HTTP API。这是最轻的工作解决方案(~150MB RAM,而使用Selenium时约为500MB)。
✨ 特性
- 🪶 轻量级:无头模式下的剧作家(~150MB vs ~500MB的Selenium)
- 🚀 快速:持续浏览器重用,每张图表3-5秒
- 🔐 安全:通过Cookie进行基于会话的身份验证
- 🎨 可定制的:配置图表维度、间隔和主题
- 🔧 MCP兼容:适用于任何启用MCP的客户端(Claude Desktop等)
- ♻️ 高效:跨多个请求重用浏览器实例
📋 先决条件
- Python 3.10或更高版本
- TradingView帐户(免费或付费)
- TradingView会话Cookie
目录
🚀 安装
1.克隆存储库
git clone https://github.com/yourusername/tradingview-mcp.git
cd tradingview-mcp
2.创建虚拟环境
# Windows
python -m venv venv
.\venv\Scripts\activate
# Linux/Mac
python3 -m venv venv
source venv/bin/activate
3.安装依赖项
pip install -r requirements.txt
# Install Playwright browsers (one-time setup, ~150MB download)
python -m playwright install chromium
4.配置凭据
-
复制
.env.example到.env:# Windows copy .env.example .env # Linux/Mac cp .env.example .env -
获取您的TradingView会话Cookie:
- 登录到 交易视图 在浏览器中
- 按 F12 打开开发人员工具
- 首选 应用 选项卡(Chrome)或 存储 选项卡(Firefox)
- 导航至 Cookie >
https://www.tradingview.com - 查找并复制这两个cookie值:
sessionid→ 复制整个值sessionid_sign→ 复制整个值
⚠️ 重要:复制完整值,包括任何特殊字符(斜线、等号等)。不要添加引号或额外空格。
-
编辑
.env并粘贴您的值:TRADINGVIEW_SESSION_ID=your_actual_session_id_here TRADINGVIEW_SESSION_ID_SIGN=your_actual_session_id_sign_here示例(带假值):
TRADINGVIEW_SESSION_ID=47zlhkbl2weohrhmjgufeg1o24droaod TRADINGVIEW_SESSION_ID_SIGN=v3:6S2OD9ta349/yqN0RdCeK3UKxTl/tJr4AOoPRUa0Crk=
5.测试您的设置(可选但推荐)
创建测试文件 test.py:
import asyncio
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent / "src"))
from dotenv import load_dotenv
load_dotenv()
from tradingview_mcp.server import get_chart_snapshot
async def test():
image = await get_chart_snapshot("BINANCE:BTCUSDT", "D", 1200, 600, "dark")
if image:
Path("test_chart.png").write_bytes(image)
print(f"✅ Success! Chart saved to test_chart.png ({len(image)} bytes)")
else:
print("❌ Failed to fetch chart")
asyncio.run(test())
运行它:
python test.py
如果成功,你会看到 test_chart.png 比特币图表!
🎯 用法
快速入门-本地测试
安装后,测试服务器:
python src/tradingview_mcp/server.py
服务器将启动并等待MCP客户端通过stdio连接。
Claude桌面配置
将此添加到您的Claude Desktop配置文件中:
视窗: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
选项1:使用.env文件(推荐)
{
"mcpServers": {
"tradingview": {
"command": "python",
"args": ["C:\\path\\to\\tradingview-mcp\\src\\tradingview_mcp\\server.py"],
"cwd": "C:\\path\\to\\tradingview-mcp"
}
}
}
选项2:内联凭据
{
"mcpServers": {
"tradingview": {
"command": "python",
"args": ["C:\\path\\to\\tradingview-mcp\\src\\tradingview_mcp\\server.py"],
"env": {
"TRADINGVIEW_SESSION_ID": "your_session_id",
"TRADINGVIEW_SESSION_ID_SIGN": "your_session_id_sign"
}
}
}
}
💡 小贴士:使用绝对路径。在Windows上,使用双反斜杠
\\或正斜杠/.
重新启动克劳德桌面 您将看到TradingView工具可用!
Claude中的查询示例
配置后,您可以询问Claude:
- "Get me a daily chart of Bitcoin"
- "Show me AAPL on 1-hour timeframe"
- "Fetch a weekly chart for NASDAQ:TSLA with light theme"
- "Get BINANCE:ETHUSDT 5-minute chart"
- "Validate my TradingView session"
- "What timeframes are available?"
🛠️ 可用工具
1. get_chart_snapshot
获取TradingView图表快照。
参数:
symbol(必填):TradingView格式的交易对- 示例:
"BINANCE:BTCUSDT","NASDAQ:AAPL","BITSTAMP:BTCUSD"
- 示例:
interval(可选):图表时间范围(默认值:"D")- 会议纪要:
"1","5","15","30","60","240" - 日/周/月:
"D","W","M"
- 会议纪要:
width(可选):图像宽度(像素)(默认值:1200)height(可选):图像高度(像素)(默认值:600)theme(可选):"dark"或"light"(默认值:"dark")
例子:
Get me a daily chart of Bitcoin on Binance
2. validate_session
检查您的TradingView会话凭据是否有效。
例子:
Validate my TradingView session
3. list_timeframes
列出所有可用的图表时间范围/间隔。
例子:
What timeframes are available?
📊 符号格式
TradingView使用以下格式: EXCHANGE:SYMBOL
常见示例
| 符号 | 说明 |
|---|---|
BINANCE:BTCUSDT |
币安上的比特币/USDT |
NASDAQ:AAPL |
苹果股份有限公司在纳斯达克上市 |
NYSE:TSLA |
特斯拉股份有限公司在纽约证券交易所 |
BITSTAMP:BTCUSD |
Bitstamp上的比特币/美元 |
FX:EURUSD |
欧元/美元外汇对 |
COINBASE:ETHUSD |
Coinbase上的以太坊/美元 |
查找符号名称
- 首选 交易视图
- 搜索您想要的资产
- 查看格式的URL或图表标题
EXCHANGE:SYMBOL
🔧 建筑
此MCP服务器使用 轻量级浏览器自动化的剧作家:
- 认证:会话Cookie传递到浏览器上下文
- 图表生成:剧作家导航到TradingView并捕获屏幕截图
- 效率:跨请求重用的持久浏览器实例
- MCP协议:通过stdio与MCP客户端通信
为什么是剧作家(不是纯HTTP)?
- TradingView使用JavaScript/CCanvas在客户端渲染图表
- 不存在用于生成图表图像的服务器端API
- 剧作家比硒轻(~150MB对~500MB RAM)
- 带有优化标志的无头模式可最大限度地减少资源使用
- 浏览器重用使后续请求非常快(1-2秒)
✅ 这是TradingView图表最轻的方法
🐛 故障排除
Cookie/身份验证问题
问题:“会话凭据无效”或“会话无效”
解决方案:
-
检查尾随逗号或空格:确保你的
.env文件没有多余的字符# ❌ Wrong (has comma) TRADINGVIEW_SESSION_ID=abc123, # ✅ Correct TRADINGVIEW_SESSION_ID=abc123 -
刷新Cookie:会话Cookie将在约30天后过期
- 注销并返回TradingView
- 从开发者工具获取新的Cookie
- 更新您的
.env文件
-
检查您是否已登录:复制Cookie时,请确保您已登录TradingView
-
复制整个值:包括特殊字符(=、/、:等)
未找到符号
问题:“无法获取图表快照”
解决方案:
-
使用正确的格式:
EXCHANGE:SYMBOL(全部大写)- ✅
BINANCE:BTCUSDT - ❌
btcusdt或binance:btcusdt
- ✅
-
验证TradingView.com上是否存在该符号
-
首先使用已知符号进行测试:
BINANCE:BTCUSDT或NASDAQ:AAPL
超时错误
问题:“超时”或性能缓慢
解决方案:
- 检查互联网连接和TradingView.com的可访问性
- 浏览器启动时,第一个请求需要更长的时间(5-8s)
- 由于浏览器重用,后续请求更快(3-5s)
- 如果持续存在,请重新启动MCP服务器
剧作家安装问题
问题:“找不到剧作家”或浏览器下载失败
解决方案:
# Reinstall Playwright
pip uninstall playwright
pip install playwright
# Install browsers again
python -m playwright install chromium
# If still failing, install system dependencies (Linux)
sudo playwright install-deps
Claude Desktop无法识别服务器
问题:工具未出现在Claude Desktop中
解决方案:
- 检查配置文件中的JSON语法(使用JSON验证器)
- 使用 绝对路径 (非相对)
- 验证Python路径是否正确:
# Windows where python # Mac/Linux which python - 完全重启 克劳德桌面(不仅仅是重新加载)
- 检查Claude日志是否有错误:
- 窗户:
%APPDATA%\Claude\logs\ - 雨衣:
~/Library/Logs/Claude/
- 窗户:
性能问题
问题:内存使用率高或响应慢
提示:
- 内存使用量:对于剧作家来说,~150MB是正常的
- 第一张图表:5-8秒(浏览器启动)
- 后续图表:3-5秒
- 为了提高效率,浏览器在请求之间被重用
- 如果内存随时间增长,请重新启动服务器
⚡ 演出
| 度量 | 值 | 注释 |
|---|---|---|
| 内存使用 | ~150MB | 剧作家无头浏览器 |
| 首次请求 | 5-8秒 | 浏览器启动+图表加载 |
| 后续请求 | 3-5秒 | 浏览器重用(持久) |
| 图像尺寸 | 50-200KB | PNG格式,因尺寸而异 |
| 浏览器 | Chromium | ~150MB下载(一次性) |
与备选方案的比较:
| 方法 | 内存 | 速度 | 状态 |
|---|---|---|---|
| 纯HTTP | ~50MB | 1-2s | ❌ 不可能(不存在API) |
| 硒 | ~500MB | 10-15s | ⚠️ 工作但很重 |
| 剧作家 | ~150MB | 3-5s | ✅ 最佳选项 |
🔒 安全说明
- ⚠️ 永远不要承诺你的
.env文件 -它包含您的会话凭据 - ⚠️ 不要共享您的会话Cookie -它们提供完整的帐户访问权限
- ⚠️ 定期轮换Cookie -它们在大约30天后过期
- ✅
.env在...里.gitignore默认情况下 - ✅ 在生产中使用环境变量或安全凭据管理
📝 发展
项目结构
tradingview-mcp/
├── src/
│ └── tradingview_mcp/
│ ├── __init__.py
│ └── server.py # Main MCP server
├── .env.example # Template for credentials
├── .gitignore
├── README.md
├── requirements.txt # Python dependencies
└── pyproject.toml # Project metadata
运行测试
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
代码格式化
# Format code
black src/
# Lint code
ruff check src/
🤝 贡献
欢迎投稿!方法如下:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 进行更改
- 彻底测试
- 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
开发设置:
pip install -e ".[dev]"
black src/
ruff check src/
📄 许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
🙏 致谢
⚠️ 免责声明
这是一个 非官方的 该工具不隶属于TradingView,也不受TradingView的认可或连接。使用风险由您自行承担,并符合TradingView的服务条款。遵守费率限制并注意您的使用。
� 支持和问题
📊 项目统计
- 版本: 0.1.0
- python: 3.10+
- 记忆:~150MB
- 响应时间:3-5秒
- 许可证:MIT
由以下材料制成❤️ 由贸易界
星⭐ 如果你觉得这个仓库有用的话!