v1.0.2 — Audit complete + sweep
This release closes all 13 findings from the 2026-05-21 audit
(see audits/2026-05-21-swiss-academic-libraries-mcp/) plus the
4 follow-up findings from the re-audit (see audits/2026-05-21-re-audit/).
PyPI-Sprung von 0.2.0 → 1.0.2 enthält die Versionen 0.2.1, 0.3.0,
1.0.0 und 1.0.1, die nur als Git-Tags existieren. Details in der
CHANGELOG.md.
Highlights since 0.2.0
Security (high)
- F-01 Upstream-XML wird mit
defusedxmlgeparst — schützt vor
XML-Bomben (billion-laughs, quadratic blowup). - F-02 Streamable-HTTP-Transport bindet jetzt auf
127.0.0.1
per Default; neues--host-Flag, WARN-Log bei Non-Loopback,
README-Abschnitt "Security & Deployment Notes". - F-04 CI scannt Dependencies mit
pip-audit, Dependabot
überwachtpipundgithub-actionswöchentlich.
Observability (high/medium)
- F-03 Strukturiertes Logging auf stderr (stdout-frei, damit
stdio-JSON-RPC nicht korrumpiert).MCP_LOG_LEVELenv-Var. - F-07 Tool-Fehler werden als
McpErrorzurückgegeben, nicht
als Daten-Strings — Host sieht jetztisError=true. - F-13 Korrelations-ID (
request_id) in jedem Log-Eintrag
zur Upstream-Call-Verfolgung.
Performance (medium)
- F-05 Shared
httpx.AsyncClientmit Connection-Pool und
asyncio.Semaphore(5)— schont SLSP-Rate-Limits, reduziert
TLS-Handshake-Overhead. Sauberer Shutdown via FastMCP-lifespan.
UX (medium/low)
- F-06 Identifizierender
User-Agentfür alle Upstream-Calls. - F-08 Markdown/JSON-Antworten kennzeichnen Inhalte als
Bibliotheks-Metadaten (Prompt-Injection-Härtung). - F-09 README (DE/EN) hat Deployment-Hinweise für Schweizer
Behörden (Datenresidenz, Reverse-Proxy-Pflicht). - F-10
library_infoundlibrary://sourcesgenerieren aus
einer gemeinsamenSOURCES-Konstante (kein Drift mehr). - F-11 Version-Badge im README ist dynamisch (
shields.io/pypi/v). - F-12
oai_identifier-Pattern strenger validiert.
CI / Quality
- Unit-Tests laufen jetzt auf Python 3.11, 3.12 und 3.13.
ruff checkdecktsrc/UNDtests/ab.- 59 Unit-Tests + 26 Live-Tests (
pytest -m live). - Mocked End-to-End-Tests via
respxfürhttp_get.
Bonus-Fix
- Transport-Bezeichner
streamable_http→streamable-http
(korrekte FastMCP-API). Der Code wäre vorher mit aktuellen
mcp-Versionen mitTypeErrorgescheitert.
Full changelog: CHANGELOG.md