morning-brief-mcp
Morning Brief MCP
Servicio independiente y determinista de informes matutinos de acciones A. No depende de AlphaAgent, XQ, bases de datos internas ni LLM Key. Expone el MorningBriefService existente a través del transporte estándar MCP stdio, conservando al mismo tiempo el modo de invocación normal en Python.
Funciones
El servicio expone 4 herramientas MCP:
generate_morning_brief(target_date=None, output_format="json"|"markdown"): genera el informe matutino completo.get_morning_news(target_date=None, categories=None, limit_per_category=5): devuelve los eventos tras el filtrado por ventana, la deduplicación, el agrupamiento en clústeres, la clasificación y el ordenamiento por relevancia.get_previous_close_context(target_date=None): devuelve el contexto de mercado de las acciones A del día de negociación anterior correspondiente a ese informe matutino.get_news_coverage(target_date=None): devuelve el estado de los proveedores de noticias, los roles, las métricas y la cobertura, sin incluir el payload original ni información de autenticación.
Todas las herramientas están orientadas al día de negociación objetivo confirmado de las acciones A; el resultado es una recopilación determinista de evidencia de fuentes y no constituye asesoramiento de inversión.
Entorno e instalación
Python 3.11+
MCP Python SDK
>=2.0.0,<3(versión estable actual de aceptación: 2.0.0)HITHINK_FINANCE_API_KEY(para el calendario de días de negociación y el contexto de mercado del día de negociación anterior)
Las noticias del informe matutino provienen directamente de proveedores web financieros públicos nacionales; no se necesita Brave Key. No se debe enviar un .env real:
$env:HITHINK_FINANCE_API_KEY="your-key"python -m venv .venv
# Windows
.venv\Scripts\python -m pip install -e ".[test]"
# macOS/Linux
.venv/bin/python -m pip install -e ".[test]"Invocación normal en Python
from morning_brief_mcp.renderers.markdown import render_markdown
from morning_brief_mcp.services.morning_brief import MorningBriefService
service = MorningBriefService()
try:
report = service.generate("2026-08-17")
markdown = render_markdown(report)
finally:
service.close()Inicio de MCP stdio
Después de la instalación, inícielo directamente:
morning-brief-mcpTambién se puede usar la configuración de cliente genérica de command + args + env:
{
"mcpServers": {
"morning-brief-mcp": {
"command": "python",
"args": ["-m", "morning_brief_mcp.server"],
"env": {
"HITHINK_FINANCE_API_KEY": "${HITHINK_FINANCE_API_KEY}"
}
}
}
}target_date debe usar estrictamente YYYY-MM-DD. Si se omite, se usa la fecha actual de Asia/Shanghai y posteriormente la valida el calendario de días de negociación de HiThink; si no es día de negociación, devuelve target_not_trading_day sin cambiar de día de forma silenciosa.
Los errores de fecha, parámetros, configuración y upstream devuelven estructuras estables de invalid_request, target_not_trading_day, provider_unavailable o upstream_error, respectivamente. Un status="partial" en el informe de negocio sigue siendo un resultado de herramienta exitoso; por ejemplo, cuando una sola fuente de noticias falla pero los demás datos son suficientes para generar el informe matutino. El servidor stdio no imprime información de depuración en stdout; stdout solo transporta el protocolo MCP.
Arquitectura de datos
El descubrimiento de noticias accede por defecto directamente a las interfaces web públicas de los sitios financieros nacionales:
Proveedor | Rol | Capacidad histórica | Tier |
财联社 CLS | primary |
| 2 |
东方财富 7×24 | primary |
| 2 |
华尔街见闻 | primary |
| 2 |
金十 | supplemental |
| 2 |
MKTNews | supplemental |
| 3 |
东方财富个股新闻 | supplemental |
| 2 |
巨潮公告 | supplemental |
| 1 |
Siempre que al menos dos proveedores primarios de dominios upstream diferentes paginen realmente hasta news_window.start, no se invocará GDELT en esta ronda. GDELT solo se usa como último recurso cuando la cobertura de la ventana completa es insuficiente; el éxito de solo-latest no se contabiliza como cobertura de ventana completa.
HiThink solo se encarga del calendario de días de negociación, el día de negociación anterior y el contexto de mercado del cierre anterior; no participa en el descubrimiento de noticias.
Ventana de noticias y pipeline
La ventana del informe matutino se fija de 15:00 del día de negociación anterior a 08:30 del día objetivo, en la zona horaria Asia/Shanghai, con ambos límites incluidos. Todos los proveedores se asignan primero a los campos unificados:
id, title, url, canonical_url, source, domain,
published_at, description, language, category, tags,
source_tier, provider, raw_source_id.
Después continúa con el pipeline determinista existente:
exact time filter → canonicalize → dedup/event cluster → classify → relevance → today_watch
Las noticias de múltiples fuentes sobre el mismo evento muestran un solo clúster y conservan related_sources y related_count. El elemento representativo se determina por Tier, tiempo e integridad de la información. description solo guarda el brief/resumen/fragmento de contenido/hover real de la fuente; no se amplía mediante programación.
Límites de velocidad, aislamiento de fallos y seguridad
Cada dominio comparte una sesión HTTP y un limitador de velocidad (rate limiter). Las solicitudes tienen timeout, reintentos acotados, Retry-After, retroceso exponencial y jitter. Por defecto, 东方财富 realiza solicitudes en serie con un intervalo mínimo de 1 segundo. El fallo de un solo proveedor solo registra su estado, advertencias y métricas; no bloquea a otros proveedores.
La paginación está limitada por DOMESTIC_MAX_PAGES y DOMESTIC_MAX_ITEMS. Cada proveedor registra el número de páginas, la cantidad bruta de elementos, la hora más antigua, el motivo de detención y los contadores de solicitudes HTTP/429/403/reintentos.
La API Key se lee únicamente de variables de entorno; no se convierte en un parámetro de herramienta ni aparece en la descripción de la herramienta, los registros, el esquema ni los resultados de MCP. La herramienta de diagnóstico no devuelve cabeceras de solicitud, payloads de upstream completos, URLs prefirmadas ni secretos internos.
Pruebas y smoke real
Las pruebas predeterminadas son completamente offline; todo el comportamiento HTTP usa fixtures/MockTransport:
PYTHONPATH=src python -m pytestDespués de configurar la clave de HiThink, se puede ejecutar un smoke real en un subproceso con el cliente oficial de Python para MCP y comparar los campos clave entre el Service y MCP:
python scripts/stdio_smoke.pyContenido y notas de licencia
Estos proveedores utilizan interfaces web públicas, únicamente para el descubrimiento de datos y la agregación de enlaces. La licencia de la implementación de código abierto no equivale a la licencia del contenido de noticias de las fuentes; antes de un despliegue en producción o comercial, el usuario debe confirmar por su cuenta los términos de servicio de cada fuente, las políticas de rastreo y el permiso de uso del contenido. La implementación de referencia y el registro de licencias se encuentran en THIRD_PARTY_NOTICES.md.
Este servicio se utiliza para la recopilación e investigación de información de mercado y no constituye asesoramiento de inversión.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only China A-share data for AI agents: market, limit-up, capital flow and disclosures.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mars-0310/morning-brief-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server