MCP (Model Context Protocol) verwendet JSON-Nachrichten, um die Kommunikation zwischen Clients und Servern abzuwickeln. Das Verständnis dieser Nachrichtentypen ist entscheidend für die Arbeit mit MCP, insbesondere beim Umgang mit verschiedenen Transportmethoden wie dem streamable HTTP-Transport.
Nachrichtenformat
Die gesamte MCP-Kommunikation erfolgt über JSON-Nachrichten. Jeder Nachrichtentyp dient einem bestimmten Zweck - sei es das Aufrufen eines Tools, das Auflisten verfügbarer Ressourcen oder das Senden von Benachrichtigungen über Systemereignisse.

Hier ist ein typisches Beispiel: Wenn Claude ein von einem MCP-Server bereitgestelltes Tool aufrufen muss, sendet der Client eine „Call Tool Request"-Nachricht. Der Server verarbeitet diese Anfrage, führt das Tool aus und antwortet mit einer „Call Tool Result"-Nachricht, die die Ausgabe enthält.

MCP-Spezifikation
Die vollständige Liste der Nachrichtentypen ist im offiziellen MCP-Spezifikations-Repository auf GitHub definiert. Diese Spezifikation ist getrennt von den verschiedenen SDK-Repositories (wie den Python- oder TypeScript-SDKs) und dient als maßgebliche Quelle dafür, wie MCP funktionieren soll.
Die Nachrichtentypen sind aus Gründen der Übersichtlichkeit in TypeScript geschrieben - nicht weil sie als TypeScript-Code ausgeführt werden, sondern weil TypeScript eine klare Möglichkeit bietet, Datenstrukturen und Typen zu beschreiben.
Nachrichtenkategorien
MCP-Nachrichten fallen in zwei Hauptkategorien:

Request-Result-Nachrichten
Diese Nachrichten treten immer paarweise auf. Du sendest eine Anfrage und erwartest, ein Ergebnis zurückzubekommen:
- Call Tool Request → Call Tool Result
- List Prompts Request → List Prompts Result
- Read Resource Request → Read Resource Result
- Initialize Request → Initialize Result
Benachrichtigungsnachrichten
Dies sind einseitige Nachrichten, die über Ereignisse informieren, aber keine Antwort erfordern:
- Progress Notification - Aktualisierungen zu lang laufenden Vorgängen
- Logging Message Notification - Systemprotokollmeldungen
- Tool List Changed Notification - Wenn sich verfügbare Tools ändern
- Resource Updated Notification - Wenn Ressourcen geändert werden
Client- vs. Server-Nachrichten
Die MCP-Spezifikation organisiert Nachrichten danach, wer sie sendet:
Client-Nachrichten umfassen Anfragen, die Clients an Server senden (wie Tool-Aufrufe), und Benachrichtigungen, die Clients senden könnten.
Server-Nachrichten umfassen Anfragen, die Server an Clients senden, und Benachrichtigungen, die Server ausstrahlen.
Warum das wichtig ist
Das Verständnis, dass Server Nachrichten an Clients senden können, ist besonders wichtig bei der Arbeit mit verschiedenen Transportmethoden. Einige Transporte, wie der streamable HTTP-Transport, haben Einschränkungen hinsichtlich der Arten von Nachrichten, die in welche Richtungen fließen können.
Die zentrale Erkenntnis ist, dass MCP als bidirektionales Protokoll konzipiert ist - sowohl Clients als auch Server können Kommunikation initiieren. Dies wird entscheidend, wenn du die richtige Transportmethode für deinen spezifischen Anwendungsfall auswählen musst.