Skip to content

Serve MCP 2026-07-28 stateless requests through the transparent proxy #5831

Description

@jhrozek

Part of #5755. Design: RFC THV-0081; arch doc §Changes → "Transparent proxy" (branch stateless-transport-proxies-design, PR #5808).

Serve Modern (2026-07-28) stateless requests through the transparent (HTTP→HTTP) proxy.

Changes

  • Wire ClassifyRevision (store the resulting Revision in session metadata so RoundTrip reads one field).
  • Gate the initialize-triggered machinery on Legacy — session guard, pod-pinning, init-body storage, re-init replay, and backend-SID rewrite — so a Modern request collapses to a plain reverse proxy (Go's http.Transport correlates responses natively; no shared pipe).
  • Modern health readiness: the internal monitor must not use the ping-based StatelessMCPPinger (ping is removed in 2026-07-28 and a Modern-only backend rejects it) — gate off server/discover / first successful backend contact, and never default the gate ready.
  • Make the GET/DELETE gate revision-aware so it does not 405 a Legacy client's SSE stream on a dual-era endpoint (reconcile with the existing --stateless flag).

Dependencies

Depends on #5755 foundation issue (the deepened classifier).

Verification

  • Modern request to a multi-replica backend routes without pod-pinning and does not re-initialize on a backend 404.
  • A Modern request carrying a foreign session header is not rewritten onto a pinned backend.
  • Pinger-vs-Modern-backend test (the removed-ping case).
  • Legacy sticky behavior unchanged; the internal monitor does not self-terminate on a cold-starting Modern backend.

May split gating and health into separate PRs.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions