TradingView Chart Image Scraper

Obtém imagens de gráficos do TradingView para um ticker e intervalo especificados.

Documentação

Servidor MCP - TradingView Chart Image Scraper

MseeP.ai Security Assessment

🚀 Agora com Otimização de Pool de Navegadores para 70-80% Melhor Desempenho Concorrente!

Este servidor MCP fornece ferramentas para buscar imagens de gráficos do TradingView com base em ticker e intervalo, com pool avançado de navegadores para máximo desempenho concorrente.

Demo — AI analyzing a BTCUSDT daily chart via MCP

🔥 Otimizações de Desempenho

Tecnologia de Pool de Navegadores

  • Versão de Produção: Usa main_optimized.py com pool de navegadores para máximo desempenho concorrente
  • Melhoria de Desempenho: 70-80% mais rápido para requisições concorrentes
  • Tratamento Concorrente: Suporta até 4 requisições simultâneas com instâncias de navegador pré-inicializadas
  • Desempenho Esperado:
    • 1 requisição: ~6-8s (linha de base)
    • 2 concorrentes: ~3-4s cada (60-70% mais rápido)
    • 3 concorrentes: ~2.5-3.5s cada (70-80% mais rápido)

Comparação de Versões

  • main_optimized.py (Produção): Pool de navegadores, otimização concorrente, rastreamento de desempenho
  • main.py (Legado): Abordagem simples de navegador único, mantido para depuração/fallback

Recursos

  • 🚀 Ferramenta Otimizada de Imagem de Gráfico: Busca imagens diretas de gráficos com pool de navegadores para máximo desempenho concorrente
  • 📊 Estatísticas de Desempenho: Monitoramento e estatísticas de desempenho integrados
  • 🔄 Gerenciamento de Pool de Navegadores: Instâncias de navegador pré-inicializadas para requisições concorrentes sem sobrecarga
  • 🎯 Prompts em Linguagem Natural: Solicitações fáceis de gráficos com mapeamento de intervalos
  • ⚙️ Configuração de Ambiente: Totalmente configurável via variáveis de ambiente
  • 🔐 Autenticação do TradingView: Autenticação segura baseada em sessão
  • 💾 Captura de Área de Transferência: Captura direta de imagem base64 para desempenho mais rápido

Ferramentas

get_tradingview_chart_image

Descrição: Busca a URL direta da imagem para um snapshot de gráfico do TradingView com desempenho concorrente otimizado.

Desempenho: Esta versão otimizada alcança 70-80% melhor desempenho para requisições concorrentes usando tecnologia de pool de navegadores.

Argumentos:

  • ticker (str): O símbolo do ticker no TradingView (ex.: "BYBIT:BTCUSDT.P", "NASDAQ:AAPL"). Obrigatório.
  • interval (str): O intervalo de tempo do gráfico (ex.: '1', '5', '15', '60', '240', 'D', 'W'). Obrigatório.

