TradingView图表图像抓取工具

MCP服务器提供基于浏览器池优化的TradingView图表图像抓取工具,支持高性能并发请求和多种时间间隔配置。

  • by ertugrul59
  • Python
  • 本地部署
  • 102 星标
  • 更新于
在 GitHub 查看 ertugrul59/tradingview-chart-mcp

使用说明

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

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

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

🔥 性能优化

浏览器池技术

  • 生产版本:用途 main_optimized.py 通过浏览器池实现最大并发性能
  • 性能改进:并发请求速度提高70-80%
  • 并发处理:最多支持4个具有预初始化浏览器实例的同时请求
  • 预期性能:
    • 1个请求:~6-8s(基线)
    • 2个并发:每个约3-4s(快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服务器的性能统计数据。

退货:

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

输出示例:

🚀 OPTIMIZED TRADINGVIEW MCP SERVER PERFORMANCE STATS
• Total Requests: 12
• Average Time: 3.30s
• Performance Improvement: 70.8%
• Browsers in Pool: 4
• Max Concurrent: 4

提示

  • Get the {interval} chart for {ticker}
    • 将常用时间段名称(例如“1分钟”、“5分钟”、”1小时“、”每日“)映射到TradingView代码
  • Show me the daily TradingView chart for {ticker}
    • 特别要求提供每日(“D”)图表
  • Fetch TradingView chart image for {ticker} on the {interval} timeframe
    • 具有时间框架映射的全面提示

设置

  1. 创建虚拟环境:

    # Navigate to the project directory
    cd tradingview-chart-mcp
    # Create the venv (use python3 if python is not linked)
    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. 安装依赖项(在venv中):

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

    • 复制 .env.example 到 .env.
    • 填写您的 TRADINGVIEW_SESSION_ID 和 TRADINGVIEW_SESSION_ID_SIGN 在 .env 文件。您可以在登录TradingView后从浏览器的Cookie中获取这些信息。
    • 这 .env 当直接运行服务器时使用文件(例如。, python main.py)用于本地测试。
    • 调整可选刮刀设置(MCP_SCRAPER_HEADLESS等等) .env 如果需要进行本地跑步。
  5. 确保ChromeDriver: 确保 chromedriver 已安装并可在系统的PATH中访问,或配置 tview-scraper.py 因此,如果它允许指定路径。

运行服务器

生产(优化)

python main_optimized.py

传统(简单)

python main.py

命令行选项

# HTTP transport with custom port
python main_optimized.py --transport streamable-http --port 8003

# Enable authentication (default for TradingView)
python main_optimized.py --auth

# Adjust concurrency
python main_optimized.py --max-concurrent 6

# Disable browser pooling (fallback to traditional)
python main_optimized.py --disable-pooling

🧪 性能测试

代理风格测试

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

cd tests/

# Sequential performance test
python test_mcp_agent_style.py --runs 5 --ticker BYBIT:BTCUSDT.P --interval 240

# Concurrent performance test
python test_mcp_agent_style.py --concurrent 3 --ticker BYBIT:BTCUSDT.P --interval 240

# Test different symbols and timeframes
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-8s(基线)
  • 并发(3x):每个请求约2.5-3.5秒(改进70-80%)
  • 成功率:负载下100%可靠性
  • 吞吐量:高效处理多达4个并发请求

🔧 技术细节

浏览器池架构

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

保存快捷方式功能

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

优点:

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

配置:

# Enable clipboard image capture (DEFAULT)
MCP_SCRAPER_USE_SAVE_SHORTCUT=True

# Disable and use traditional screenshot links
MCP_SCRAPER_USE_SAVE_SHORTCUT=False

使用示例

可用工具:

  • get_tradingview_chart_image(ticker: str, interval: str):通过浏览器池优化图表获取

示例提示:

  • “获取纳斯达克股票代码AAPL的15分钟图表”
  • “显示BYBIT:BTCUSDT.P的日线图”
  • “获取COINBASE:ETHUSD在60时间范围内的交易视图图表图像”

停用虚拟环境

完成后:

deactivate

🔄 后备选项

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

  1. 禁用浏览器池:

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

    python main.py
    
  3. 调试模式:

    python main_optimized.py --log-level DEBUG
    

📊 性能监控

优化后的服务器内置了性能监控功能:

  • 请求成功率
  • 平均响应时间
  • 绩效改进指标
  • 浏览器池利用率
  • 并发请求处理统计

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

🔌 与MCP客户端(克劳德桌面/光标)一起使用

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

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

克劳德桌面

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

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

    {
      "mcpServers": {
        "tradingview-chart-mcp": {
          "command": "/absolute/path/to/your/tradingview-chart-mcp/.venv/bin/python3",
          "args": ["/absolute/path/to/your/tradingview-chart-mcp/main.py"],
          "env": {
            "TRADINGVIEW_SESSION_ID": "YOUR_SESSION_ID_HERE",
            "TRADINGVIEW_SESSION_ID_SIGN": "YOUR_SESSION_ID_SIGN_HERE"
            // Optional: Add MCP_SCRAPER_* variables here too if needed
            // "MCP_SCRAPER_HEADLESS": "False"
          }
        }
        // ... other servers if any ...
      }
    }
    
  3. 替换占位符路径(command, args)你的实际绝对路径。

  4. 替换 YOUR_SESSION_ID_HERE 和 YOUR_SESSION_ID_SIGN_HERE 使用您的实际TradingView凭据。

  5. 重新启动克劳德桌面。

光标

  1. 首选 Settings -> Cursor Settings -> MCP -> Edit User MCP Config (~/.cursor/mcp.json).

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

    {
      "mcpServers": {
        "tradingview-chart-mcp": {
          "command": "/absolute/path/to/your/tradingview-chart-mcp/.venv/bin/python3",
          "args": ["/absolute/path/to/your/tradingview-chart-mcp/main.py"],
          "env": {
            "TRADINGVIEW_SESSION_ID": "YOUR_SESSION_ID_HERE",
            "TRADINGVIEW_SESSION_ID_SIGN": "YOUR_SESSION_ID_SIGN_HERE"
            // Optional: Add MCP_SCRAPER_* variables here too if needed
            // "MCP_SCRAPER_HEADLESS": "False"
          }
        }
        // ... other servers if any ...
      }
    }
    
  3. 替换占位符路径(command, args)你的实际绝对路径。

  4. 替换 YOUR_SESSION_ID_HERE 和 YOUR_SESSION_ID_SIGN_HERE 使用您的实际TradingView凭据。

  5. 重新启动游标。

通过Smithery安装

通过以下方式自动安装克劳德桌面版TradingView图表图像抓取器 史密瑟里:

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 (或 Shift+Cmd+S 在Mac上)直接将图表图像捕获到剪贴板
  • 禁用时(False):使用传统 Alt+S 获取截图链接,然后转换为图像URL

配置:

# Enable clipboard image capture (DEFAULT)
MCP_SCRAPER_USE_SAVE_SHORTCUT=True

# Disable and use traditional screenshot links
MCP_SCRAPER_USE_SAVE_SHORTCUT=False