morning-brief-mcp
Morning Brief MCP
Ein unabhängiger, deterministischer Morgenbriefdienst für A-Aktien. Er ist nicht auf AlphaAgent, XQ, interne Datenbanken oder LLM-Key angewiesen, stellt den bestehenden MorningBriefService über den standardmäßigen MCP-stdio-Transport bereit und behält zugleich die gewöhnliche Python-Aufrufmethode bei.
Funktionen
Der Dienst stellt 4 MCP-Tools bereit:
generate_morning_brief(target_date=None, output_format="json"|"markdown"): Erzeugt den vollständigen Morgenbrief.get_morning_news(target_date=None, categories=None, limit_per_category=5): Gibt Ereignisse zurück, die die Fensterfilterung, Deduplizierung, Clusterung, Klassifizierung und Relevanzsortierung durchlaufen haben.get_previous_close_context(target_date=None): Gibt den A-Aktien-Marktkontext des vorherigen Handelstags zurück, der diesem Morgenbrief entspricht.get_news_coverage(target_date=None): Gibt Status, Rolle, Kennzahlen und Abdeckung der Nachrichten-Provider zurück, ohne ursprüngliche Payloads oder Authentifizierungsinformationen.
Alle Tools beziehen sich auf einen bestätigten A-Aktien-Zielhandelstag; die Ergebnisse sind eine deterministische Aufbereitung von Quellennachweisen und stellen keine Anlageberatung dar.
Umgebung und Installation
Python 3.11+
MCP Python SDK
>=2.0.0,<3(aktuell stabile Abnahmeversion: 2.0.0)HITHINK_FINANCE_API_KEY(für den Handelskalender und den Marktkontext des vorherigen Handelstags)
Die Morgenbrief-Nachrichten stammen direkt von öffentlichen Finanz-Webprovidern im Inland; ein Brave-Key ist nicht erforderlich. Übermittle keine echte .env-Datei:
$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]"Normaler Python-Aufruf
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()MCP-stdio-Start
Nach der Installation direkt starten:
morning-brief-mcpAlternativ kann die generische Client-Konfiguration mit command + args + env verwendet werden:
{
"mcpServers": {
"morning-brief-mcp": {
"command": "python",
"args": ["-m", "morning_brief_mcp.server"],
"env": {
"HITHINK_FINANCE_API_KEY": "${HITHINK_FINANCE_API_KEY}"
}
}
}
}target_date muss strikt im Format YYYY-MM-DD angegeben werden. Wenn es weggelassen wird, wird das aktuelle Datum in Asia/Shanghai verwendet und anschließend weiterhin vom HiThink-Handelskalender validiert; an Nicht-Handelstagen wird target_not_trading_day zurückgegeben, ohne stillschweigend auf einen anderen Tag auszuweichen.
Datums-, Parameter-, Konfigurations- und Upstream-Fehler geben jeweils die stabilen Strukturen invalid_request, target_not_trading_day, provider_unavailable oder upstream_error zurück. Ein Geschäftsbericht mit status="partial" ist weiterhin ein erfolgreiches Tool-Ergebnis, etwa wenn eine einzelne Nachrichtenquelle ausfällt, aber die übrigen Daten ausreichen, um den Morgenbrief zu erzeugen. Der stdio-Server gibt keine Debug-Informationen auf stdout aus; stdout transportiert ausschließlich das MCP-Protokoll.
Datenarchitektur
Die Nachrichtenerkennung greift standardmäßig direkt auf die öffentlichen Webschnittstellen inländischer Finanzseiten zu:
Provider | Rolle | Historische Fähigkeit | Tier |
财联社 CLS | primary |
| 2 |
东方财富 7×24 | primary |
| 2 |
华尔街见闻 | primary |
| 2 |
金十 | supplemental |
| 2 |
MKTNews | supplemental |
| 3 |
东方财富个股新闻 | supplemental |
| 2 |
巨潮公告 | supplemental |
| 1 |
Solange mindestens zwei primäre Provider von unterschiedlichen Upstream-Domains tatsächlich bis news_window.start paginiert haben, wird GDELT in dieser Runde nicht aufgerufen. Nur wenn die Abdeckung des vollständigen Fensters unzureichend ist, wird GDELT als letzter Fallback verwendet; ein reiner Latest-only-Erfolg zählt nicht als vollständige Fensterabdeckung.
HiThink ist nur für den Handelskalender, den vorherigen Handelstag und den Previous-Close-Marktkontext zuständig und beteiligt sich nicht an der Nachrichtenerkennung.
Nachrichtenfenster und Pipeline
Das Morgenbrief-Fenster ist festgelegt auf 15:00 des vorherigen Handelstags bis 08:30 des Zielhandelstags in der Zeitzone Asia/Shanghai, wobei beide Grenzen eingeschlossen sind. Alle Provider werden zunächst auf einheitliche Felder abgebildet:
id、title、url、canonical_url、source、domain、published_at、description、language、category、tags、source_tier、provider、raw_source_id.
Anschließend wird die bestehende deterministische Pipeline durchlaufen:
exact time filter → canonicalize → dedup/event cluster → classify → relevance → today_watch
Mehrquellen-Berichte desselben Ereignisses zeigen nur einen Cluster und behalten related_sources und related_count. Das repräsentative Element wird anhand von Tier, Zeit und Informationsvollständigkeit bestimmt. description speichert nur echte upstream brief/summary/content snippet/hover und wird nicht programmatisch erweitert.
Ratenbegrenzung, Fehlerisolation und Sicherheit
Jede Domain teilt eine HTTP-Session und einen Rate-Limiter. Anfragen haben Timeout, begrenzte Wiederholungsversuche, Retry-After, exponentielles Backoff und Jitter. 东方财富 ist standardmäßig seriell mit einem Mindestintervall von 1 Sekunde. Ein einzelner fehlgeschlagener Provider protokolliert lediglich seinen Status, seine Warnungen und Metriken und blockiert keine anderen Provider.
Das Paginieren ist jeweils durch DOMESTIC_MAX_PAGES und DOMESTIC_MAX_ITEMS begrenzt. Jeder Provider zeichnet Seitenzahl, ursprüngliche Anzahl, ältesten Zeitpunkt, Stoppgrund sowie HTTP-Request-/429-/403-/Retry-Zähler auf.
Der API-Schlüssel wird ausschließlich aus Umgebungsvariablen gelesen; er wird weder ein Tool-Parameter noch erscheint er in Tool-Beschreibungen, Logs, Schemas oder MCP-Ergebnissen. Diagnose-Tools geben keine Anfrage-Header, vollständige Upstream-Payloads, vorsignierte URLs oder interne Geheimnisse zurück.
Tests und echter Smoke-Test
Die Standardtests sind vollständig offline; das gesamte HTTP-Verhalten verwendet Fixtures/MockTransport:
PYTHONPATH=src python -m pytestNach dem Konfigurieren des HiThink-Keys kann mit dem offiziellen MCP-Python-Client ein echter Subprozess-Smoke-Test ausgeführt werden, um die Schlüsselfelder von Service und MCP zu vergleichen:
python scripts/stdio_smoke.pyInhalts- und Lizenzhinweise
Diese Provider verwenden öffentliche Webschnittstellen ausschließlich zur Datenerkennung und Linkaggregation. Eine Open-Source-Implementierungslizenz entspricht nicht der Lizenz der Upstream-Nachrichteninhalte. Vor einer Produktions- oder kommerziellen Bereitstellung muss der Nutzer selbst die Nutzungsbedingungen, Crawling-Richtlinien und Inhaltslizenzen der jeweiligen Upstream-Dienste prüfen. Referenzimplementierung und Lizenzvermerke finden sich in THIRD_PARTY_NOTICES.md.
Dieser Dienst dient der Aufbereitung von Marktinformationen und der Forschung und stellt keine Anlageberatung dar.
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