v0.3.5
[0.3.5] - 2026-07-30
Fixed
-
HTTP- und SSE-Modus wiesen unter jedem echten Hostnamen mit 421 ab
(SEC-005)._run_asgi()riefstreamable_http_app()bzw.sse_app()ohne
hostauf. Unter mcp 2.x ist das kein neutraler Default: das SDK leitet daraus
seine Host-Allow-List ab und aktiviert bei loopback-artigem Wert automatisch
127.0.0.1:*. Da das Argument selbst auf127.0.0.1defaultet, traf das jeden
Start mitLOBBYWATCH_MCP_HOST=0.0.0.0. Vor der Migration auf 2.x ginghost
an denFastMCP-Konstruktor, wo dieselbe Logik den echten Bind sah und den
Schutz korrekt ausliess — die Migration verschobhostauf einen App-Kwarg und
hörte auf, ihn zu übergeben.Der Bind reist jetzt in die App, und eine echte Allow-List wird aus dem neuen
LOBBYWATCH_MCP_ALLOWED_HOSTSgebaut. Ohne diese Variable bleibt der Schutz auf
einem Nicht-Loopback-Bind bewusst aus und der Aufrufer warnt — eine geratene
Liste wäre genau der 421-Fall. Konfigurierte CORS-Origins werden mit
aufgenommen, sonst weist der Transport genau die Browser-Clients ab, die CORS
erlaubt.13 neue Tests, darunter der tragende Fall „richtiger Hostname, falscher Port"
— nur er unterscheidet eine portgenaue Allow-List von einer, die alles
durchlässt. Ein weiterer prüft, dass App und uvicorn denselben Bind sehen,
sonst schützt die Allow-List eine andere Adresse als die gebundene.
Mutationsgetestet: nimmt man denhost-Kwarg wieder weg, reproduziert der Test
das 421.Geprüft mit den wörtlichen CI-Kommandos: 55 passed / 2 deselected,
ruff check .clean,ruff format --check .(55 files already formatted). -
User-Agent no longer reports a stale version. Three numbers had drifted
apart:pyproject.tomlsaid0.3.4,__init__.__version__said0.1.0, and
config.USER_AGENTsaid0.3.1— the value Lobbywatch's server logs actually
saw. The version now comes from the installed distribution metadata
(importlib.metadata, generated frompyproject.toml) via a new
_version.py, and the User-Agent is derived from it. Guarded by
tests/test_version.py.
Added
SECURITY.md/SECURITY.de.md— security posture, Lethal Trifecta
assessment, accepted-risk decisions (SEC-014, SEC-015) and vulnerability
reporting process, aligned with the portfolio standard.CONTRIBUTING.de.md— German contributing guide, linked from the English
CONTRIBUTING.md.
Changed
- Repo docs now follow the portfolio convention of English-primary
.md
files with linked German.de.mdcounterparts:CONTRIBUTING.mdis now
English-only and links toCONTRIBUTING.de.md(previously a single combined
bilingual file). READMEs gained a Security section. LICENSEcopyright holder updated to "Hayal Oezkan".