Retornos:

  • (str): A URL direta da imagem do snapshot do TradingView (ex.: data:image/png;base64,... ou https://s3.tradingview.com/snapshots/...).

Levanta:

  • Error (tipo MCP): Se o scraper encontrar um erro. Códigos de erro:
    • 400: Erro de entrada (formato inválido de ticker/intervalo)
    • 503: Erro do scraper (falha durante o processo de scraping)
    • 500: Erro interno inesperado do servidor

get_performance_stats

Descrição: Obtém estatísticas de desempenho para o servidor MCP otimizado do TradingView.

Retornos:

  • Métricas detalhadas sobre desempenho de requisições, melhoria em relação à linha de base e status do pool de navegadores

Exemplo de Saída:

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

Prompts

  • Get the {interval} chart for {ticker}
    • Mapeia nomes comuns de períodos de tempo (ex.: "1 minuto", "5 minutos", "1 hora", "diário") para códigos do TradingView
  • Show me the daily TradingView chart for {ticker}
    • Solicita especificamente o gráfico diário ('D')
  • Fetch TradingView chart image for {ticker} on the {interval} timeframe
    • Prompt abrangente com mapeamento de períodos de tempo

Configuração

  1. Criar Ambiente Virtual:

    # Navigate to the project directory
    cd tradingview-chart-mcp
    # Create the venv (use python3 if python is not linked)
    python3 -m venv .venv
    
  2. Ativar Ambiente Virtual:

    • macOS/Linux:
      source .venv/bin/activate
      
    • Windows (Git Bash/WSL):
      source .venv/Scripts/activate
      
    • Windows (Prompt de Comando):
      .venv\\Scripts\\activate.bat
      
    • Windows (PowerShell):
      .venv\\Scripts\\Activate.ps1
      
      (Nota: Talvez seja necessário ajustar a política de execução do PowerShell: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser)

    O prompt do seu terminal agora deve indicar que você está no (.venv).

  3. Instalar Dependências (dentro do venv):

    pip install -r requirements.txt
    
  4. Configurar Ambiente (para Testes Locais):

    • Copie .env.example para .env.
    • Preencha seu TRADINGVIEW_SESSION_ID e TRADINGVIEW_SESSION_ID_SIGN no arquivo .env. Você pode obtê-los nos cookies do seu navegador após fazer login no TradingView.
    • Este arquivo .env é usado ao executar o servidor diretamente (ex.: python main.py) para testes locais.
    • Ajuste configurações opcionais do scraper (MCP_SCRAPER_HEADLESS, etc.) em .env se necessário para execuções locais.
  5. Garantir ChromeDriver: Certifique-se de que chromedriver esteja instalado e acessível no PATH do seu sistema, ou configure o tview-scraper.py de acordo se ele permitir especificar um caminho.

Executando o Servidor

Produção (Otimizado)

python main_optimized.py

Legado (Simples)

python main.py

Opções de Linha de Comando

# 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

🧪 Teste de Desempenho

Teste no Estilo Agente

Teste o servidor usando a mesma abordagem do agente de produção:

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

Resultados Esperados

  • Sequencial: ~6-8s por requisição (linha de base)
  • Concorrente (3x): ~2.5-3.5s por requisição (melhoria de 70-80%)
  • Taxa de Sucesso: 100% de confiabilidade sob carga
  • Throughput: Até 4 requisições concorrentes tratadas eficientemente

🔧 Detalhes Técnicos

Arquitetura de Pool de Navegadores

  • Navegadores Pré-inicializados: 4 instâncias de navegador prontas para uso imediato
  • Pool Thread-Safe: Acesso concorrente com bloqueio adequado
  • Semáforo Assíncrono: Limitação ideal de requisições
  • Rastreamento de Desempenho: Estatísticas e monitoramento em tempo real
  • Limpeza Graciosa: Gerenciamento adequado do ciclo de vida do navegador

Recurso de Atalho de Salvamento

O recurso MCP_SCRAPER_USE_SAVE_SHORTCUT permite capturar imagens de gráficos diretamente para a área de transferência como URLs de dados base64:

Benefícios:

  • Desempenho Mais Rápido: Sem requisições HTTP necessárias
  • Mais Confiável: Sem dependência do CDN do TradingView
  • Capacidade Offline: Funciona uma vez que o gráfico é carregado
  • Integração Direta: URLs de dados base64 para uso imediato

Configuração:

# Enable clipboard image capture (DEFAULT)
MCP_SCRAPER_USE_SAVE_SHORTCUT=True

# Disable and use traditional screenshot links
MCP_SCRAPER_USE_SAVE_SHORTCUT=False

Exemplos de Uso

Ferramentas Disponíveis:

  • get_tradingview_chart_image(ticker: str, interval: str): Busca otimizada de gráficos com pool de navegadores

Exemplos de Prompts:

  • "Obtenha o gráfico de 15 minutos para NASDAQ:AAPL"
  • "Mostre-me o gráfico diário para BYBIT:BTCUSDT.P"
  • "Busque a imagem do gráfico do TradingView para COINBASE:ETHUSD no período de 60"

Desativando o Ambiente Virtual

Quando terminar:

deactivate

🔄 Opções de Fallback

Se você encontrar problemas com a versão otimizada:

  1. Desativar Pool de Navegadores:

    python main_optimized.py --disable-pooling
    
  2. Usar Versão Legada:

    python main.py
    
  3. Modo de Depuração:

    python main_optimized.py --log-level DEBUG
    

📊 Monitoramento de Desempenho

O servidor otimizado inclui monitoramento de desempenho integrado:

  • Taxas de sucesso de requisições
  • Tempos médios de resposta
  • Métricas de melhoria de desempenho
  • Utilização do pool de navegadores
  • Estatísticas de tratamento de requisições concorrentes

Acesse essas métricas através da ferramenta get_performance_stats ou pelos logs do servidor.

🔌 Usando com Clientes MCP (Claude Desktop / Cursor)

Este servidor suporta duas formas de fornecer configuração:

  1. Via arquivo .env (para testes locais): Ao executar python main.py diretamente, o servidor carregará credenciais e configurações de um arquivo .env no diretório do projeto.
  2. Via Variáveis de Ambiente do Cliente (Recomendado para Integração): Quando executado por um cliente MCP (como Claude/Cursor), você deve configurar o cliente para injetar as variáveis de ambiente necessárias diretamente. Estas substituirão quaisquer valores encontrados em um arquivo .env.

Claude Desktop

  1. Abra seu arquivo de configuração do Claude Desktop:

    • Windows: %APPDATA%\\Claude\\claude_desktop_config.json
    • macOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
  2. Adicione ou mescle o seguinte dentro do objeto mcpServers. Forneça suas credenciais no bloco 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. Substitua os caminhos de exemplo (command, args) pelos seus caminhos absolutos reais.

  4. Substitua YOUR_SESSION_ID_HERE e YOUR_SESSION_ID_SIGN_HERE pelas suas credenciais reais do TradingView.

  5. Reinicie o Claude Desktop.

Cursor

  1. Vá para: Settings -> Cursor Settings -> MCP -> Edit User MCP Config (~/.cursor/mcp.json).

  2. Adicione ou mescle o seguinte dentro do objeto mcpServers. Forneça suas credenciais no bloco 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. Substitua os caminhos de exemplo (command, args) pelos seus caminhos absolutos reais.

  4. Substitua YOUR_SESSION_ID_HERE e YOUR_SESSION_ID_SIGN_HERE pelas suas credenciais reais do TradingView.

  5. Reinicie o Cursor.

Instalando via Smithery

Para instalar o TradingView Chart Image Scraper para Claude Desktop automaticamente via Smithery:

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

Configuração

Variáveis de Ambiente

As seguintes variáveis de ambiente podem ser definidas para configurar o scraper:

  • TRADINGVIEW_SESSION_ID: Seu ID de sessão do TradingView (obrigatório)
  • TRADINGVIEW_SESSION_ID_SIGN: Sua assinatura de ID de sessão do TradingView (obrigatório)
  • MCP_SCRAPER_HEADLESS: Executar navegador em modo headless (padrão: True)
  • MCP_SCRAPER_WINDOW_WIDTH: Largura da janela do navegador (padrão: 1400)
  • MCP_SCRAPER_WINDOW_HEIGHT: Altura da janela do navegador (padrão: 1400)
  • MCP_SCRAPER_USE_SAVE_SHORTCUT: Usar captura de imagem via área de transferência em vez de links de screenshot (padrão: True)
  • MCP_SCRAPER_CHART_PAGE_ID: ID personalizado da página de gráfico (opcional)

Recurso de Atalho de Salvamento

O recurso MCP_SCRAPER_USE_SAVE_SHORTCUT permite capturar imagens de gráficos diretamente para a área de transferência como URLs de dados base64 em vez de obter links de screenshot. Isso elimina a necessidade de baixar imagens de URLs.

Benefícios:

  • Captura de gráficos mais rápida (sem requisições HTTP necessárias)
  • Mais confiável (sem dependência do CDN do TradingView)
  • Funciona offline uma vez que o gráfico é carregado
  • URLs de dados base64 diretos para uso imediato

Como funciona:

  • Quando habilitado (True): Usa Shift+Ctrl+S (ou Shift+Cmd+S no Mac) para capturar a imagem do gráfico diretamente para a área de transferência
  • Quando desabilitado (False): Usa o tradicional Alt+S para obter links de screenshot, depois converte para URLs de imagem

Configuração:

# Enable clipboard image capture (DEFAULT)
MCP_SCRAPER_USE_SAVE_SHORTCUT=True

# Disable and use traditional screenshot links
MCP_SCRAPER_USE_SAVE_SHORTCUT=False