Einleitung
Das Model Context Protocol (MCP) ist ein offener Standard, der definiert, wie KI-Modelle mit externen Tools, Diensten und Datenquellen kommunizieren. Es ersetzt individuelle Integrationen durch ein einziges, klar definiertes JSON-RPC-2.0-Protokoll und macht es einfach, jeden MCP-kompatiblen KI-Client mit jedem MCP-Server zu verbinden.
Mit Spring AI 2.0 ist das Erstellen eines MCP-Servers so einfach wie das Annotieren einer Spring-Bean-Methode — kein manuelles Schreiben von Schemas, kein Boilerplate-Code für den Transport. Dieser Artikel zeigt ein vollständiges Beispiel: eine Spring Boot 4-Anwendung, die MCP-Tools und -Resources bereitstellt, sowie einen begleitenden Client, der diese interaktiv über die Kommandozeile aufruft.
Der vollständige Quellcode ist auf GitHub verfügbar.
MCP-Dienste
Ein MCP-Server stellt drei Arten von Primitiven bereit:
| Primitive | Beschreibung |
|---|---|
| Tools | Aufrufbare Funktionen mit strukturierten Parametern und Rückgabewerten |
| Resources | Schreibgeschützte, URI-adressierbare Inhalte (Dateien, Datensätze, Live-Daten) |
| Prompts | Wiederverwendbare Prompt-Vorlagen mit benannten Parametern |
Dieser Artikel behandelt Tools und Resources. Als Transport wird Streamable HTTP verwendet: ein einzelner POST /mcp-Endpunkt, der JSON-RPC spricht, was das Testen mit curl oder einem Tool wie dem MCP Inspector leicht macht.
Projektaufbau
Das Projekt ist ein Multi-Modul-Maven-Build mit zwei Modulen:
ai/
├── pom.xml ← Parent POM
├── mcp-server/ ← Spring Boot App, Port 8080
└── mcp-client/ ← Spring Boot App, interaktive REPL
Parent POM (relevante Auszüge):
Der MCP-Server
Das Server-Modul benötigt folgenden Starter:
Transport konfigurieren
protocol: STREAMABLE wählt den Streamable-HTTP-Transport aus. Spring AI richtet den POST /mcp-Endpunkt automatisch ein — kein Controller-Code nötig.
Tools bereitstellen mit @McpTool
Tools sind gewöhnliche Spring Beans. Eine Methode wird mit @McpTool annotiert und Spring AI generiert das JSON-Schema für die Parameter automatisch:
Beim Start protokolliert Spring AI Registered tools: 1 — mehr ist nicht nötig.
Resources bereitstellen mit @McpResource
Resources werden über eine URI identifiziert und geben ihren Inhalt als String zurück. Die Annotation funktioniert genauso wie @McpTool:
Das uri-Attribut ist der Protokoll-Bezeichner, der Clients in resources/list zurückgegeben wird. Das Schema (file:///, db:// usw.) ist frei wählbar — es hat keine technische Bedeutung für den Dateizugriff; ClassPathResource übernimmt das eigentliche Lesen.
Testen mit dem MCP Inspector
Der MCP Inspector ist eine einfache Möglichkeit, unseren MCP-Server auszuprobieren‚ ohne eigenen Client-Code schreiben zu müssen:
Als Transporttyp Streamable HTTP auswählen. Die Oberfläche zeigt alle registrierten Tools und Resources an und ermöglicht deren direkten Aufruf im Browser.
Einen eigenen MCP-Client bauen
Spring AI macht es auch sehr leicht, eigene MCP-Clients zu entwickeln. Das Client-Modul benötigt folgende Abhängigkeit:
Client-Konfiguration
Den Server aufrufen
Spring AI konfiguriert automatisch eine List<McpSyncClient>-Bean. Diese wird injiziert und der erste (und einzige) Client verwendet:
Interaktive REPL
Ein CommandLineRunner kapselt eine einfache Scanner-Schleife, sodass der Client ohne zusätzliches Framework als Kommandozeilen-Tool nutzbar ist:
mcp-client> list-tools
createPolicyNumber Creates a new policy number
mcp-client> create-policy-number HR
HR20260511103235X0WJT
mcp-client> list-resources
file:///demo.txt Demo text resource loaded from the classpath
Agent Smith — jetzt sind Sie dran
In Zeiten, in denen immer mehr Agenten in Ihrer IT-Landschaft auftauchen, wird MCP das Protokoll sein, um diese in Ihre bestehenden Anwendungen zu integrieren. Wenn ein wesentlicher Teil Ihrer Anwendungen das Spring-(Boot-)Ökosystem nutzt, ist Spring AI das Mittel der Wahl.
Aus architektonischer Sicht gibt es mindestens zwei grundlegende Muster, um MCP-Fähigkeit einzuführen. Entweder erstellt man eine dünne Schicht in bestehenden Business-Services, um zusätzliche MCP-Endpunkte bereitzustellen ...
... oder man fügt eine separate Adapter-/Gateway-Anwendung dazwischen ein:
Weiterführende Lektüre
Falls Sie sich allgemein für MCP interessieren, sind vielleicht diese Blogbeiträge einen Blick wert:
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Blog-Autor*in
Tobias Trelle
Software-Architekt
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.