Model Context Protocol im Zusammenspiel mit Spring Boot

  1. 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.

Laptop with VS Code

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();