Releases: malkreide/seco-labor-mcp
Releases · malkreide/seco-labor-mcp
Release list
v0.3.4
[0.3.4] - 2026-07-30
Fixed
- The User-Agent reports the actual package version again. The published
0.3.3sentseco-labor-mcp/0.3.0to every upstream — the version string was
hardcoded and had been left behind by earlier bumps. The version now comes
from the package metadata, so it can no longer drift from the package.
0.3.0 — Audit cycle complete
Version 0.2.0 was reserved for an earlier GitHub-only release (commit 89fc337,
pre-audit lint cleanup). Because PyPI version numbers are immutable, this
audit-completion snapshot ships as 0.3.0 to avoid a confusing collision
between the GitHub tag and what users would install from PyPI.
This release closes 13 findings from a complete mcp-audit-skill audit cycle
(2 HIGH, 4 MEDIUM, 3 LOW + 4 follow-up LOW from a re-audit).
Added
- FastMCP
lifespanwith a pooledhttpx.AsyncClientreused across all tool calls (SDK-001). - Live CSV parsing for
seco_get_unemployment_overview,seco_get_youth_unemployment,
andseco_get_job_seekerswith defensive delimiter/encoding detection. - 24h TTL CSV cache (bounded to 50 entries, FIFO eviction).
- SSRF prevention: HTTPS-only enforcement + async IP validation +
follow_redirects=False(SEC-004). OccupationInputPydantic model for ARCH consistency.- 35 new unit tests (34 → 69) covering live CSV, SSRF, cache eviction, error split.
Changed
- SSE binds to
127.0.0.1by default (SEC-016). FastMCP(..., mask_error_details=True)to prevent internal exception leakage (OBS-002).- 5xx/ConnectError/Timeout re-raised as protocol errors; 4xx/SSRF return recoverable strings (OBS-001).
- Tests split into
tests/test_unit.pyandtests/test_live.py(OPS-001).
Removed
- Unused
KNOWN_DATASETSconstant. - Dead
if params.month == 0branch inseco_get_monthly_report_url.
v0.2.0 — Initial PyPI Release
Fix ruff lint errors: remove unused imports, modernize type hints - Remove unused imports (csv, io, lru_cache, Optional, unittest.mock) - Replace Optional[X] with X | None (UP045) - Replace str(Enum) with StrEnum (UP042) - Remove unused variables (except as e → except Exception) - Remove unused month_names_de variable - Sort imports in test_server.py (I001) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>