Skip to content

Release v0.2.0

Choose a tag to compare

@malkreide malkreide released this 02 Jun 04:07
05b04d7

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_HOST bindet standardmässig an 127.0.0.1;
    0.0.0.0 nur 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.AsyncClient via 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