v0.2.0 — Audit remediation (production-ready)
Audit-remediation release. Closes all critical/high findings from the
mcp-audit-skill audit. The
re-audit reports production-ready: 36 pass · 0 fail · 2 partial · 6 todo
(catalog hash 091f446b, run-id 2026-06-03T191138-Z-swiss-electricity-mcp).
🔒 Security
- SEC-016 — HTTP host defaults to
127.0.0.1;0.0.0.0only explicitly (containers). - SEC-007 — Multi-stage
Dockerfile, non-root user (UID 10001),HEALTHCHECK. - SEC-018 — SPARQL-injection closed:
categorywhitelist +cantonescaping + string bounds. - SEC-004/005/021 — HTTPS-only, host-allow-listed egress gate (
assert_url_allowed); seedocs/network-egress.md. - SEC-022 — Tool definitions pinned in
tool-definitions.lock.jsonwith a drift test. - SEC-019/013/008 — Security posture documented (
docs/security-posture.md): lethal-trifecta, secrets, supply chain.
🔭 Observability
- OBS-003/004 — Structured JSON logging via
structlogto stderr. - OBS-006 — Opt-in OpenTelemetry tracing (per-tool spans + httpx auto-instrumentation).
- OBS-002 — Upstream errors logged server-side, masked in client responses.
- OBS-001 — Execution- and protocol-error-path tests.
🧩 SDK & architecture
- SDK-001 — Shared HTTP clients owned by a FastMCP
lifespan. - SDK-003 —
ctx: Contexton SPARQL tools; progress reporting in compare. - SDK-004 — CORS middleware exposes/allows
Mcp-Session-Id. - ARCH-004 — Configuration centralised in a Pydantic-Settings object; clients via lifespan context.
- ARCH-009 — All 12 tools declare explicit MCP annotations (
readOnlyHint/openWorldHint). - ARCH-007 —
tariff_compare_municipalitiesfetches concurrently (asyncio.gather). - ARCH-003 — Search tools return
match_type+ actionablesuggestionon zero hits.
⚙️ CI / infrastructure
- ARCH-011/OPS-001 — CI (
test.yml: ruff + pytest on 3.11–3.13) andpublish.yml(PyPI OIDC). - ARCH-005 — Gitleaks secret scan on every push/PR.
- ARCH-012 — Dependabot;
mcp[cli]pinned>=1.2.0,<2.0.0; MCP protocol-version policy in README. - OPS-002/003 — ASCII architecture diagram; Phase-1 declaration +
docs/roadmap.md.
Full changelog: CHANGELOG.md · compare v0.1.0...v0.2.0