Vi bruker informasjonskapsler til autentisering og — med ditt samtykke — til analyse. Les mer.

Hopp til innhold
KETL Data
DataApperMCPPriserLogg inn
HjemMCPStreamable HTTP

Migrer fra SSE til Streamable HTTP

MCP-spesifikasjonen forlot SSE-transporten i 2025-03-26-revisjonen på grunn av dårlig proxy-kompatibilitet, manglende resumable streams og skaleringsproblemer. ketl data følger det samme — Streamable HTTP er primær-transport, SSE-endepunktet stenges 30. november 2026.

SSE-endepunktet (https://data.ketl.no/mcp/sse) er deprecated

Alle responses har Deprecation: true og Sunset-header. Etter sunset-dato returneres 410 Gone.

Hvorfor Streamable HTTP?

SSE-problemer

• Enveis stream — klient sender via separat POST

• Timeouts i corporate proxies og load balancers

• Ikke resumable — avbrutt forbindelse krever restart

• Vanskelig å skalere bak cloudfronts og CDN-er

• Stateless-problemer med sesjonsmanagement

Streamable HTTP-fordeler

• Toveis over samme HTTPS-path (POST init, GET upgrade)

• Proxy- og WAF-vennlig (standard HTTP-semantikk)

• Resumable via Mcp-Session-Id + Last-Event-ID

• Skalerer horisontalt uten sticky sessions

• Batching av flere JSON-RPC-kall i én forbindelse

Klient-matrise

KlientMin. versjonAnbefalt transportMerknad
Claude Desktop0.12.0streamable-httpBruk 'transport': 'streamable-http' i mcpServers-config. Eldre versjoner faller tilbake til SSE.
Cursor0.44.0streamable-http—
Cline3.10.0streamable-http—
Windsurf1.9.0streamable-http—
MCP Inspector0.11.0streamable-httpBrukes for e2e-validering i CI.
Egen klient / SDK—streamable-httpBruk @modelcontextprotocol/sdk >= 1.0 som implementerer Streamable HTTP og håndterer resumable streams automatisk.

6-stegs migrasjonsguide

  1. 1
    Oppgrader MCP-klienten
    Sjekk at klienten din støtter Streamable HTTP. Se tabellen for minimumsversjoner. Eldre klienter må oppgraderes før migrasjonen.
  2. 2
    Bytt endepunkt-URL
    Endre `/mcp/sse` til `/mcp` i konfigurasjonen. Ikke legg til `/events` eller `/stream` — Streamable HTTP håndterer POST + GET over samme path.
    - "url": "https://data.ketl.no/mcp/sse"
    + "url": "https://data.ketl.no/mcp"
  3. 3
    Sett transport eksplisitt
    Noen klienter autodeteksjonerer, men sett `"transport": "streamable-http"` (eller `"type": "streamable-http"`) for å unngå fallback til SSE.
    "ketl": {
      "url": "https://data.ketl.no/mcp",
      "transport": "streamable-http",
      "headers": { "Authorization": "Bearer <token>" }
    }
  4. 4
    Valider med MCP Inspector
    Kjør `npx @modelcontextprotocol/inspector` lokalt og sjekk at alle verktøy listes, at `initialize` returnerer uten feil, og at en prøve-`tools/call` fungerer.
    npx @modelcontextprotocol/inspector \
      --transport streamable-http \
      --url https://data.ketl.no/mcp \
      --header "Authorization: Bearer $KETL_API_KEY"
  5. 5
    Overvåk Deprecation-header
    SSE-endepunktet sender `Deprecation: true` og `Sunset: Sun, 30 Nov 2026 22:59:59 GMT`. Sett opp monitoring i klienten slik at du fanger det opp hvis noe fortsatt bruker det gamle endepunktet.
  6. 6
    Verifiser resumable streams
    Nye Streamable HTTP gjenopptar avbrutte tilkoblinger ved hjelp av Mcp-Session-Id + Last-Event-ID. Test at langvarige `tools/call` overlever nettverksglitch uten å starte på nytt.

Deprecation-headers på SSE-endepunktet

Hver response fra https://data.ketl.no/mcp/sse sender følgende headers mens endepunktet fortsatt er aktivt:

Deprecation: true
Sunset: Mon, 30 Nov 2026 22:59:59 GMT
Link: <https://data.ketl.no/mcp>; rel="successor-version"
X-Ketl-Mcp-Transport: sse (deprecated)

Sett opp monitoring i klienten for Deprecation: true slik at du fanger det opp hvis noe fortsatt bruker det gamle endepunktet.

Nytt endepunkt
Bruk dette i stedet for /mcp/sse.
https://data.ketl.no/mcp

Feilsøking

403 Forbidden etter transport-bytte

Årsak: Bearer-token-et har scope som kun dekker SSE-endepunktet, eller token-et ble utstedt før Streamable HTTP ble aktivert.

Løsning: Roter API-nøkkelen via /dashboard/utvikler — nye nøkler får begge transport-scopes som default.

Proxy/load balancer dropper langlevende forbindelser

Streamable HTTP er proxy-vennligere enn SSE, men corporate proxies kan fortsatt cap-pe forbindelser etter ~60s idle. Sett TCP keep-alive eller kort polling-intervall i klienten.

KETL respekterer Mcp-Session-Id+ Last-Event-ID for resumable streams — drop og ny GET henter fra siste ID.

Timeout på langkjørende tools/call

KETL Cloud Functions har 540s timeout per request. For verktøy som tar lengre tid, bryt opp i batch-kall eller abonner på resumable stream.

Klient-bibliotek bør sette egen timeout høyere enn vanlig HTTP-default (30s) ved langkjørende verktøy.

Klienten støtter ikke Streamable HTTP

Oppgrader til siste versjon (se klient-matrisen over). Hvis klienten ikke har Streamable HTTP-støtte enda:

  • Bruk SSE-endepunktet midlertidig — frist er 23:59:59 norsk tid (CET) 30. november 2026 (22:59:59 UTC).
  • Wrap KETL via @modelcontextprotocol/sdk som proxy lokalt — SDK-en kan eksponere både transporter samtidig.
Etter sunset-dato: 410 Gone

Fra 23:59:59 norsk tid (CET) 30. november 2026 (22:59:59 UTC) returnerer https://data.ketl.no/mcp/sse 410 Gone permanent. Klienter skal:

  • Logge feilen og varsle bruker
  • Følge Link: rel="successor-version" til https://data.ketl.no/mcp
  • Ikke retry mot samme path — det vil aldri returnere data igjen

Verifiser resumable streams

For å bekrefte at klienten håndterer Mcp-Session-Id + Last-Event-ID korrekt:

  1. Start et langkjørende tools/call (f.eks. Brreg-batch over 1 000+ orgnr).
  2. Etter 5–10s, simulér nettverksglitch ved å:
    sudo iptables -A OUTPUT -d data.ketl.no -j DROP i 3 sekunder, så slett regelen.
  3. Klienten skal sende ny GET med samme Mcp-Session-Id og Last-Event-ID som siste mottatte event.
  4. Verifiser at streamen fortsetter fra hvor den slapp (ikke start fra null) ved å sjekke at total event-id-sekvensen er sammenhengende.

Forventet timeout-terskel: KETL holder sesjonen åpen i 5 minutter etter siste aktivitet før Mcp-Session-Id utløper. Etter det må klienten initialisere ny sesjon.

SDK-versjon og changelog

Streamable HTTP ble lagt til i @modelcontextprotocol/sdk v1.0.0 (mars 2025) og er stabilt fra v1.2.0. Bruk siste stabile versjon for resumable-stream-støtte og bedre feilhåndtering.

npm: @modelcontextprotocol/sdkGitHub: SDK releases

Kilder

  • MCP Specification 2025-03-26 (modelcontextprotocol.io)
  • Why MCP deprecated SSE (fka.dev)
  • SSE vs Streamable HTTP (Bright Data)

Sunset-frist (kanonisk): 23:59:59 norsk tid (CET) 30. november 2026 (22:59:59 UTC).
Maskinlesbar (ISO 8601, norsk tid): 2026-11-30T23:59:59+01:00
Maskinlesbar (UTC / HTTP Sunset-header): 2026-11-30T22:59:59Z (RFC 7231 krever GMT i HTTP Date-headers — derfor 22:59:59 GMT, ikke 23:59:59).

KETL Data

Nordisk åpen-data- og compliance-infrastruktur. Kilde, regel og konfidens på hvert svar.

Produktlenker

  • Data
  • Apper
  • MCP
  • Priser
  • Ordliste
  • Hva er nytt
  • Kontakt
  • Sitemap

Juridiske lenker

  • AI-transparens
  • Personvern
  • Kredittopplysning
  • Vilkår
  • SLA
  • Cookies
  • Sikkerhet

© 2026 ketl data

build e132518d