v0.2.4
[0.2.4] - 2026-07-31
Hinzugefuegt
-
Der Server nennt jetzt seinen Namen. Bisher ging gegenueber jedem
Upstream der httpx-Default hinaus: der Betreiber der Datenquelle sah
eine Bibliothek, nicht uns, und hatte keinen Weg, uns bei Fehlverhalten
zu erreichen. Neu traegt den HTTP-Client
zh-education-mcp/<version> (+github.com/malkreide/zh-education-mcp).Die Version stammt aus
importlib.metadataund kann nicht getrennt vom
Paket driften.
Fixed
-
stateless_httpundjson_responsekamen nicht mehr bei der App an
(SCALE-002/003). In mcp 1.x waren beideMCPServer-Konstruktor-Argumente;
die Migration auf 2.x hat sie gelöscht, ohne sie als App-Kwargs wieder
anzuhängen. Das war ein stiller Rückschritt: der Default inconfig.pyist
stateless_http: bool = True, der App-Kwarg-Default istFalse— der Server
hielt also wieder Session-State und verlangte Sticky Sessions, während der
Kommentar intools.pyweiterhin Round-Robin ohne Sticky Sessions zusicherte.
Nichts schlug fehl, weil der Lesepfad, an dem man es gesehen hätte, mit
verschwunden ist.Beide reisen jetzt in
streamable_http_app().sse_app()bekommt sie nicht:
SSE hat kein Stateless-Modell und kein JSON-Response-Format.Vier neue Tests prüfen die App-Kwargs selbst statt eines Zwischenzustands —
inklusive eines Falls mitstateless_http=False, der beweist, dass der Wert
durchreist und nicht hartkodiert ist, und eines, der festhält, dass der
1.x-Lesepfad laut fehlschlägt (ValueError) statt still zu verpuffen.
Mutationsgetestet: entfernt man die Kwargs wieder, fallen genau diese drei.Geprüft mit dem wörtlichen CI-Kommando: 55 passed, 1 skipped, 1 deselected;
ruff check src/ tests/clean.
Fixed
- Capped
mcpat<2.mcp2.0.0, published 2026-07-28, removed
mcp.server.fastmcp— the module this server imports. With the previous
unbounded>=1.28.1every fresh resolve picked 2.0.0 and failed at import
withModuleNotFoundError, in CI and for anyone runningpip installalike.
Verified in both directions: 2.0.0 fails,<2resolves to 1.29.0 and imports
cleanly. Migrating to the 2.x API (mcp.server.mcpserver) stays a separate,
deliberate piece of work.