Release v0.2.0
swiss-democracy-mcp v0.2.0
Erstes audit-verifiziertes Release. Geprüft mit mcp-audit-skill v1.0.0 —
production-ready (29 pass / 0 fail / 7 non-blocking partial, 0 Blocker).
Security & Hardening
- SSRF-Schutz: HTTPS-Enforcement + Egress-Allow-List (frozenset) vor jedem
ausgehenden Request; caller-supplied URLs zusätzlich DNS-aufgelöst + IP-Blocklist
(Cloud-Metadata/privat/loopback). (SEC-004 / SEC-005 / SEC-021) - NeighborJack behoben:
MCP_HOSTbindet standardmässig an127.0.0.1;
0.0.0.0nur explizit im Container, mit Warnung. (SEC-016) - Secrets: SRGSSR-Credentials als
SecretStr;.env.example,.gitignore,
Gitleaks-Secret-Scan in CI. (ARCH-005 / SEC-013) - Fehler-Handling: Ausführungsfehler als
isError(ToolError); keine
Stacktraces zum Modell. (OBS-001 / OBS-002) - Gehärtetes Dockerfile (non-root), Lethal-Trifecta-Bewertung dokumentiert.
(SEC-007 / SEC-019)
Architektur & Qualität
- Geteilter, gepoolter
httpx.AsyncClientvia Lifespan. (SDK-001) - Zentrale
Settings(pydantic-settings). (ARCH-004) - Strukturiertes JSON-Logging auf stderr (structlog). (OBS-003)
Context-Injektion mit Progress beim CSV-Load. (SDK-003)- CORS für Streamable-HTTP (
Mcp-Session-Id). (SDK-004) - Quellen-/Lizenz-Provenance (CC BY 4.0) in allen Antworten. (CH-004)
<use_case>-Tags,match_type,Literal-Typen, Dependabot, Roadmap-Doku.
Verbleibendes Backlog (nicht-blockierend)
SEC-005 (TLS-IP-Pinning), SEC-009 (Session-Binding), OBS-002 (SDK-Limit),
OPS-001 (Testabdeckung), SCALE-002 (LB), SDK-002 (typed returns),
ARCH-012 (protocolVersion-Pin) — Details im Audit-Report
audits/2026-06-02T035936-Z-swiss-democracy-mcp/.
Full Changelog: https://github.com/malkreide/swiss-democracy-mcp/blob/main/CHANGELOG.md