Skip to main content
Glama
Mars-0310

morning-brief-mcp

by Mars-0310

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-mcp

Alternativ 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

primary_full_windowlast_time

2

东方财富 7×24

primary

primary_full_windowsortEnd

2

华尔街见闻

primary

primary_full_window(Antwort next_cursor

2

金十

supplemental

supplemental_latest

2

MKTNews

supplemental

supplemental_latest

3

东方财富个股新闻

supplemental

supplemental_security, streng begrenzte Anzahl von Basiswerten

2

巨潮公告

supplemental

supplemental_security, streng begrenzte Anzahl von Basiswerten

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:

idtitleurlcanonical_urlsourcedomainpublished_atdescriptionlanguagecategorytagssource_tierproviderraw_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 pytest

Nach 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.py

Inhalts- 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.

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all MCP Connectors

Latest Blog Posts

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