F3 — HTTP-Bind default 0.0.0.0 ohne Auth-Sanity-Check

Datei: ~/source/mcps/mcp-replicate-hosted/src/mcp_replicate_hosted/main.py

Patch-Skizze

In run() einen Warn-Log ergaenzen wenn HOST=0.0.0.0 UND nicht in ECS (heuristik via AWS_EXECUTION_ENV-Env-Var, die AWS Fargate immer setzt).

def run() -> None:
    import os
    import uvicorn
    from starlette.middleware import Middleware
 
    s = get_settings()
    setup_audit_logging(level=s.log_level)
 
    # Bind-Sanity-Warn fuer lokales Debug — in ECS Fargate immer 0.0.0.0
    # (CF-Tunnel-Sidecar verbindet via Container-loopback, egress-only SG
    # verhindert externen Ingress). Lokal: Bind auf 0.0.0.0 ohne Override
    # ist ein Hygiene-Hinweis.
    if s.host == "0.0.0.0" and not os.environ.get("AWS_EXECUTION_ENV"):
        log.warning({
            "event": "bind_sanity_warning",
            "host": s.host,
            "port": s.port,
            "hint": (
                "Binding to 0.0.0.0 outside ECS. Fuer lokales Debug: HOST=127.0.0.1 "
                "setzen damit der Service nicht im WLAN/Tailscale sichtbar ist. "
                "ScalekitProvider blockt zwar Auth-Requests, aber Health-Endpoint "
                "(/health) ist auth-frei + dokumentiert die Service-Existenz."
            ),
        })
 
    app = build_app()
    log.info({
        "event": "server_starting",
        "host": s.host,
        "port": s.port,
        "public_base_url": str(s.public_base_url),
    })
    # ... rest unveraendert

Test

Optional. Wenn drin, dann via captured-log:

def test_bind_sanity_warn_emitted_locally(monkeypatch, caplog):
    monkeypatch.delenv("AWS_EXECUTION_ENV", raising=False)
    monkeypatch.setenv("HOST", "0.0.0.0")
    # ... import run() ohne tatsaechlichen uvicorn-Start (mock uvicorn.run)
    # ... assert "bind_sanity_warning" in caplog

Aufwand fuer Test ist hoeher als der Patch selbst — fuer F3 als reine Hygiene reicht der Code-Change, Test optional.

Aufwand

~10 Zeilen Code. <5 Min.

Side-Effects

Keine. In Production (Fargate) ist AWS_EXECUTION_ENV immer gesetzt → keine Warn-Spam in CloudWatch.