MCP 2026-07-28: Was die zustandslose Spezifikation für bestehende MCP-Server bedeutet
Die MCP-Spezifikation 2026-07-28 streicht Handshake und Session-ID. Server müssen server/discover anbieten. Sampling, Roots und HTTP+SSE sind deprecated. Was das für lokale Server, Remote-Server und n8n heißt.
Steckbrief
- Mit der Spezifikation 2026-07-28 entfallen der `initialize`-Handshake und der Header `Mcp-Session-Id`. Jede Anfrage trägt Protokollversion und Client-Capabilities selbst in `_meta`.
- Server müssen `server/discover` anbieten und in jedem Result `resultType` liefern. Bei Streamable HTTP prüfen sie die Header `Mcp-Method` und `Mcp-Name` gegen den Body.
- Rückfragen vom Server (Sampling, Elicitation, Roots) laufen künftig als Multi Round-Trip Requests: Der Server antwortet mit `input_required`, der Client wiederholt die Anfrage mit `inputResponses`.
- Roots, Sampling, Logging, HTTP+SSE und Dynamic Client Registration sind deprecated. Für die meisten Funktionen gilt mindestens ein Jahr Übergang, für HTTP+SSE eine eigene Sonderfrist.
- Eine Aussage von n8n zur Unterstützung von 2026-07-28 gab es bis Version 2.44 (13.10.2026) nicht. Die n8n-Doku verlangt weiterhin ein eigenes Webhook-Replica für `/mcp*`.
- Release
- MCP-Spezifikation 2026-07-28, erschienen am 28.07.2026
- Kernänderung
- Kein Handshake, keine `Mcp-Session-Id` (SEP-2575, SEP-2567)
- Neue Server-Pflichten
- `server/discover`, `resultType`, Prüfung der Header `Mcp-Method`/`Mcp-Name` (SEP-2243), `ttlMs`/`cacheScope` (SEP-2549)
- Deprecated
- Roots, Sampling, Logging (SEP-2577), HTTP+SSE (seit 2025-03-26, per SEP-2596 neu eingestuft), Dynamic Client Registration (PR #2858)
- Übergangsfrist
- mindestens 12 Monate ab Release 28.07.2026 laut Feature-Lifecycle-Policy (Ausnahme HTTP+SSE: laut Registry drei Monate nach Final-Status von SEP-2596)
- SDKs
- TypeScript, Python, Go, C# unterstützen 2026-07-28 laut offiziellem Blog ab dem Tag des Releases
- Praxistest
- Python SDK mcp 2.3.0, lokal am 21.10.2026: alte und neue Clients parallel, Header-Prüfung mit Fehlercode -32020
- Stand
- 21.10.2026
Am 28. Juli 2026 ist die MCP-Spezifikation 2026-07-28 erschienen. Laut dem offiziellen Release-Blog wird das Model Context Protocol damit „from a bidirectional stateful protocol into a request/response stateless protocol“ umgebaut. Das klingt nach einem Thema für Protokoll-Entwickler. Für jeden, der einen MCP-Server betreibt, ist es aber eine konkrete Aufgabe: Der Handshake fällt weg, die Session-ID fällt weg, und Server müssen eine neue Methode anbieten.
Was MCP ist und wie es in Agentensysteme passt, erkläre ich hier nicht, dafür gibt es die Glossareinträge zu MCP und KI-Agent. Ich beantworte drei Fragen. Was ändert sich technisch? Muss ein bestehender Server migriert werden? Und was weiß man heute über n8n, das selbst als MCP-Server arbeiten kann? Wo eine Aussage nur meine Einschätzung oder nicht erprobt ist, steht das dabei.
Mich betrifft die Revision an zwei Stellen. Ich betreibe eine selbst gehostete MCP-Plattform in Python, die über Streamable HTTP mit OAuth hinter Caddy und Cloudflare läuft. Und eine Wissensbasis stellt ihre Suche über den MCP Server Trigger von n8n als lesendes Werkzeug bereit. Beim ersten System entscheidet mein eigener Code, beim zweiten n8n. Für diesen Beitrag wurde die neue Version außerdem an einem minimalen Testserver mit dem aktuellen Python SDK durchgespielt. Die Ergebnisse stehen weiter unten.
Was ändert sich mit MCP 2026-07-28 auf einen Blick?
Mit der Spezifikation 2026-07-28 wird MCP zustandslos: Handshake und Mcp-Session-Id entfallen, jeder Server muss server/discover und resultType liefern, Rückfragen laufen als Multi Round-Trip Requests, und Roots, Sampling, Logging, HTTP+SSE sowie Dynamic Client Registration sind deprecated. Fünf Änderungen betreffen bestehende Server direkt. So fassen es der Release-Blog vom 28.07.2026 und der offizielle Changelog zusammen. Stand dieses Beitrags ist der 21.10.2026.
- Kein Handshake, keine Session.
initialize,notifications/initializedund der HeaderMcp-Session-Identfallen (SEP-2575, SEP-2567). - Neue Pflichten für Server. Jeder Server muss
server/discoverimplementieren. Jedes Result trägt das PflichtfeldresultType. - Rückfragen ohne eigene Server-Anfragen. Multi Round-Trip Requests ersetzen die Anfragen, die bisher der Server an den Client schickte: Sampling, Elicitation und Roots (SEP-2322).
- Neue Header und Cache-Felder. POST-Anfragen über Streamable HTTP tragen
Mcp-Methodund, je nach Methode,Mcp-Name(SEP-2243). Listen-Antworten undresources/readbrauchenttlMsundcacheScope(SEP-2549). - Deprecations mit Frist. Roots, Sampling, Logging, der HTTP+SSE-Transport und Dynamic Client Registration sind deprecated. Die neue Feature-Lifecycle-Policy sieht in der Regel mindestens zwölf Monate Übergang vor, für HTTP+SSE gilt eine Sonderfrist.
Was bedeutet „zustandslos“ bei MCP konkret?
Ein MCP-Server muss sich zwischen zwei Anfragen nichts mehr über den Client merken. Laut Changelog entfallen dafür der Handshake aus initialize und notifications/initialized (SEP-2575) sowie der Header Mcp-Session-Id (SEP-2567). Stattdessen trägt jede Anfrage Protokollversion und Client-Capabilities selbst im Feld _meta (Schlüssel io.modelcontextprotocol/protocolVersion und io.modelcontextprotocol/clientCapabilities). Zustandslos ist dabei das Protokoll, nicht zwingend die Anwendung: Braucht ein Server Zustand über mehrere Aufrufe hinweg, soll er laut Changelog eigene Handles ausgeben, die der Client als normale Tool-Argumente zurückschickt.
Bisher war die Reihenfolge fest: erst der Handshake, dann die eigentlichen Anfragen. Bei Streamable HTTP hielt die Session-ID diese Anfragen zusammen. Wer serverseitig etwas an die Sitzung gehängt hat, etwa die beim Start gemeldeten Fähigkeiten des Clients, verliert diesen Anker. Nach der neuen Spezifikation steht alles Nötige in der einzelnen Anfrage.
Mit 2026-07-28 entfällt außerdem die Wiederaufnahme abgebrochener SSE-Streams über Last-Event-ID. Bricht eine Verbindung ab, geht die laufende Anfrage verloren, und der Client muss sie als neue Anfrage mit neuer Request-ID stellen (Changelog). Wer lange laufende Werkzeuge anbietet, sollte deshalb prüfen, ob eine wiederholte Anfrage Schaden anrichten kann. Ein Werkzeug, das eine E-Mail verschickt, sollte sie beim zweiten Aufruf nicht noch einmal senden.
Meine Einschätzung, nicht gemessen: Für Remote-Server liegt der größte Gewinn im Betrieb. Ohne Session-ID muss ein Load Balancer eine Anfrage nicht mehr an die Instanz binden, die die Sitzung kennt. Das hilft aber nur, wenn der Server nicht selbst Zustand hält, zum Beispiel einen Cache pro Nutzer im Arbeitsspeicher.
Bei der Prüfung hilft eine Unterscheidung: Zustand im Agenten ist nicht dasselbe wie Zustand im MCP-Server. Mein Sprachagent Hermes hält Gesprächskontext und ein Langzeitgedächtnis, aber im Agenten selbst. Die Werkzeuge erreicht er als Client über MCP. Von der Spezifikation betroffen ist nur, was ein MCP-Server pro Session speichert.
Was kommt mit MCP 2026-07-28 neu dazu?
Die Revision bringt vier neue Pflichten und einen neuen Ablauf für Rückfragen.
server/discover als Pflichtmethode
Laut Changelog muss jeder Server server/discover implementieren, die Spezifikation schreibt dafür „MUST“. Im Testlauf weiter unten (Python SDK 2.3.0) enthielt die Antwort resultType, supportedVersions, ttlMs, cacheScope und capabilities. Die vollständige Struktur steht in der Spezifikation. Wer sein SDK aktualisiert, sollte prüfen, ob das SDK die Methode automatisch bereitstellt oder ob sie im eigenen Code fehlt.
resultType in jedem Ergebnis
Alle Results tragen das Pflichtfeld resultType. Es hat einen von zwei Werten: complete für ein fertiges Ergebnis oder input_required, wenn der Server noch etwas vom Client braucht. Ein Server, der Ergebnisse ohne dieses Feld liefert, entspricht der Version 2026-07-28 nicht.
Multi Round-Trip Requests statt Anfragen vom Server
Bisher konnte ein Server mitten in einem Werkzeugaufruf selbst Anfragen an den Client schicken: sampling/createMessage, elicitation/create oder roots/list. Das setzte eine offene, zweiseitige Verbindung voraus. Mit den Multi Round-Trip Requests (SEP-2322) dreht sich das um. Der Server antwortet mit resultType: "input_required". Der Client wiederholt die ursprüngliche Anfrage und liefert die fehlenden Angaben in inputResponses mit.
Das betrifft vor allem Rückfragen an den Nutzer. Wer vor einer Aktion eine Bestätigung über Elicitation einholt, also einen Human in the Loop eingebaut hat, muss diesen Ablauf umbauen. Die Rückfrage ist dann keine eigene Server-Anfrage mehr, sondern Teil der Antwort.
Nicht betroffen sind Freigaben, die ganz außerhalb von MCP laufen, etwa als Nachricht im Team-Chat oder über einen eigenen Freigabeschritt mit Passkey, der vor der eigentlichen Aktion liegt.
Neue Header bei Streamable HTTP: Mcp-Method und Mcp-Name
POST-Anfragen über Streamable HTTP tragen den Header Mcp-Method und, je nach Methode, Mcp-Name (SEP-2243). Mcp-Method spiegelt die Methode und gilt für alle Anfragen. Mcp-Name spiegelt den Werkzeug-, Prompt- oder Ressourcennamen und ist bei tools/call, resources/read und prompts/get vorgeschrieben. Den Zweck nennt die Spezifikation selbst: Load Balancer, Gateways und Monitoring sollen Anfragen routen und prüfen können, ohne den JSON-Body zu parsen. Senden muss die Header der Client. Der Server muss prüfen, ob sie zum Body passen, und lehnt Abweichungen mit 400 Bad Request ab.
Cachebare Listen und feste Reihenfolge
Listen-Antworten (tools/list, prompts/list, resources/list, resources/templates/list) und resources/read brauchen jetzt die Felder ttlMs und cacheScope (SEP-2549). ttlMs sagt in Millisekunden, wie lange ein Client die Antwort als frisch betrachten darf. cacheScope ("public" oder "private") legt fest, ob auch geteilte Zwischenstationen sie cachen dürfen. Außerdem sollen Tools in deterministischer Reihenfolge kommen. Laut Changelog hilft das Prompt-Caches. Wechselt die Reihenfolge der Werkzeuge bei jeder Anfrage, ändert sich auch der Prompt, der ans Modell geht.
Was läuft aus, und wie lange funktioniert es noch?
Fünf Funktionen sind deprecated, dazu kommen zwei Werte des Sampling-Felds includeContext. Laut Release-Blog funktionieren Roots, Sampling und Logging aber noch „for at least twelve months“. Die neue Feature-Lifecycle-Policy legt für jede Deprecation ein Fenster von mindestens zwölf Monaten fest, gezählt ab dem Release der Revision, die die Funktion als deprecated markiert (Changelog, Feature-Lifecycle-Policy). Konkret heißt das laut Deprecated-Registry: Roots, Sampling und Logging dürfen frühestens in einer Revision entfallen, die am oder nach dem 28.07.2027 erscheint. Für den HTTP+SSE-Transport gilt laut Deprecated-Registry eine Ausnahme, weil er schon seit Version 2025-03-26 deprecated ist. Niemand muss also sofort umbauen.
| Funktion | Status in 2026-07-28 | Ersatz laut Spezifikation | Beleg |
|---|---|---|---|
| Roots | deprecated | Verzeichnisse oder Dateien über Tool-Parameter, Ressourcen-URIs oder Server-Konfiguration übergeben | SEP-2577 |
| Sampling | deprecated | Direkte Anbindung an die API des LLM-Anbieters | SEP-2577 |
| Logging | deprecated, logging/setLevel bereits entfernt |
stderr bei stdio, OpenTelemetry für Observability |
SEP-2577 |
| HTTP+SSE-Transport | seit Version 2025-03-26 deprecated, per SEP-2596 neu eingestuft | Streamable HTTP | SEP-2596 |
| Dynamic Client Registration (DCR) | deprecated | Client ID Metadata Documents (CIMD) | PR #2858 |
includeContext: "thisServer" / "allServers" |
deprecated | Feld weglassen oder "none" |
SEP-2596 |
Elicitation steht nicht auf der Liste, läuft aber ebenfalls über den neuen Ablauf mit input_required. Wer Elicitation nutzt, muss also umbauen, auch wenn die Funktion selbst bleibt. Solange Roots und Sampling nicht entfernt sind, laufen auch ihre Anfragen über Multi Round-Trip Requests.
Was ändert sich bei der Authentifizierung?
Zwei Punkte betreffen OAuth. Erstens ist Dynamic Client Registration zugunsten von Client ID Metadata Documents (CIMD) deprecated. DCR bleibt für Autorisierungsserver ohne CIMD-Unterstützung vorerst verfügbar. Zweitens sollen Autorisierungsserver den iss-Parameter nach RFC 9207 in ihre Antworten aufnehmen, und Clients müssen einen vorhandenen iss prüfen (SEP-2468). Die zweite Änderung trifft vor allem Client-Entwickler. Wer einen Remote-Server mit eigenem Autorisierungsserver betreibt, sollte prüfen, ob dieser CIMD unterstützt und iss mitsendet. Wie Berechtigungsgrenzen und OAuth 2.1 grundsätzlich zusammenspielen, beschreibt der Abschnitt zur Authentifizierung am MCP-Server.
Muss mein MCP-Server migriert werden?
Ja, wenn er die Version 2026-07-28 sprechen soll. Laut Changelog muss dann jeder Server server/discover und resultType umsetzen und darf sich nicht mehr auf Handshake oder Session-ID verlassen. Wie viel darüber hinaus zu tun ist, hängt vom Transport ab und davon, welche Funktionen der Server nutzt.
| Merkmal des Servers | Was 2026-07-28 ändert | Was zu prüfen ist |
|---|---|---|
| Jeder Server (stdio oder HTTP) | Kein Handshake, server/discover Pflicht, resultType Pflicht |
Hängt Logik an initialize? Liefert das SDK server/discover mit? |
| Remote über Streamable HTTP | Mcp-Session-Id entfällt, Mcp-Method/Mcp-Name Pflicht, kein Resume über Last-Event-ID, GET-Endpoint entfällt (ersetzt durch subscriptions/listen) |
Gibt es Zustand pro Session? Leitet der Reverse Proxy die neuen Header durch? Sind Werkzeuge bei Wiederholung harmlos? |
| Remote über altes HTTP+SSE | Transport deprecated (SEP-2596) | Umstieg auf Streamable HTTP einplanen |
| Nutzt Sampling, Elicitation oder Roots | Ersetzt durch Multi Round-Trip Requests (SEP-2322), Sampling und Roots deprecated | Ablauf auf input_required und inputResponses umbauen |
| Liefert Listen, z. B. Tools | ttlMs und cacheScope Pflicht (SEP-2549), feste Reihenfolge empfohlen |
Cache-Dauer festlegen, Sortierung stabil halten |
| OAuth mit Dynamic Client Registration | DCR deprecated, CIMD als Ersatz | Unterstützt der Autorisierungsserver CIMD? |
Für lokale Server über stdio fällt die Prüfung kürzer aus. Die Header-Regeln beziehen sich laut Changelog auf POST-Anfragen über Streamable HTTP. Handshake, server/discover und resultType betreffen aber auch lokale Server. Ein Beispiel für solche lokalen Server sind die Reverse-Engineering-Werkzeuge aus dem Beitrag Reverse Engineering mit Claude.
Für meine eigenen Systeme sieht die Einordnung so aus (Stand: Fallstudien auf dieser Website):
| System | Transport, Auth | Einordnung |
|---|---|---|
| MCP-Plattform | Python, Streamable HTTP, OAuth, hinter Caddy und Cloudflare | Muss migriert werden, wenn sie 2026-07-28 sprechen soll. Zu prüfen: Zustand pro Session, Weitergabe der neuen Header durch Caddy und Cloudflare, Dynamic Client Registration |
| Wissensbasis | n8n MCP Server Trigger, ein lesendes Werkzeug | Hängt an n8n. Selbst umbauen lässt sich hier nichts, nur prüfen, was n8n spricht |
| Hermes | Agent als MCP-Client | Als Client betroffen, sobald die angebundenen Server umstellen |
Ältere Clients müssen nicht abgehängt werden. Laut Spezifikation (Versioning) darf ein Server Clients mit Handshake und Clients mit Version 2026-07-28 parallel bedienen. Der Testlauf unten bestätigt das für das Python SDK.
Wie weit sind die offiziellen SDKs?
Laut Release-Blog unterstützen die Tier-1-SDKs für TypeScript, Python, Go und C# die Version 2026-07-28 ab dem Tag des Releases. Für C# und Python liegen konkrete Release-Hinweise vor. Bei beiden ändert sich das Verhalten so, dass bestehender Code ohne Anpassung brechen kann.
C#: zustandslos als Standard
Das offizielle C# SDK v2.0 erschien am 28.07.2026. Laut Microsoft .NET Blog steht HttpServerTransportOptions.Stateless dort standardmäßig auf true. Im zustandslosen Modus werfen ElicitAsync, SampleAsync und RequestRootsAsync eine Ausnahme. Ein Server, der eine dieser Methoden aufruft und nach dem Update die Standardeinstellung übernimmt, bricht also an genau dieser Stelle.
Python: neuer Klassenname, 2.x ist Standard
Mit dem Python SDK v2.0 heißt FastMCP jetzt MCPServer. Die Umbenennung kam mit der Beta v2.0.0b1 vom 30.06.2026 (Release-Hinweis). Seit der stabilen Version v2.0.0 vom 28.07.2026 installiert pip install mcp laut Release-Hinweis 2.x, auch in Pipelines ohne Versionsgrenze. Wer noch bei 1.x bleiben will, muss die Version begrenzen.
TypeScript und Go
Das Go SDK unterstützt 2026-07-28 ab Version v1.7.0 vom 28.07.2026 (Releases). Beim TypeScript SDK ließ sich die erste Version mit Unterstützung nicht eindeutig belegen. Aktuell war am 21.10.2026 die Version 2.3.1 vom 05.10.2026 (Releases).
Ein Unterschied zwischen den SDKs wird beim Update leicht übersehen: Im C# SDK ist der zustandslose Modus Standard. Im Python SDK 2.3.0 steht stateless_http dagegen standardmäßig auf False. Was das praktisch bedeutet, zeigt der Testlauf.
In welcher Reihenfolge lässt sich ein MCP-Server migrieren?
Die folgende Reihenfolge leite ich aus dem Changelog ab. Erprobt ist sie nicht.
- Bestandsaufnahme. Transport und genutzte Funktionen anhand der Tabelle oben erfassen.
- SDK-Version pinnen. Den Release-Hinweis des SDK lesen, besonders bei Betas.
- Zustand entfernen. Alles lösen, was am Handshake oder an der Session-ID hängt.
- Rückfragen umbauen. Sampling, Elicitation und Roots auf
input_requiredundinputResponsesumstellen. - Pflichtfelder prüfen.
server/discover,resultType,ttlMsundcacheScopein echten Antworten kontrollieren, nicht nur im Code. - Gegen einen echten Client testen, der 2026-07-28 spricht.
Testlauf: Wie verhält sich ein MCP-Server mit Version 2026-07-28 in der Praxis?
Eine Migration meiner Produktivsysteme beschreibe ich hier nicht. Stattdessen zeigt ein Testlauf mit einem minimalen Server, was ein Client mit Version 2026-07-28 tatsächlich sendet und zurückbekommt. Getestet wurde am 21.10.2026 lokal mit dem Python SDK mcp 2.3.0 und einem einzigen Werkzeug, per curl über Streamable HTTP.
Kurzergebnis: Ein Server mit dem Python SDK 2.3.0 lehnt Anfragen ohne io.modelcontextprotocol/clientCapabilities in _meta mit 400 ab, prüft die Header Mcp-Method und Mcp-Name gegen den Body (Fehlercode -32020) und beantwortet zugleich einen klassischen initialize mit 2025-11-25. Alte und neue Clients laufen also parallel.
Die Discovery-Anfrage kommt ohne Handshake aus. Version und Client-Fähigkeiten stehen in _meta, die Methode zusätzlich im Header:
curl -s http://127.0.0.1:8765/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: server/discover" \
-d '{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{"_meta":{
"io.modelcontextprotocol/protocolVersion":"2026-07-28",
"io.modelcontextprotocol/clientCapabilities":{}}}}'
Die Antwort (gekürzt) enthält die neuen Pflichtfelder:
{"result":{"resultType":"complete","supportedVersions":["2026-07-28"],
"ttlMs":0,"cacheScope":"private",
"capabilities":{"tools":{"listChanged":true}}}}
Fünf Beobachtungen aus dem Testlauf:
- Beide Schlüssel in
_metasind Pflicht. Mit nur der Protokollversion antwortete der Server mit400und dem Hinweis, dassio.modelcontextprotocol/clientCapabilitiesfehlt. - Die Header werden geprüft. Ein
tools/callmit falschemMcp-Nameoder ganz ohneMcp-Methodlehnte der Server mit400und Fehlercode-32020ab. Wer einen Reverse Proxy oder ein Gateway vor dem Server hat, sollte prüfen, dass beide Header durchkommen. - Alt und neu laufen parallel. Derselbe Server beantwortete einen klassischen
initializemit2025-11-25. Ein Update auf das neue SDK schließt ältere Clients also nicht automatisch aus. stateless_httpbetrifft nur alte Clients. Im Standardmodus des Python SDK bekam der alte Handshake weiterhin einemcp-session-id. Anfragen im Format 2026-07-28 liefen in beiden Modi ohne Session.- Der GET-Endpoint antwortet noch. Ein
GET /mcpöffnete im SDK weiterhin einen Stream, obwohl die Spezifikation ihn durchsubscriptions/listenersetzt. Vermutlich dient das älteren Clients, belegt ist es nicht.
Das ist ein Labortest, kein Produktivbetrieb. Er zeigt das Verhalten eines SDK, nicht das jedes Clients.
Was heißt MCP 2026-07-28 für n8n?
Eine Aussage von n8n zur Unterstützung von 2026-07-28 gibt es in der n8n-Doku und den Release Notes bis Version 2.44 vom 13.10.2026 nicht, der neuesten am 21.10.2026 gelisteten Version. Die Doku des MCP Server Triggers nennt weiterhin SSE und Streamable HTTP als Transporte. Für den Betrieb mit mehreren Replicas gilt unverändert eine Vorgabe, die auf Sitzungen beruht.
Die Doku verlangt, dass bei mehreren Webhook-Replicas alle Anfragen an /mcp* an ein einzelnes, eigenes Replica gehen. Sonst, so die Doku, „your SSE and streamable HTTP connections will frequently break or fail to reliably deliver events“. Laut Release Notes erhielt der MCP Server Trigger mit n8n 2.36 vom 18.08.2026 ein Feld „Instructions“. Dessen Text sendet n8n „as part of the initialize response“. Drei Wochen nach dem Release der neuen Spezifikation nutzte n8n den Handshake also noch.
Meine Einschätzung: Die Replica-Vorgabe ist genau die Art Session-Bindung, die eine zustandslose Spezifikation unnötig machen soll. Ob und wann n8n den Trigger umstellt, lässt sich daraus nicht ableiten. Wie man n8n als MCP-Server einrichtet und hinter einem Reverse Proxy betreibt, steht im eigenen Beitrag. Grundlagen zu n8n gibt es im Glossar.
Ob eine eigene n8n-Instanz die neue Version schon spricht, lässt sich ohne Umbau prüfen. Laut Spezifikation dient server/discover genau dafür als Kompatibilitätsprobe. Die Anfrage aus dem Testlauf oben geht an die Produktions-URL des MCP Server Triggers, bei aktivierter Authentifizierung mit dem passenden Header. Liefert der Trigger ein Result mit supportedVersions, spricht er 2026-07-28. Kommt ein Fehler, arbeitet er noch mit dem Handshake, und Clients verbinden sich über den alten Weg.
Wie geht es nach 2026-07-28 weiter?
Am 22.08.2026 hat das MCP-Projekt eine neue Roadmap mit fünf Prioritäten veröffentlicht. Termine für den nächsten Release nennt sie nicht. Für Server-Betreiber sind zwei Punkte besonders interessant: ein HTTP-nativer Transport, der auch lokale Server abdeckt, und Agentenidentität.
Die fünf Prioritäten:
- Agentic Messaging, also serverseitige Events (Webhooks und Channels) und die Weiterentwicklung der Tasks-Erweiterung
- HTTP-nativer Transport, vereinheitlicht und gehärtet, auch für lokale Server (laut Roadmap „Streamable HTTP over stdio“)
- Agentenidentität, laut Roadmap „built on existing standards rather than pasted API keys and long-lived tokens“. Genannt werden DPoP (RFC 9449) und Workload Identity Federation
- Verbesserte Primitive, unter anderem einheitliche Tool-Ergebnisse und Progressive Discovery für große Tool-Kataloge
- Developer Experience der SDKs
Kommt ein gemeinsamer HTTP-Transport für lokal und remote, könnte der Unterschied zwischen stdio- und Remote-Servern aus der Tabelle oben kleiner werden. Das ist Spekulation, solange es keine Spezifikation dazu gibt. Für die Migration heute spielt die Roadmap keine Rolle. Sie zeigt aber, dass die Zustandslosigkeit ein erster Schritt ist.
Wo hilft die zustandslose Spezifikation im Betrieb wirklich?
Am meisten bringt die neue Version dort, wo heute Sitzungen den Betrieb erschweren. Die Replica-Vorgabe von n8n ist so ein Fall. Ohne Session-ID darf jede Instanz jede Anfrage beantworten, sofern der Server selbst keinen Zustand hält. Ein Load Balancer braucht dann keine Bindung an eine Instanz.
Komplizierter wird es bei Rückfragen und Abbrüchen. Wer heute über Elicitation eine Bestätigung einholt, baut den Ablauf auf input_required um. Und weil abgebrochene Anfragen neu gestellt werden, sollten Werkzeuge mit Wirkung nach außen eine Wiederholung erkennen.
Eile ist nicht nötig. Das Zwölf-Monats-Fenster gilt (Ausnahme: HTTP+SSE), und alte Clients lassen sich parallel bedienen. Zwei Dinge würde ich trotzdem jetzt prüfen: welche Standardeinstellung das eigene SDK nach dem Update setzt, und ob Proxy und Gateway die neuen Header durchreichen.
Wer tiefer einsteigen will: Die Grundlagen stehen im Glossar unter Model Context Protocol. Wie ein MCP-Server mit begrenzten Rechten in n8n entsteht, zeigt n8n als MCP-Server. Wie Agenten über MCP mehrere Datenquellen kombinieren, beschreibt Agentic RAG mit MCP.
Häufige Fragen
Was ist neu in MCP 2026-07-28?
Die Spezifikation macht MCP zu einem zustandslosen Request/Response-Protokoll. Der Handshake über `initialize` und der Header `Mcp-Session-Id` entfallen. Server müssen `server/discover` anbieten, Results tragen ein Pflichtfeld `resultType`, und Rückfragen an den Client laufen als Multi Round-Trip Requests.
Funktioniert mein bestehender MCP-Server nach dem Update noch?
Ja, vorerst. Als deprecated markierte Funktionen wie Roots, Sampling und Logging laufen noch mindestens zwölf Monate. Um 2026-07-28 zu sprechen, braucht ein Server `server/discover` und `resultType` und darf nicht auf Handshake oder Session-ID bauen. Alte und neue Clients darf er parallel bedienen. Ein Testlauf mit dem Python SDK 2.3.0 bestätigt das.
Ist der SSE-Transport bei MCP abgeschafft?
Nein. HTTP+SSE ist seit Version 2025-03-26 deprecated und wurde mit SEP-2596 nur neu eingestuft. Laut Deprecated-Registry darf er frühestens drei Monate nach dem Final-Status von SEP-2596 entfallen, Der Release-Blog spricht dagegen von einem Übergangsjahr. Für neue Remote-Server ist Streamable HTTP der Weg.
Was ersetzt Sampling und Elicitation in MCP 2026-07-28?
Multi Round-Trip Requests (SEP-2322). Der Server antwortet mit `resultType: "input_required"`, der Client wiederholt die Anfrage mit den fehlenden Angaben in `inputResponses`. Sampling ist zusätzlich deprecated. Als Ersatz nennt die Spezifikation die direkte Anbindung an die API eines LLM-Anbieters.
Unterstützt n8n die MCP-Spezifikation 2026-07-28?
Bis Version 2.44 (13.10.2026) gibt es von n8n keine Aussage dazu. Version 2.36 sendete ein neues Feld noch „as part of the initialize response“, nutzte also den Handshake. Ob die eigene Instanz die neue Version spricht, zeigt eine einzige `server/discover`-Anfrage.
Was passiert, wenn ein Client die Header Mcp-Method oder Mcp-Name falsch sendet?
Der Server muss die Header gegen den Body prüfen und Abweichungen mit `400 Bad Request` ablehnen. Im Testlauf mit dem Python SDK 2.3.0 lehnte er einen `tools/call` mit falschem `Mcp-Name` oder ohne `Mcp-Method` mit `400` und Fehlercode `-32020` ab. Reverse Proxy und Gateway sollten beide Header durchreichen.
Quellen
- Model Context Protocol Blog: Release der Spezifikation 2026-07-28 (28.07.2026) · abgerufen 21. Oktober 2026
- Model Context Protocol: Changelog der Spezifikation 2026-07-28 · abgerufen 21. Oktober 2026
- Model Context Protocol: Deprecated Features (Registry) · abgerufen 21. Oktober 2026
- Model Context Protocol: Feature Lifecycle and Deprecation Policy · abgerufen 21. Oktober 2026
- Model Context Protocol: Streamable HTTP (2026-07-28) · abgerufen 21. Oktober 2026
- Model Context Protocol: Versioning and Compatibility (2026-07-28) · abgerufen 21. Oktober 2026
- Model Context Protocol: Multi Round-Trip Requests (2026-07-28) · abgerufen 21. Oktober 2026
- Model Context Protocol Blog: Roadmap (22.08.2026) · abgerufen 21. Oktober 2026
- Microsoft .NET Blog: Announcing v2.0 of the official MCP C# SDK (28.07.2026) · abgerufen 21. Oktober 2026
- MCP Python SDK v2.0.0b1, Release (GitHub, 30.06.2026) · abgerufen 21. Oktober 2026
- MCP Python SDK v2.0.0, Release (GitHub, 28.07.2026) · abgerufen 21. Oktober 2026
- n8n Docs: MCP Server Trigger · abgerufen 21. Oktober 2026
- n8n Docs: Release Notes · abgerufen 21. Oktober 2026
Ozan Orhan
AI Engineer · Hannover, Deutschland
Entwickelt AI-Automationen, Agenten und LLM-Anwendungen mit Schwerpunkt auf n8n, Python, MCP, RAG und APIs.
Weiterlesen
- Artikeln8n MCP Server erstellen: sicher an Claude anbinden
- ArtikelAgentic RAG MCP: Wissensarchitektur, Code Execution und Enterprise-Sicherheit
- ArtikelReverse Engineering mit Claude: Ghidra MCP, REA und wo die Grenzen liegen
- Projekt · MCP · OAuth · Docker · Human-in-the-loopMCP-Plattform, selbst gehostet
- Projekt · RAG · Vector Retrieval · MCPWissensbasis — RAG + MCP-Server