Skip to content

Release 0.2.0 — full MCP audit remediation (10/10 findings, PRs #2–#7)

Choose a tag to compare

@malkreide malkreide released this 05 Jun 04:03
0b780d6

sbb-opendata-mcp v0.2.0 — Audit-Remediation & Hardening

Dieses Release schliesst die vollständige Remediation eines MCP-Sicherheits- und
Qualitäts-Audits ab (durchgeführt mit der mcp-audit-skill).
Alle 10 Findings (2 High · 4 Medium · 4 Low) wurden behoben — über die PRs #2#7.
Es gibt keine Breaking Changes für bestehende MCP-Clients: der menschenlesbare
Markdown-Output aller Tools bleibt unverändert.

🔒 Security

  • ODSQL-Injection geschlossen (F-SEC-01): year/canton werden per Regex validiert,
    alle in die where-Klausel interpolierten Werte (inkl. zuvor ungeschützter
    operator/phase/traffic_type) laufen über ein zentrales Escaping.
  • Streamable-HTTP-Transport gehärtet (F-SEC-02): DNS-Rebinding-/Origin-Schutz aktiv;
    Bind-Host und Allowlists via MCP_HOST / MCP_ALLOWED_HOSTS / MCP_ALLOWED_ORIGINS.
  • Keine Error-Leaks mehr (F-SEC-03): Upstream-Bodies/Exception-Details landen nur noch
    im Server-Log, der Client erhält bereinigte Meldungen.
  • Supply Chain (F-SEC-04): Abhängigkeiten mit Major-Caps gepinnt + reproduzierbarer uv.lock.

📈 Observability

  • Strukturiertes Logging (F-OBS-01) auf stderr (stdout bleibt dem stdio-JSON-RPC-Kanal
    vorbehalten), konfigurierbar über LOG_LEVEL und LOG_FORMAT (text/json).

⚡ Performance

  • Connection-Pooling + Nebenläufigkeit (F-SCALE-01): gemeinsamer httpx.AsyncClient
    mit Keep-Alive; compare_stations ruft die Stationen parallel ab (vorher 2×N sequentiell).

🧩 API & DX

  • MCP structuredContent auf allen Tools (F-SDK-01) — zusätzlich zum Markdown-Text,
    additiv und nicht-breaking.
  • response_format jetzt auch für compare_stations (F-ARCH-01).
  • Robuste Zahlenformatierung der Nutzfläche (F-SEC-05).
  • pip install -e ".[dev]" funktioniert (dev-Extra), pytest-Marker live registriert (F-OPS-01).

✅ Qualität

  • Testsuite 34 → 60 Tests (alle grün), ruff check sauber.
  • Audit-Evidenz unter audits/2026-06-04-sbb-opendata-mcp/ (alle Findings als closed dokumentiert).

📦 Installation

uvx sbb-opendata-mcp        # oder: pip install sbb-opendata-mcp