Skip to main content
Glama
TuokkiCode

Finviz MCP

by TuokkiCode

Finviz MCP

Servidor MCP que proporciona a Claude (o cualquier cliente MCP) acceso a datos de acciones de Finviz: indicadores de una acción, noticias y búsquedas de screener, así como datos históricos de precios reales (Yahoo Finance). Los datos se obtienen en vivo con las bibliotecas finvizfinance y yfinance, por lo que no se necesitan claves API.

Herramientas

  • get_stock(ticker) – indicadores de Finviz para una acción (P/E, capitalización de mercado, márgenes, rendimientos, etc.)

  • get_stock_news(ticker) – titulares de noticias recientes de la acción

  • get_price_history(ticker, days=7) – datos históricos reales a nivel diario (Apertura/Máximo/Mínimo/Cierre/Volumen) de Yahoo Finance hasta 365 días, más un análisis listo de qué día habría sido la mejor compra (precio más bajo y mejor rendimiento en comparación con el último cierre). Finviz en sí no tiene API de datos históricos, solo una instantánea actual y una imagen de gráfico estática.

  • screen_stocks(...) – screener de Finviz con parámetros naturales (market_cap, sector, pe_max, rsi, dividend_yield_min, signal, ...). Claude no necesita conocer los nombres internos de los filtros de Finviz – el servidor traduce automáticamente los parámetros al valor más cercano compatible con Finviz. Solo funciona cuando se ejecuta localmente, no en un servidor en la nube publicado – ver Limitaciones.

  • list_screener_filters(search=None) / list_screener_signals() – herramientas auxiliares para Claude, si necesita algún filtro que screen_stocks aún no cubre con un parámetro nombrado. El valor encontrado se puede pasar como parámetro screen_stocks(extra_filters={...}).

Los parámetros de screen_stocks siempre se ajustan al "cubo" más cercano que ofrece Finviz (p. ej., pe_max=18 → "Under 20"), porque el screener de Finviz solo admite rangos de valores predefinidos, no números arbitrarios.

Related MCP server: Yahoo Finance MCP Server

1. Pruebas locales

Requiere Python 3.10+:

pip install -r requirements.txt
python server.py

El servidor se inicia en http://localhost:8000/mcp (Streamable HTTP).

Probado de extremo a extremo en este entorno (instalación, inicio, handshake initialize y las cinco herramientas con datos reales de Finviz). Durante las pruebas se descubrió que finvizfinance 1.3.0 de PyPI aún no estaba actualizado con la nueva plantilla de Finviz: get_stock fallaba por completo (la antigua clase CSS quote-links ahora es quote-header_categories, con contenido diferente), y la columna Ticker de screen_stocks tenía una letra inicial extra (p. ej., "NVDA" → "NNVDA", debido al nuevo marcador de posición del logotipo de Finviz). server.py corrige ambos directamente (ver comentario al inicio del archivo) – si Finviz vuelve a cambiar su página, estas correcciones son lo primero a revisar.

Si no tienes Python instalado pero sí Docker, puedes probar sin instalación local de Python:

docker build -t finviz-mcp .
docker run -p 8000:8000 finviz-mcp

Prueba rápida de funcionalidad desde la línea de comandos (requiere curl y que el servidor esté en ejecución):

curl -X POST http://localhost:8000/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}"

La respuesta debería mostrar seis herramientas: get_stock, get_stock_news, get_price_history, screen_stocks, list_screener_filters, list_screener_signals.

2. Publicación (p. ej., Render)

  1. Sube esta carpeta a tu propio repositorio Git (GitHub/GitLab).

  2. Render → New + → Web Service → conecta el repositorio.

  3. Render detecta automáticamente el Dockerfile. No se necesitan variables de entorno adicionales – el servidor lee el puerto de la variable PORT establecida por Render.

  4. Tras la publicación, obtendrás una URL como https://finviz-mcp.onrender.com. El endpoint MCP es /mcp después de esta, es decir: https://finviz-mcp.onrender.com/mcp.

Railway, Fly.io, etc. funcionan con el mismo principio (hosting Python basado en Dockerfile, variable de entorno PORT).

3. Conexión con Claude

Claude → Settings → Connectors → Add custom connector → pega la URL MCP (https://<tu-dirección>/mcp).

Claude admite servidores MCP remotos a través de Streamable HTTP, por lo que funciona directamente.

4. Ejemplos de prompts

  • "Get me the Finviz fundamentals for NVDA."

  • "Find oversold technology stocks with market cap over $10B."

  • "Show me 15 large-cap dividend stocks with yield over 4% and P/E under 20."

  • "What's the latest news on TSLA?"

  • "Find stocks flagged as Top Gainers today with average volume over 1M."

Limitaciones

  • screen_stocks (y list_screener_filters/list_screener_signals) no funciona en un servidor en la nube publicado (probado en Render): Finviz devuelve 403 Forbidden específicamente para el endpoint del screener (finviz.com/screener.ashx) desde direcciones IP de centros de datos, aunque get_stock/get_stock_news/get_price_history funcionan perfectamente desde el mismo servidor (usan endpoints diferentes y menos protegidos). No se pudo solucionar ajustando las cabeceras HTTP – parece ser un bloqueo intencional de IP de centro de datos por parte de Finviz solo para el screener. Si necesitas la funcionalidad de screen_stocks, ejecuta el servidor localmente (python server.py) y conéctate a él mediante un túnel como cloudflared/ngrok, para que las solicitudes salgan desde la IP de tu red doméstica.

  • Los datos se extraen de los sitios web de Finviz/Yahoo Finance (sin claves API oficiales), por lo que pueden romperse si cambian la estructura de sus páginas.

  • screen_stocks limita los resultados a 20 filas por defecto y un máximo de 50, para que la solicitud sea rápida.

  • get_price_history limita el parámetro days a un máximo de 365.

  • No incluye autenticación – si el servicio es público en Internet, cualquiera que conozca la URL puede invocarlo. Los datos son públicos, pero tenlo en cuenta si más adelante añades funciones de pago/restringidas.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides comprehensive financial market data and news through the Finnhub API. Enables real-time stock quotes, company profiles, financial metrics, analyst recommendations, and market news access.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time stock quotes, historical price data, financial news, and multi-stock comparisons using Yahoo Finance data. Enables users to access comprehensive financial market information through natural language queries.
    243 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time stock market data through Yahoo Finance without requiring an API key. Get quotes, historical data, company information, financial statements, and ticker search capabilities.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides real-time stock quotes, historical data, and stock search via Yahoo Finance, enabling AI assistants to access and analyze financial market data.
    57 npm
    19
    MIT