Stock Market Tracker
Servidor MCP para análisis financiero avanzado, monitoreo de acciones e inteligencia de mercado en tiempo real para respaldar decisiones de compra/venta
Documentación
Servidor MCP Financiero
Azure / Render / GCP Cloud Run alojan el backend MCP · Cloudflare despliega el proxy HTTPS opcional
Un servidor personalizado de Protocolo de Contexto de Modelo (MCP) para análisis financiero avanzado, monitoreo de acciones e inteligencia de mercado en tiempo real. Este servidor proporciona un conjunto de herramientas y endpoints de API para gestión de carteras, resúmenes de mercado, alertas de acciones e información financiera contextual, diseñado para una integración perfecta con Claude Desktop y otros clientes compatibles con MCP.
Despliegue en la Nube con un Solo Clic
Usa los botones en la parte superior de esta página o la guía completa en DEPLOY.md
para lanzar un endpoint MCP remoto en https://<host>/mcp.
| Plataforma | Despliega | Autenticación predeterminada | Configuración OAuth |
|---|---|---|---|
| Azure Container Apps | Backend MCP en Python (azuredeploy.json) | mcpAuthMode=static | Configura mcpAuthMode=oauth + ajustes de Entra en el portal — consulta OAuth (Entra ID) |
| Render | Backend MCP en Python (render.yaml) | MCP_AUTH_MODE=static | Configura MCP_ACCESS_TOKEN (requerido en modo estático), luego agrega variables de entorno OAuth en el panel de Render si es necesario |
| Google Cloud Run | Backend MCP en Python (Dockerfile / GHCR) | MCP_AUTH_MODE=static | Configura variables de entorno OAuth en Cloud Run → Variables y secretos — consulta gcp/README.md |
| Cloudflare Worker | Solo proxy HTTPS (cloudflare-worker/) | WORKER_AUTH_MODE=static | Usa WORKER_AUTH_MODE=passthrough cuando el backend utiliza JWT OAuth |
- Predeterminado local:
MCP_TRANSPORT=stdio(Claude Desktop / clientes MCP locales) - Predeterminado en la nube:
MCP_TRANSPORT=streamable-http - Modos de autenticación:
MCP_AUTH_MODE=static|oauth|none— el ID de cliente y el secreto de OAuth van en Claude, no en el servidor
Características Principales
- Kit de Herramientas de Acciones: Herramientas de cotizaciones, descripción general de la empresa e historial de precios para flujos de trabajo de análisis prácticos.
- Cartera con Valores en Vivo: Mantén un almacén de lista de seguimiento/posiciones y devuelve contexto de valoración a nivel de cartera.
- Alertas de Precio Configurables: Configura umbrales de
above/belowpor ticker y evalúa eventos de alerta activados. - Capa de Noticias + Contexto: Recupera noticias de mercado y resúmenes de contexto opcionales con sentimiento para flujos de trabajo de investigación.
- HTTP Transmisible Seguro: Validación de portador estático (
MCP_ACCESS_TOKEN) o JWT OAuth (MCP_AUTH_MODE=oauth) para despliegues públicos. - Listo para la Nube: Docker + despliegues con un solo clic para Azure Container Apps, Render, Google Cloud Run y proxy Cloudflare Worker.
Descripción General del Sistema
Endpoints y Herramientas Principales
- get_stock_quote(ticker: str)
- Devuelve datos de cotización en vivo normalizados (precio, cambio, capitalización de mercado, volumen, bolsa, marca de tiempo).
- get_price_history(ticker: str, period: str, interval: str)
- Devuelve puntos de historial OHLCV listos para gráficos para backtesting y análisis de tendencias.
- get_company_overview(ticker: str)
- Devuelve metadatos del perfil de la empresa y campos clave de valoración cuando estén disponibles.
- get_portfolio()
- Devuelve posiciones/lista de seguimiento más enriquecimiento de cotizaciones en vivo y resumen del valor de mercado de la cartera.
- add_stock(...) / remove_stock(...)
- Agrega o elimina símbolos en el almacén de cartera persistente.
- set_stock_alert(ticker, above=None, below=None) / get_portfolio_alerts(ticker=None)
- Configura y evalúa alertas de umbral de precio a partir de reglas basadas en la cartera.
- get_stock_news(ticker_or_query, max_results=5) y financial_context(query)
- Proporciona titulares financieros sin procesar y resúmenes de contexto opcionales listos para LLM.
Alertas Automatizadas
- Integración con Telegram: Envía alertas y resúmenes formateados a un chat de Telegram configurado.
- Oportunidades de Trading: Detecta y notifica sobre señales de trading accionables.
Resumen Contextual
- Resumidor de Noticias: Utiliza backends LLM configurables (
ollama,openaioauto) para generar resúmenes detallados con etiquetas de sentimiento. - Constructor de Prompts: Construye un prompt consciente del mercado para usar en LLMs o asistentes posteriores.
Estructura de Archivos
config/
alerts_config.json # Main alert configuration (sector/ticker/thresholds)
tech_alerts_config.json # Tech sector-specific alerts
services/
alerts.py # Core alert logic
tech_alerts.py # Tech sector alert logic
telegram_alerts.py # Telegram integration
market_summary.py # Market data and news
summarizer.py # News summarization (LLM)
fetcher.py # Web data fetching
context_builder.py # Prompt/context construction
intent_parser.py # Financial entity extraction
portfolio.py # Portfolio management
server.py # MCP server entry point and API definitions
requirements.txt # Python dependencies
Configuración y Personalización
Configuración de Alertas (config/alerts_config.json)
- Organiza acciones por sector, con umbrales de precio superiores/inferiores personalizables y descripciones.
- Estructura de ejemplo:
{
"Tech Giants": {
"AAPL": {"above": 200, "below": 180, "description": "Apple Inc."}
},
"Financial": {
"JPM": {"above": 160, "below": 140, "description": "JPMorgan Chase"}
}
}
Variables de Entorno
Configúralas en un archivo .env o en el entorno de tu sistema:
MCP_TRANSPORT=stdio
HOST=0.0.0.0
PORT=8000
LOG_LEVEL=INFO
MCP_AUTH_MODE=static
# Used when MCP_AUTH_MODE=static
MCP_ACCESS_TOKEN=replace_with_strong_secret_for_http
# Used when MCP_AUTH_MODE=oauth
OAUTH_ISSUER_URL=
# Optional additional issuers (space/comma-separated), e.g. sts.windows.net tenant issuer
# OAUTH_ISSUER_URLS=
# Optional JWKS override (otherwise discovered from issuer metadata)
# OAUTH_JWKS_URL=
OAUTH_AUDIENCE=
OAUTH_REQUIRED_SCOPES=mcp.tools
# Optional metadata scopes advertised to clients (use full Entra scope if needed):
# OAUTH_SCOPES_SUPPORTED=api://<api-app-id>/mcp.tools
MCP_RESOURCE_SERVER_URL=
# Optional: built-in OAuth broker for Claude + Entra resource/scope translation
# OAUTH_BROKER_ENABLED=false
# OAUTH_BROKER_SCOPE=api://<api-app-id>/mcp.tools
# OAUTH_BROKER_CLIENT_ID=
# OAUTH_BROKER_CLIENT_SECRET=
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_USER_ID=your_chat_id
SERPAPI_API_KEY=your_serpapi_key
# Optional (deploy templates support it; quotes currently use yfinance)
# ALPHA_VANTAGE_API_KEY=
SUMMARIZER_PROVIDER=ollama
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=mistral
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
# Optional custom OpenAI-compatible base URL
# OPENAI_BASE_URL=
# Optional: set true only for local streamable-http tests
# ALLOW_UNAUTHENTICATED_HTTP=false
# Optional: send Telegram notifications when alerts trigger
# ENABLE_TELEGRAM_ALERTS=false
# Optional persistent path for portfolio file in cloud
# PORTFOLIO_FILE=/data/user_portfolio.json
Modos de Autenticación HTTP
static: valida un único token de portador (MCP_ACCESS_TOKEN). DejaMCP_RESOURCE_SERVER_URLsin configurar para que el servidor no publique metadatos de recursos protegidos OAuth (recomendado para Postman y configuración simple de portador en Claude).oauth: valida tokens de acceso JWT de un proveedor OIDC externo usandoOAUTH_ISSUER_URL+OAUTH_AUDIENCE(+OAUTH_JWKS_URLopcional). ElOAUTH_ISSUER_URLSopcional permite emisores adicionales de confianza (por ejemplo,sts.windows.netcuando Entra devuelve reclamaciones de emisor v1). El ID de cliente y el secreto de cliente pertenecen a la aplicación conectora / IdP, no a este servidor.none: solo para pruebas locales conALLOW_UNAUTHENTICATED_HTTP=true.
Microsoft Entra ID (Azure AD)
Para conectores OAuth de Claude, registra una aplicación API de Entra y una aplicación de cliente separada, despliega el
backend con MCP_AUTH_MODE=oauth, luego configura Claude con las credenciales de la aplicación de cliente.
Configuración paso a paso de Entra y Claude: DEPLOY.md — OAuth (Entra ID).
Si Claude sigue fallando con Entra AADSTS9010010 mientras Postman funciona con el
mismo token, habilita el broker integrado descrito en
DEPLOY.md — Broker OAuth para Claude + Entra.
Instalación y Ejecución desde Claude Desktop
Requisitos Previos
- Python 3.7+
- Claude Desktop (o cualquier cliente compatible con MCP)
- Credenciales del bot de Telegram (para alertas)
- Conexión a internet (para datos de mercado/noticias)
Guía Paso a Paso
-
Clona el Repositorio
git clone <this-repo-url> cd Finance_MCP_Server -
Crea y Activa un Entorno Virtual
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
Instala las Dependencias
pip install -r requirements.txt -
Configura las Variables de Entorno
- Crea un archivo
.enven la raíz del proyecto con tus claves de API y tokens:TELEGRAM_BOT_TOKEN=your_bot_token TELEGRAM_USER_ID=your_chat_id SERPAPI_API_KEY=your_serpapi_key MCP_AUTH_MODE=static MCP_ACCESS_TOKEN=replace_with_strong_secret_for_http SUMMARIZER_PROVIDER=ollama OLLAMA_HOST=http://localhost:11434 OLLAMA_MODEL=mistral OPENAI_API_KEY= OPENAI_MODEL=gpt-4o-mini
- Crea un archivo
-
Edita las Configuraciones de Alertas
- Modifica
config/alerts_config.jsonyconfig/tech_alerts_config.jsonpara configurar tus acciones, sectores y umbrales.
- Modifica
-
Instala el Servidor MCP con la CLI
- Usa la CLI de MCP para instalar y registrar el servidor para Claude Desktop:
mcp install server.py --name "Financial MCP Server" - Esto registrará el servidor como una herramienta MCP personalizada, haciéndola detectable por Claude Desktop y otros clientes MCP.
- Usa la CLI de MCP para instalar y registrar el servidor para Claude Desktop:
-
Ejecuta el Servidor MCP mediante la CLI de MCP
- Inicia el servidor usando la CLI de MCP:
mcp run server.py - El servidor se iniciará y escuchará solicitudes MCP a través de stdio.
- Inicia el servidor usando la CLI de MCP:
-
Conéctate desde Claude Desktop
- En Claude Desktop, agrega una nueva conexión de servidor MCP personalizada.
- Configura el ejecutable/comando en
mcp run server.py(o selecciona el "Financial MCP Server" registrado de la lista de la CLI de MCP). - Claude Desktop se comunicará con el servidor usando el protocolo MCP, habilitando todas las herramientas y endpoints descritos.
Ejemplo: Configuración del Servidor MCP en Claude Desktop
Después de instalar y registrar el Financial MCP Server, puedes agregarlo a tu configuración de Claude Desktop. Aquí hay un fragmento de ejemplo de claude_desktop_config.json:
{
"mcpServers": {
"Financial-MCP-Server": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"server.py"
],
"env": {
"SERPAPI_API_KEY": "",
"TELEGRAM_BOT_TOKEN": "",
"TELEGRAM_USER_ID": "",
"OPENAI_API_KEY": ""
}
}
}
}
- Actualiza la sección
envcon tus claves de API y tokens reales según sea necesario. - Esta configuración asegura que Claude Desktop pueda iniciar y comunicarse con tu Financial MCP Server usando el entorno y los argumentos de línea de comandos correctos.
Uso de tus Herramientas en Claude Desktop
Después de instalar y conectar tu Financial MCP Server personalizado, todas las herramientas disponibles aparecerán automáticamente en el menú de herramientas de Claude Desktop. Puedes habilitar o deshabilitar cada herramienta individualmente, lo que facilita el acceso a funcionalidades como análisis de contexto financiero, resúmenes de mercado, gestión de carteras y alertas de acciones directamente desde la interfaz de Claude.
A continuación se muestra una captura de pantalla que muestra cómo se listarán y alternarán las herramientas de tu servidor MCP en Claude Desktop:

- Cada herramienta (por ejemplo,
financial_context,market_summary,add_stock, etc.) se puede habilitar o deshabilitar según sea necesario. - Esta integración perfecta te permite interactuar con tu servidor de análisis financiero usando lenguaje natural y flujos de trabajo basados en herramientas dentro de Claude Desktop.
Ejemplos de Uso
- Obtén Cotizaciones en Vivo: Usa
get_stock_quoteyget_company_overviewpara verificaciones prácticas de acciones. - Sigue tu Cartera: Usa
add_stock,remove_stockyget_portfoliopara mantener y valorar tu lista de seguimiento. - Evalúa Alertas: Usa
set_stock_alertyget_portfolio_alertspara señales basadas en umbrales. - Análisis Contextual: Usa
financial_contextpara obtener y resumir el contexto de mercado para una consulta.
Solución de Problemas y Registros
- Todos los registros se escriben en
financial_mcp.logen la raíz del proyecto. - Para depurar, revisa el archivo de registro y asegúrate de que tus variables de entorno y archivos de configuración sean correctos.
- Si encuentras problemas con Telegram o la obtención de noticias, verifica tus claves de API y tu conexión a internet.