StockFlow

Proporciona datos de acciones en tiempo real y análisis de opciones de Yahoo Finance, permitiendo acceso a datos de mercado, análisis de acciones y evaluación de estrategias de opciones.

Documentación

Servidor MCP StockFlow

Un servidor FastMCP tipado para metadatos de acciones, historial de precios, indicadores técnicos, estados financieros, calendarios y cadenas de opciones a través de yfinance. Soporta transporte stdio local y HTTP Streamable en contenedores.

Herramientas

  • get_stock_data_v2(symbol, include_financials=False, include_analysis=False, include_calendar=False)
  • get_historical_data_v2(symbol, period, interval='1d', prepost=False)
  • get_options_chain_v2(symbol, expiration_date=None, include_greeks=False)

Las descargas históricas utilizan explícitamente precios no ajustados, reparación habilitada, retención de zona horaria, un tiempo de espera y un índice plano de símbolo único. Las filas conservan las marcas de tiempo y omiten la columna de cierre ajustado por separado. La volatilidad se anualiza para cada intervalo solicitado, utiliza 252/5 para barras de cinco días y escala los períodos intradía para sesiones extendidas. El RSI utiliza la semilla canónica de promedio simple de Wilder seguida de suavizado recursivo, con comportamiento definido de ganancia/pérdida cero. Cuando se solicita, los griegos de opciones son estimaciones teóricas europeas de Black-Scholes por acción (theta por día; vega/rho por punto porcentual); los metadatos de la tasa libre de riesgo identifican el respaldo configurado.

uv sync --locked
uv run python stockflow.py

El servidor utiliza stdio. Yahoo Finance es una fuente no oficial de uso personal y puede estar retrasada, incompleta, limitada en velocidad, carecer de campos o cambiar estructuralmente. Los dividendos y el ejercicio anticipado de estilo estadounidense no se modelan en los griegos. Los resultados no son asesoramiento de inversión ni datos en tiempo real garantizados.

Docker / HTTP Streamable

El contenedor se ejecuta como un usuario sin privilegios, instala las dependencias de producción bloqueadas y sirve MCP en http://127.0.0.1:8000/mcp. Inícielo con:

docker compose up --build -d
Invoke-RestMethod http://127.0.0.1:8000/health

Conecte un cliente MCP compatible con HTTP Streamable a http://127.0.0.1:8000/mcp. Para evitar una colisión de puertos al ejecutar múltiples servidores, establezca MCP_HOST_PORT antes de iniciar Compose, por ejemplo $env:MCP_HOST_PORT=8003. Detenga y elimine el contenedor con docker compose down.

El mapeo de Compose se vincula intencionalmente a localhost. El endpoint no tiene autenticación ni TLS y no debe exponerse a una red no confiable sin un proxy inverso y control de acceso configurados adecuadamente.

Vincular solo al loopback no hace que el endpoint sea privado: un navegador aún puede alcanzarlo mediante rebinding de DNS, por lo que el servidor valida los encabezados Host y Origin antes de que una solicitud llegue a una sesión MCP. Las solicitudes que llevan un Host extranjero se responden con 421 Misdirected Request y las que llevan un Origin extranjero con 403 Forbidden, mientras que el tráfico loopback de mismo origen y los clientes que no son navegadores que no envían Origin no se ven afectados.

VariablePredeterminadoPropósito
MCP_TRANSPORTstdiostdio, http o streamable-http.
MCP_HOST127.0.0.1Interfaz a la que se vincula el servidor HTTP.
MCP_PORT8000Puerto dentro del contenedor.
MCP_PATH/mcpRuta del endpoint HTTP Streamable.
MCP_HOST_PORT8000Puerto del host que Compose publica en 127.0.0.1.
MCP_HOST_ORIGIN_PROTECTIONtruetrue, auto o false. Deshabilite solo detrás de un proxy que realice la misma validación.
MCP_ALLOWED_HOSTSsin establecerNombres de host adicionales separados por comas permitidos en Host.
MCP_ALLOWED_ORIGINSsin establecerOrígenes de navegador adicionales separados por comas permitidos en Origin.

Coloque el nombre de host del proxy inverso en MCP_ALLOWED_HOSTS al poner el contenedor al frente; de lo contrario, la protección rechaza el Host proxyado. Ejecutar uv run python stockflow.py sigue siendo el predeterminado compatible con stdio fuera de Docker.

Ejecute la validación con uv lock --check, uv run ruff check ., uv run mypy ., uv run pytest, uv build y uv run python scripts/verify_wheel.py. CI también construye el contenedor y realiza comprobaciones de salud y de descubrimiento de herramientas MCP a través de HTTP Streamable. La cobertura de ramas de dominio/proveedor está limitada al 90%. Establezca YFINANCE_LIVE=1 para optar por pruebas de humo de forma en vivo.