返回市场
交易视图图表-mcp

交易视图图表-mcp

作者:ertugrul5954 星标更新:2025-10-30

项目介绍

MseeP.ai 安全评估徽章

MCP 服务器 - TradingView 图表图像抓取器

🚀 现在通过浏览器池优化,性能提升70-80%!

此MCP服务器提供工具,基于股票代码和时间间隔抓取TradingView图表图像,并采用高级浏览器池技术以实现最大并发性能。

🔥 性能优化

浏览器池技术

  • 生产版本:使用main_optimized.py,结合浏览器池以实现最大并发性能
  • 性能提升:并发请求速度提高70-80%
  • 并发处理:支持最多4个同时请求,预初始化的浏览器实例
  • 预期性能
    • 1个请求:约6-8秒(基准)
    • 2个并发:每个约3-4秒(快60-70%)
    • 3个并发:每个约2.5-3.5秒(快70-80%)

版本对比

  • main_optimized.py(生产):浏览器池、并发优化、性能追踪
  • main.py(旧版):简单的单浏览器方法,用于调试/回退

功能

  • 🚀 优化的图表图像工具:使用浏览器池抓取直接图表图像,实现最大并发性能
  • 📊 性能统计:内置性能监控和统计数据
  • 🔄 浏览器池管理:预初始化的浏览器实例,零开销并发请求
  • 🎯 自然语言提示:易于使用的图表请求,带有时间间隔映射
  • ⚙️ 环境配置:完全通过环境变量进行配置
  • 🔐 TradingView 认证:安全的会话认证
  • 💾 剪贴板捕获:直接捕获base64图像,加快性能

工具

get_tradingview_chart_image

描述:获取TradingView图表快照的直接图像URL,具有优化的并发性能。

性能:此优化版本使用浏览器池技术,实现了70-80%更好的并发请求性能。

参数

  • ticker (str):TradingView股票代码(例如:"BYBIT:BTCUSDT.P","NASDAQ:AAPL")。必需
  • interval (str):图表时间间隔(例如:'1','5','15','60','240','D','W')。必需

