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
🚀 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.
🔥 Otimizações de Desempenho
Tecnologia de Pool de Navegadores
- Versão de Produção: Usa
main_optimized.pycom 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 desempenhomain.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,...ouhttps://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
-
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 -
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):
(Nota: Talvez seja necessário ajustar a política de execução do PowerShell:.venv\\Scripts\\Activate.ps1Set-ExecutionPolicy RemoteSigned -Scope CurrentUser)
O prompt do seu terminal agora deve indicar que você está no
(.venv). - macOS/Linux:
-
Instalar Dependências (dentro do venv):
pip install -r requirements.txt -
Configurar Ambiente (para Testes Locais):
- Copie
.env.examplepara.env. - Preencha seu
TRADINGVIEW_SESSION_IDeTRADINGVIEW_SESSION_ID_SIGNno 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.envse necessário para execuções locais.
- Copie
-
Garantir ChromeDriver: Certifique-se de que
chromedriveresteja instalado e acessível no PATH do seu sistema, ou configure otview-scraper.pyde 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:
-
Desativar Pool de Navegadores:
python main_optimized.py --disable-pooling -
Usar Versão Legada:
python main.py -
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:
- Via arquivo
.env(para testes locais): Ao executarpython main.pydiretamente, o servidor carregará credenciais e configurações de um arquivo.envno diretório do projeto. - 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
-
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
- Windows:
-
Adicione ou mescle o seguinte dentro do objeto
mcpServers. Forneça suas credenciais no blocoenv:{ "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 ... } } -
Substitua os caminhos de exemplo (
command,args) pelos seus caminhos absolutos reais. -
Substitua
YOUR_SESSION_ID_HEREeYOUR_SESSION_ID_SIGN_HEREpelas suas credenciais reais do TradingView. -
Reinicie o Claude Desktop.
Cursor
-
Vá para:
Settings -> Cursor Settings -> MCP -> Edit User MCP Config (~/.cursor/mcp.json). -
Adicione ou mescle o seguinte dentro do objeto
mcpServers. Forneça suas credenciais no blocoenv:{ "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 ... } } -
Substitua os caminhos de exemplo (
command,args) pelos seus caminhos absolutos reais. -
Substitua
YOUR_SESSION_ID_HEREeYOUR_SESSION_ID_SIGN_HEREpelas suas credenciais reais do TradingView. -
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): UsaShift+Ctrl+S(ouShift+Cmd+Sno Mac) para capturar a imagem do gráfico diretamente para a área de transferência - Quando desabilitado (
False): Usa o tradicionalAlt+Spara 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
