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