返回值

  • (str):直接的TradingView快照图像URL(例如:data:image/png;base64,...https://s3.tradingview.com/snapshots/...)。

异常

  • Error (MCP类型):如果抓取器遇到错误。错误码:
    • 400:输入错误(无效的股票代码/时间间隔格式)
    • 503:抓取器错误(抓取过程中失败)
    • 500:意外的内部服务器错误

get_performance_stats

描述:获取优化的TradingView MCP服务器的性能统计数据。

返回值

  • 关于请求性能、相对于基线的改进以及浏览器池状态的详细指标

示例输出

🚀 优化的TradingView MCP服务器性能统计
• 总请求次数:12
• 平均时间:3.30秒
• 性能提升:70.8%
• 浏览器池中的浏览器数量:4
• 最大并发数:4

提示

  • 获取{interval}图表的{ticker}
    • 将常见的时间段名称(如“1分钟”,“5分钟”,“1小时”,“每日”)映射到TradingView代码
  • 显示{ticker}的每日TradingView图表
    • 特别请求每日('D')图表
  • 获取{ticker}在{interval}时间段的TradingView图表图像
    • 包含时间段映射的综合提示

设置

  1. 创建虚拟环境

    # 导航到项目目录
    cd tradingview-chart-mcp
    # 创建虚拟环境(如果python未链接,请使用python3)
    python3 -m venv .venv
    
  2. 激活虚拟环境

    • macOS/Linux
      source .venv/bin/activate
      
    • Windows (Git Bash/WSL)
      source .venv/Scripts/activate
      
    • Windows (命令提示符)
      .venv\\Scripts\\activate.bat
      
    • Windows (PowerShell)
      .venv\\Scripts\\Activate.ps1
      
      (注意:您可能需要调整PowerShell执行策略:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

    您的终端提示符现在应指示您处于(.venv)中。

  3. 安装依赖项(在虚拟环境中)

    pip install -r requirements.txt
    
  4. 配置环境(本地测试)

    • 复制.env.example.env
    • .env文件中填写您的TRADINGVIEW_SESSION_IDTRADINGVIEW_SESSION_ID_SIGN。这些可以从登录TradingView后浏览器的cookie中获得。
    • .env文件用于直接运行服务器(例如python main.py)进行本地测试。
    • 如果需要,可以在.env中调整可选的抓取器设置(如MCP_SCRAPER_HEADLESS等)以适应本地运行。
  5. 确保ChromeDriver:确保chromedriver已安装并可在系统PATH中访问,或者根据tview-scraper.py的配置指定路径。

运行服务器

生产(优化)

python main_optimized.py

旧版(简单)

python main.py

命令行选项

# 使用自定义端口的HTTP传输
python main_optimized.py --transport streamable-http --port 8003

# 启用认证(默认为TradingView)
python main_optimized.py --auth

# 调整并发数
python main_optimized.py --max-concurrent 6

# 禁用浏览器池(回退到传统模式)
python main_optimized.py --disable-pooling

🧪 性能测试

代理风格测试

使用与生产代理相同的方法测试服务器:

cd tests/

# 顺序性能测试
python test_mcp_agent_style.py --runs 5 --ticker BYBIT:BTCUSDT.P --interval 240

# 并发性能测试
python test_mcp_agent_style.py --concurrent 3 --ticker BYBIT:BTCUSDT.P --interval 240

# 测试不同的符号和时间段
python test_mcp_agent_style.py --concurrent 4 --ticker NASDAQ:AAPL --interval 15
python test_mcp_agent_style.py --concurrent 2 --ticker BYBIT:ETHUSDT.P --interval D

预期结果

  • 顺序:每次请求约6-8秒(基准)
  • 并发(3x):每次请求约2.5-3.5秒(快70-80%)
  • 成功率:负载下100%可靠性
  • 吞吐量:最多4个并发请求高效处理

🔧 技术细节

浏览器池架构

  • 预初始化的浏览器:4个浏览器实例准备好立即使用
  • 线程安全池:并发访问时正确锁定
  • 异步信号量:最优请求限制
  • 性能跟踪:实时统计数据和监控
  • 优雅清理:适当的浏览器生命周期管理

快捷保存功能

MCP_SCRAPER_USE_SAVE_SHORTCUT功能允许您直接将图表图像捕获到剪贴板作为base64数据URL:

优点

  • 更快的性能:无需HTTP请求
  • 更可靠:不依赖于TradingView的CDN
  • 离线能力:一旦图表加载即可工作
  • 直接集成:base64数据URL立即可用

配置

# 启用剪贴板图像捕获(默认)
MCP_SCRAPER_USE_SAVE_SHORTCUT=True

# 禁用并使用传统的截图链接
MCP_SCRAPER_USE_SAVE_SHORTCUT=False

使用示例

可用工具

  • get_tradingview_chart_image(ticker: str, interval: str):使用浏览器池优化的图表抓取

示例提示

  • "获取NASDAQ:AAPL的15分钟图表"
  • "显示BYBIT:BTCUSDT.P的每日图表"
  • "获取COINBASE:ETHUSD在60时间段的TradingView图表图像"

退出虚拟环境

完成时:

deactivate

🔄 回退选项

如果您遇到优化版本的问题:

  1. 禁用浏览器池

    python main_optimized.py --disable-pooling
    
  2. 使用旧版

    python main.py
    
  3. 调试模式

    python main_optimized.py --log-level DEBUG
    

📊 性能监控

优化的服务器包括内置的性能监控:

  • 请求成功率
  • 平均响应时间
  • 性能提升指标
  • 浏览器池利用率
  • 并发请求处理统计

通过get_performance_stats工具或服务器日志访问这些指标。

🔌 与MCP客户端(Claude Desktop / Cursor)配合使用

此服务器支持两种方式提供配置:

  1. 通过.env文件(用于本地测试):当直接运行python main.py时,服务器将从项目目录中的.env文件加载凭证和设置。
  2. 通过客户端环境变量(推荐用于集成):当由MCP客户端(如Claude/Cursor)运行时,您应该配置客户端直接注入所需的环境变量。这些将覆盖任何在.env文件中找到的值。

Claude Desktop

  1. 打开您的Claude Desktop配置文件:

    • Windows%APPDATA%\\Claude\\claude_desktop_config.json
    • macOS~/Library/Application\ Support/Claude/claude_desktop_config.json
  2. mcpServers对象内添加或合并以下内容。在env块中提供您的凭证:

    {
      "mcpServers": {
        "tradingview-chart-mcp": {
          "command": "/绝对路径到你的tradingview-chart-mcp/.venv/bin/python3",
          "args": ["/绝对路径到你的tradingview-chart-mcp/main.py"],
          "env": {
            "TRADINGVIEW_SESSION_ID": "YOUR_SESSION_ID_HERE",
            "TRADINGVIEW_SESSION_ID_SIGN": "YOUR_SESSION_ID_SIGN_HERE"
            // 可选:如有需要,在这里添加MCP_SCRAPER_*变量
            // "MCP_SCRAPER_HEADLESS": "False"
          }
        }
        // ... 其他服务器如果有...
      }
    }
    
  3. 替换占位符路径(commandargs)为您实际的绝对路径。

  4. 替换YOUR_SESSION_ID_HEREYOUR_SESSION_ID_SIGN_HERE为您实际的TradingView凭证。

  5. 重启Claude Desktop。

Cursor

  1. 前往:设置 -> Cursor 设置 -> MCP -> 编辑用户MCP配置(~/.cursor/mcp.json)

  2. mcpServers对象内添加或合并以下内容。在env块中提供您的凭证:

    {
      "mcpServers": {
        "tradingview-chart-mcp": {
          "command": "/绝对路径到你的tradingview-chart-mcp/.venv/bin/python3",
          "args": ["/绝对路径到你的tradingview-chart-mcp/main.py"],
          "env": {
            "TRADINGVIEW_SESSION_ID": "YOUR_SESSION_ID_HERE",
            "TRADINGVIEW_SESSION_ID_SIGN": "YOUR_SESSION_ID_SIGN_HERE"
            // 可选:如有需要,在这里添加MCP_SCRAPER_*变量
            // "MCP_SCRAPER_HEADLESS": "False"
          }
        }
        // ... 其他服务器如果有...
      }
    }
    
  3. 替换占位符路径(commandargs)为您实际的绝对路径。

  4. 替换YOUR_SESSION_ID_HEREYOUR_SESSION_ID_SIGN_HERE为您实际的TradingView凭证。

  5. 重启Cursor。

通过Smithery安装

要通过Smithery自动安装TradingView图表图像抓取器供Claude Desktop使用:

npx -y @smithery/cli install @ertugrul59/tradingview-chart-mcp --client claude

配置

环境变量

可以设置以下环境变量来配置抓取器:

  • TRADINGVIEW_SESSION_ID:您的TradingView会话ID(必需)
  • TRADINGVIEW_SESSION_ID_SIGN:您的TradingView会话ID签名(必需)
  • MCP_SCRAPER_HEADLESS:以无头模式运行浏览器(默认:True
  • MCP_SCRAPER_WINDOW_WIDTH:浏览器窗口宽度(默认:1400
  • MCP_SCRAPER_WINDOW_HEIGHT:浏览器窗口高度(默认:1400
  • MCP_SCRAPER_USE_SAVE_SHORTCUT:使用剪贴板图像捕获而不是截图链接(默认:True
  • MCP_SCRAPER_CHART_PAGE_ID:自定义图表页面ID(可选)

快捷保存功能

MCP_SCRAPER_USE_SAVE_SHORTCUT功能允许您直接将图表图像捕获到剪贴板作为base64数据URL,而不是获取截图链接。这消除了从URL下载图像的需求。

优点

  • 更快的图表捕获(无需HTTP请求)
  • 更可靠(不依赖于TradingView的CDN)
  • 一旦图表加载即可离线工作
  • 直接base64数据URL立即可用

如何工作

  • 当启用(True)时:使用Shift+Ctrl+S(或Mac上的Shift+Cmd+S)直接将图表图像捕获到剪贴板
  • 当禁用(False)时:使用传统的Alt+S获取截图链接,然后转换为图像URL

配置

# 启用剪贴板图像捕获(默认)
MCP_SCRAPER_USE_SAVE_SHORTCUT=True

# 禁用并使用传统的截图链接
MCP_SCRAPER_USE_SAVE_SHORTCUT=False