Model Context Protocol im Zusammenspiel mit Spring Boot
August 2025
Obwohl RheinInsights ein Spezialist für eine Vielzahl von Programmiersprachen und Software-Frameworks ist, mussten wir uns für ein Framework für die RheinInsights Retrieval Suite entscheiden und diese basiert auf Java. Die Retrieval Suite bietet Enterprise-Search-Konnektoren für eine vielzahl führender Suchmaschinen, inklusive Security Trimming.
Seit Ende 2024 gibt es zudem das Model Context Protocol (MCP) und seine Spezifikation. Hierbei ist MCP ein Kommunikationsprotokoll zwischen KI-Agenten. Das bedeutet, dass Agenten dieses Protokoll nutzen, um mit Hilfe anderer Software (sogenannte MCP Server) Aktionen auszuführen oder präzise Antworten zu erhalten. Gerade bei der Antwortgenerierung wird Unternehmenswissen höchst relevant und daher unterstützt die RheinInsights Retrieval Suite jetzt MCP.

Spring Boot als MCP Server
Nun können Java-Anwendungen, die auf Spring Boot basieren, problemlos das Model Context Protocol als MCP Server unterstützen. Unter https://github.com/modelcontextprotocol/java-sdk ist die Beschreibung des SDKs mit einigen Beispielen.
Die Beispiele für die MCP Server lassen sich leicht starten. Per MCP inspector kann man dann prüfen ob auf den Server zugegriffen und Aktionen ausgeführt werden kann.
Auf der Basis kann man dann relativ zügig eine bestehende Applikation um MCP erweitern. Jedoch muss man bedenken, dass bestehende Frameworks, wie z.B. die RheinInsights Retrieval Suite, schon bestimmte Protokolle verwenden, welche Details in der MCP Implementierung einschränken. Man kann nämlich an den folgenden Stellschrauben drehen. Einerseits muss man sich für
Streamable HTTP,
Server-Sent Events oder
STDIO
entscheiden und überlegen, ob man
WebFlux oder
MVC
verwendet.
Stdio, SSE vs. Streamable HTTP
MCP unterstützt aktuell drei Kommunikationsprotokolle: Stdio, Server-Sent Events (SSE) und Streamable HTTP. SSE ist jedoch bereits veraltet (deprecated) und es wird mit Sicherheit von immer weniger Agenten unterstützt. Daher empfiehlt es sich, direkt Streamable HTTP zu verwenden.
Microsoft Copilot unterstützt beispielsweise Streamable HTTP, während SSE in der Public Preview feststeckt. Laut Dokumentation wird es zudem wahrscheinlich nie vollständig unterstützt.
WebFlux und MVC
Wenn Sie eine bestehende Spring-Boot-Anwendung haben, verwendet diese bereits Spring MVC. In diesem Fall funktioniert WebFlux mit großer Wahrscheinlichkeit nicht. Um MVC auch für MCP einzusetzen, können Sie jedoch eines der Beispiele als Basis nehmen und dort als Transport Provider den
WebMvcStreamableServerTransportProvider
verwenden. Auf diese Weise können relativ einfach die MCP-Beispiele in bestehende MVC-Anwendung integriert werden.
Custom Endpoints
Für bestehende Frameworks möchte man zudem dass sich die MCP-Endpunkte nicht auf der Root-Ebene befinden. Das bedeutet, dass anstelle von
https://yourserver:port/mcp
ein andere Endpunkt genutzt wird. In unserem Fall ist der Endpunkt
https://application:port/api/v1/mcp
Wie implementiert man dies mit Spring MVC oder WebFlux?
Auch hier kommt der TransportProvider zum Zuge. In der Builder-Methode kann man seinen benutzerdefinierten mcpEndpoint wie folgt definieren:
return WebMvcStreamableServerTransportProvider .builder() .objectMapper(new ObjectMapper()) .mcpEndpoint("/api/v1/mcp") .build();