TradingView Chart Image Scraper
Obtiene imágenes de gráficos de TradingView para un ticker e intervalo dados.
Documentación
MCP Server - TradingView Chart Image Scraper
🚀 ¡Ahora con Optimización de Agrupación de Navegadores para un 70-80% Mejor Rendimiento Concurrente!
Este servidor MCP proporciona herramientas para obtener imágenes de gráficos de TradingView basadas en ticker e intervalo, con agrupación avanzada de navegadores para un máximo rendimiento concurrente.
🔥 Optimizaciones de Rendimiento
Tecnología de Agrupación de Navegadores
- Versión de Producción: Usa
main_optimized.pycon agrupación de navegadores para un máximo rendimiento concurrente - Mejora de Rendimiento: 70-80% más rápido para solicitudes concurrentes
- Manejo Concurrente: Soporta hasta 4 solicitudes simultáneas con instancias de navegador pre-inicializadas
- Rendimiento Esperado:
- 1 solicitud: ~6-8s (línea base)
- 2 concurrentes: ~3-4s cada una (60-70% más rápido)
- 3 concurrentes: ~2.5-3.5s cada una (70-80% más rápido)
Comparación de Versiones
main_optimized.py(Producción): Agrupación de navegadores, optimización concurrente, seguimiento de rendimientomain.py(Legado): Enfoque simple de navegador único, mantenido para depuración/respaldo
Características
- 🚀 Herramienta de Imagen de Gráfico Optimizada: Obtiene imágenes de gráficos directamente con agrupación de navegadores para un máximo rendimiento concurrente
- 📊 Estadísticas de Rendimiento: Monitoreo y estadísticas de rendimiento integrados
- 🔄 Gestión de Agrupación de Navegadores: Instancias de navegador pre-inicializadas para solicitudes concurrentes sin sobrecarga
- 🎯 Prompts de Lenguaje Natural: Solicitudes de gráficos fáciles con mapeo de intervalos
- ⚙️ Configuración de Entorno: Totalmente configurable mediante variables de entorno
- 🔐 Autenticación de TradingView: Autenticación segura basada en sesión
- 💾 Captura de Portapapeles: Captura directa de imágenes base64 para un rendimiento más rápido
Herramientas
get_tradingview_chart_image
Descripción: Obtiene la URL directa de la imagen para una captura de gráfico de TradingView con rendimiento concurrente optimizado.
Rendimiento: Esta versión optimizada logra un 70-80% mejor rendimiento para solicitudes concurrentes mediante tecnología de agrupación de navegadores.
Argumentos:
ticker(str): El símbolo de ticker de TradingView (p. ej., "BYBIT:BTCUSDT.P", "NASDAQ:AAPL"). Requerido.interval(str): El intervalo de tiempo del gráfico (p. ej., '1', '5', '15', '60', '240', 'D', 'W'). Requerido.
Retorna:
- (str): La URL directa de la imagen de captura de TradingView (p. ej.,
data:image/png;base64,...ohttps://s3.tradingview.com/snapshots/...).
Errores:
Error(tipo MCP): Si el scraper encuentra un error. Códigos de error:400: Error de entrada (formato de ticker/intervalo inválido)503: Error del scraper (fallo durante el proceso de scraping)500: Error interno inesperado del servidor
get_performance_stats
Descripción: Obtiene estadísticas de rendimiento para el servidor MCP optimizado de TradingView.
Retorna:
- Métricas detalladas sobre el rendimiento de solicitudes, mejora sobre la línea base y estado de la agrupación de navegadores
Ejemplo de Salida:
🚀 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}- Mapea nombres de marcos de tiempo comunes (p. ej., "1 minuto", "5 minutos", "1 hora", "diario") a códigos de TradingView
Show me the daily TradingView chart for {ticker}- Solicita específicamente el gráfico diario ('D')
Fetch TradingView chart image for {ticker} on the {interval} timeframe- Prompt integral con mapeo de marcos de tiempo
Configuración
-
Crear Entorno Virtual:
# Navigate to the project directory cd tradingview-chart-mcp # Create the venv (use python3 if python is not linked) python3 -m venv .venv -
Activar Entorno Virtual:
- macOS/Linux:
source .venv/bin/activate - Windows (Git Bash/WSL):
source .venv/Scripts/activate - Windows (Símbolo del sistema):
.venv\\Scripts\\activate.bat - Windows (PowerShell):
(Nota: Es posible que debas ajustar la política de ejecución de PowerShell:.venv\\Scripts\\Activate.ps1Set-ExecutionPolicy RemoteSigned -Scope CurrentUser)
El prompt de tu terminal ahora debería indicar que estás en
(.venv). - macOS/Linux:
-
Instalar Dependencias (dentro del venv):
pip install -r requirements.txt -
Configurar Entorno (para Pruebas Locales):
- Copia
.env.examplea.env. - Completa tu
TRADINGVIEW_SESSION_IDyTRADINGVIEW_SESSION_ID_SIGNen el archivo.env. Puedes obtenerlos de las cookies de tu navegador después de iniciar sesión en TradingView. - Este archivo
.envse usa al ejecutar el servidor directamente (p. ej.,python main.py) para pruebas locales. - Ajusta la configuración opcional del scraper (
MCP_SCRAPER_HEADLESS, etc.) en.envsi es necesario para ejecuciones locales.
- Copia
-
Asegurar ChromeDriver: Asegúrate de que
chromedriveresté instalado y sea accesible en el PATH de tu sistema, o configuratview-scraper.pyen consecuencia si permite especificar una ruta.
Ejecutar el Servidor
Producción (Optimizado)
python main_optimized.py
Legado (Simple)
python main.py
Opciones de Línea de Comandos
# 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
🧪 Pruebas de Rendimiento
Pruebas de Estilo Agente
Prueba el servidor usando el mismo enfoque que el agente de producción:
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
- Secuencial: ~6-8s por solicitud (línea base)
- Concurrente (3x): ~2.5-3.5s por solicitud (mejora del 70-80%)
- Tasa de Éxito: 100% de fiabilidad bajo carga
- Rendimiento: Hasta 4 solicitudes concurrentes manejadas eficientemente
🔧 Detalles Técnicos
Arquitectura de Agrupación de Navegadores
- Navegadores Pre-inicializados: 4 instancias de navegador listas para uso inmediato
- Agrupación Segura para Hilos: Acceso concurrente con bloqueo adecuado
- Semáforo Asíncrono: Limitación óptima de solicitudes
- Seguimiento de Rendimiento: Estadísticas y monitoreo en tiempo real
- Limpieza Elegante: Gestión adecuada del ciclo de vida del navegador
Función de Atajo de Guardado
La función MCP_SCRAPER_USE_SAVE_SHORTCUT te permite capturar imágenes de gráficos directamente al portapapeles como URLs de datos base64:
Beneficios:
- Rendimiento Más Rápido: No se necesitan solicitudes HTTP
- Más Fiable: Sin dependencia del CDN de TradingView
- Capacidad Sin Conexión: Funciona una vez que el gráfico está cargado
- Integración Directa: URLs de datos base64 para uso inmediato
Configuración:
# Enable clipboard image capture (DEFAULT)
MCP_SCRAPER_USE_SAVE_SHORTCUT=True
# Disable and use traditional screenshot links
MCP_SCRAPER_USE_SAVE_SHORTCUT=False
Ejemplos de Uso
Herramientas Disponibles:
get_tradingview_chart_image(ticker: str, interval: str): Obtención de gráficos optimizada con agrupación de navegadores
Ejemplos de Prompts:
- "Obtén el gráfico de 15 minutos para NASDAQ:AAPL"
- "Muéstrame el gráfico diario para BYBIT:BTCUSDT.P"
- "Obtén la imagen del gráfico de TradingView para COINBASE:ETHUSD en el marco de tiempo de 60"
Desactivar el Entorno Virtual
Cuando termines:
deactivate
🔄 Opciones de Respaldo
Si encuentras problemas con la versión optimizada:
-
Deshabilitar la Agrupación de Navegadores:
python main_optimized.py --disable-pooling -
Usar la Versión Legada:
python main.py -
Modo de Depuración:
python main_optimized.py --log-level DEBUG
📊 Monitoreo de Rendimiento
El servidor optimizado incluye monitoreo de rendimiento integrado:
- Tasas de éxito de solicitudes
- Tiempos de respuesta promedio
- Métricas de mejora de rendimiento
- Utilización de la agrupación de navegadores
- Estadísticas de manejo de solicitudes concurrentes
Accede a estas métricas mediante la herramienta get_performance_stats o a través de los registros del servidor.
🔌 Uso con Clientes MCP (Claude Desktop / Cursor)
Este servidor soporta dos formas de proporcionar configuración:
- Mediante el archivo
.env(para pruebas locales): Al ejecutarpython main.pydirectamente, el servidor cargará credenciales y configuración desde un archivo.enven el directorio del proyecto. - Mediante Variables de Entorno del Cliente (Recomendado para Integración): Cuando lo ejecuta un cliente MCP (como Claude/Cursor), debes configurar el cliente para inyectar las variables de entorno requeridas directamente. Estas anularán cualquier valor encontrado en un archivo
.env.
Claude Desktop
-
Abre tu archivo de configuración de Claude Desktop:
- Windows:
%APPDATA%\\Claude\\claude_desktop_config.json - macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json
- Windows:
-
Agrega o fusiona lo siguiente dentro del objeto
mcpServers. Proporciona tus credenciales en el bloqueenv:{ "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 ... } } -
Reemplaza las rutas de marcador de posición (
command,args) con tus rutas absolutas reales. -
Reemplaza
YOUR_SESSION_ID_HEREyYOUR_SESSION_ID_SIGN_HEREcon tus credenciales reales de TradingView. -
Reinicia Claude Desktop.
Cursor
-
Ve a:
Settings -> Cursor Settings -> MCP -> Edit User MCP Config (~/.cursor/mcp.json). -
Agrega o fusiona lo siguiente dentro del objeto
mcpServers. Proporciona tus credenciales en el bloqueenv:{ "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 ... } } -
Reemplaza las rutas de marcador de posición (
command,args) con tus rutas absolutas reales. -
Reemplaza
YOUR_SESSION_ID_HEREyYOUR_SESSION_ID_SIGN_HEREcon tus credenciales reales de TradingView. -
Reinicia Cursor.
Instalación mediante Smithery
Para instalar TradingView Chart Image Scraper para Claude Desktop automáticamente mediante Smithery:
npx -y @smithery/cli install @ertugrul59/tradingview-chart-mcp --client claude
Configuración
Variables de Entorno
Se pueden configurar las siguientes variables de entorno para configurar el scraper:
TRADINGVIEW_SESSION_ID: Tu ID de sesión de TradingView (requerido)TRADINGVIEW_SESSION_ID_SIGN: Tu firma de ID de sesión de TradingView (requerido)MCP_SCRAPER_HEADLESS: Ejecutar el navegador en modo headless (predeterminado:True)MCP_SCRAPER_WINDOW_WIDTH: Ancho de la ventana del navegador (predeterminado:1400)MCP_SCRAPER_WINDOW_HEIGHT: Alto de la ventana del navegador (predeterminado:1400)MCP_SCRAPER_USE_SAVE_SHORTCUT: Usar captura de imagen de portapapeles en lugar de enlaces de capturas de pantalla (predeterminado:True)MCP_SCRAPER_CHART_PAGE_ID: ID de página de gráfico personalizada (opcional)
Función de Atajo de Guardado
La función MCP_SCRAPER_USE_SAVE_SHORTCUT te permite capturar imágenes de gráficos directamente al portapapeles como URLs de datos base64 en lugar de obtener enlaces de capturas de pantalla. Esto elimina la necesidad de descargar imágenes desde URLs.
Beneficios:
- Captura de gráficos más rápida (no se necesitan solicitudes HTTP)
- Más fiable (sin dependencia del CDN de TradingView)
- Funciona sin conexión una vez que el gráfico está cargado
- URLs de datos base64 directas para uso inmediato
Cómo funciona:
- Cuando está habilitado (
True): UsaShift+Ctrl+S(oShift+Cmd+Sen Mac) para capturar la imagen del gráfico directamente al portapapeles - Cuando está deshabilitado (
False): Usa elAlt+Stradicional para obtener enlaces de capturas de pantalla, luego los convierte a URLs de imágenes
Configuración:
# Enable clipboard image capture (DEFAULT)
MCP_SCRAPER_USE_SAVE_SHORTCUT=True
# Disable and use traditional screenshot links
MCP_SCRAPER_USE_SAVE_SHORTCUT=False
