Releases: malkreide/global-education-mcp
Release list
v0.3.5
[0.3.5] — 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 jeden der 3 HTTP-Clients
global-education-mcp/<version> (+github.com/malkreide/global-education-mcp). -
__version__kommt aus den Paket-Metadaten. Vorher von Hand
gepflegt bzw. gar nicht vorhanden. Ein Literal waere genau die Drift,
die dieses Portfolio gerade ueberall beseitigt hat.Die Version stammt aus
importlib.metadataund kann nicht getrennt vom
Paket driften.
v0.3.0 — Audit-clean Release
Highlights
Erstes Audit-clean Release. Adressiert alle 12 Findings des
MCP-Best-Practice-Audits
und ist via Re-Audit
mit 36 / 36 pass, 0 findings, Production-Ready ✅ verifiziert.
Was ist neu
Performance
- FastMCP Lifespan mit shared
httpx.AsyncClientüber die gesamte
Server-Laufzeit (kein Connection-Pool-Setup pro Request mehr). - Parallele Multi-Country-Calls via
asyncio.gather+ Semaphore-
Throttling — ~5× schneller beiuis_compare_countries(15 Länder). - FastMCP Context-Injection in den drei Long-Running-Tools:
Claude Desktop zeigt jetzt Progress-Events pro Upstream-Call.
Sicherheit
- Tool-Hash-Pinning (
tools.lock.json) gegen Rug-Pull-Angriffe;
CI blockiert PRs mit unbewussten Signatur-Änderungen. - Tool-Description-Lint mit 8 Regex-Heuristiken gegen Prompt-Injection.
- Container-Sandboxing: gehärtetes Multi-Stage
Dockerfile(non-root
uid 10001),docker-compose.ymlmitread_only,cap_drop ALL,
no-new-privileges; CI-Smoke-Build verifiziert die Hardening-Flags. - Default
MCP_HOST=127.0.0.1(vorher0.0.0.0); Warnung bei
versehentlicher LAN-Exposition.
Observability
- Structured JSON Logging (
logging_setup.JSONFormatter) auf
stderr mit RFC-5424-Severities — SIEM-ready. @logged_tool-Decorator auf allen 10 Tools mittool,
duration_ms,status-Feldern pro Aufruf.- Protocol vs. Execution Errors:
raise_if_transient()raised
McpErrorfür 5xx/Timeout/Connect (Host kann retryen), 4xx bleibt
Tool-Result-Text (LLM kann sich anpassen).
Compliance (Stadt Zürich)
- ISDS-Schutzbedarfsklasse G1 (öffentlich) explizit dokumentiert.
- Schulamt-BUI-Klassifikation für Tool-Output, Cache, Logs.
- Compatibility-Matrix für MCP-Protocol, SDK, Python, httpx, pydantic.
Dependency-Management
- Obere Schranken auf den drei Kern-Dependencies:
mcp[cli]>=1.0.0,<2.0.0,httpx>=0.27.0,<1.0.0,pydantic>=2.0.0,<3.0.0. - Erstes vollständiges
CHANGELOG.md(Keep-a-Changelog 1.1.0).
Breaking Changes
Keine API-Breaking-Changes für MCP-Clients. Drei Verhaltensänderungen
in der Server-Konfiguration:
MCP_HOSTDefault ist jetzt127.0.0.1statt0.0.0.0. Bei
Cloud-Deployment (Render etc.) mussMCP_HOST=0.0.0.0explizit
gesetzt werden.- Transient-Upstream-Fehler (UNESCO/OECD 5xx/Timeout) werden
jetzt alsMcpErroran den Host eskaliert statt als Tool-Result-
Text. Hosts ohne Retry-Logik sehen einen anderen Fehlertyp. - stderr-Output: Strukturierte JSON-Logs landen jetzt auf stderr.
Wer stderr stumm geschaltet hat, verliert die Tool-Call-Telemetrie.
Upgrade
pip install --upgrade global-education-mcp
# oder via uvx (Claude Desktop):
uvx --refresh global-education-mcpv0.2.0 – Initial PyPI Release
Add files via upload