MCP Java Client - Calculator Demo
January 29, 2026 · View on GitHub
Dette projekt viser, hvordan man opretter en Java-klient, der forbinder til og interagerer med en MCP (Model Context Protocol) server. I dette eksempel forbinder vi til calculator-serveren fra Kapitel 01 og udfører forskellige matematiske operationer.
Forudsætninger
Før du kører denne klient, skal du:
-
Starte Calculator Serveren fra Kapitel 01:
- Gå til calculator-serverens mappe:
03-GettingStarted/01-first-server/solution/java/ - Byg og kør calculator-serveren:
cd ..\01-first-server\solution\java .\mvnw clean install -DskipTests java -jar target\calculator-server-0.0.1-SNAPSHOT.jar - Serveren skal køre på
http://localhost:8080
- Gå til calculator-serverens mappe:
-
Java 21 eller nyere installeret på dit system
-
Maven (inkluderet via Maven Wrapper)
Hvad er SDKClient?
SDKClient er en Java-applikation, der demonstrerer, hvordan man:
- Forbinder til en MCP-server ved hjælp af Server-Sent Events (SSE) transport
- Lister tilgængelige værktøjer fra serveren
- Kalder forskellige calculator-funktioner eksternt
- Håndterer svar og viser resultater
Sådan fungerer det
Klienten bruger Spring AI MCP framework til at:
- Etablere forbindelse: Opretter en WebFlux SSE klienttransport til at forbinde til calculator-serveren
- Initialisere klient: Sætter MCP-klienten op og etablerer forbindelsen
- Find værktøjer: Lister alle tilgængelige calculator-operationer
- Udfør operationer: Kalder forskellige matematiske funktioner med eksempeldata
- Vis resultater: Viser resultaterne af hver beregning
Projektstruktur
src/
└── main/
└── java/
└── com/
└── microsoft/
└── mcp/
└── sample/
└── client/
└── SDKClient.java # Main client implementation
Vigtige afhængigheder
Projektet bruger følgende nøgleafhængigheder:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>
Denne afhængighed indeholder:
McpClient- Hovedklientens interfaceWebFluxSseClientTransport- SSE transport til webbaseret kommunikation- MCP protokol skemaer og request/response typer
Byg projektet
Byg projektet med Maven wrapperen:
.\mvnw clean install
Kør klienten
java -jar .\target\calculator-client-0.0.1-SNAPSHOT.jar
Note: Sørg for, at calculator-serveren kører på http://localhost:8080 før du kører nogen af disse kommandoer.
Hvad klienten gør
Når du kører klienten, vil den:
- Forbinde til calculator-serveren på
http://localhost:8080 - Liste værktøjer - Viser alle tilgængelige calculator-operationer
- Udføre beregninger:
- Addition: 5 + 3 = 8
- Subtraktion: 10 - 4 = 6
- Multiplikation: 6 × 7 = 42
- Division: 20 ÷ 4 = 5
- Potens: = 256
- Kvadratrod: √16 = 4
- Absolut værdi: |-5.5| = 5.5
- Hjælp: Viser tilgængelige operationer
Forventet output
Available Tools = ListToolsResult[tools=[Tool[name=add, description=Add two numbers together, ...], ...]]
Add Result = CallToolResult[content=[TextContent[text="5,00 + 3,00 = 8,00"]], isError=false]
Subtract Result = CallToolResult[content=[TextContent[text="10,00 - 4,00 = 6,00"]], isError=false]
Multiply Result = CallToolResult[content=[TextContent[text="6,00 * 7,00 = 42,00"]], isError=false]
Divide Result = CallToolResult[content=[TextContent[text="20,00 / 4,00 = 5,00"]], isError=false]
Power Result = CallToolResult[content=[TextContent[text="2,00 ^ 8,00 = 256,00"]], isError=false]
Square Root Result = CallToolResult[content=[TextContent[text="√16,00 = 4,00"]], isError=false]
Absolute Result = CallToolResult[content=[TextContent[text="|-5,50| = 5,50"]], isError=false]
Help = CallToolResult[content=[TextContent[text="Basic Calculator MCP Service\n\nAvailable operations:\n1. add(a, b) - Adds two numbers\n2. subtract(a, b) - Subtracts the second number from the first\n..."]], isError=false]
Note: Du kan se Maven advarsler om tilbageværende tråde til sidst - det er normalt for reaktive applikationer og indikerer ikke en fejl.
Forstå koden
1. Transportopsætning
var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080"));
Dette opretter en SSE (Server-Sent Events) transport, der forbinder til calculator-serveren.
2. Oprettelse af klient
var client = McpClient.sync(this.transport).build();
client.initialize();
Opretter en synkron MCP-klient og initialiserer forbindelsen.
3. Kald af værktøjer
CallToolResult resultAdd = client.callTool(new CallToolRequest("add", Map.of("a", 5.0, "b", 3.0)));
Kalder "add" værktøjet med parametrene a=5.0 og b=3.0.
Fejlfinding
Serveren kører ikke
Hvis du får forbindelsesfejl, så sørg for, at calculator-serveren fra Kapitel 01 kører:
Error: Connection refused
Løsning: Start calculator-serveren først.
Porten er allerede i brug
Hvis port 8080 er optaget:
Error: Address already in use
Løsning: Stop andre programmer, der bruger port 8080, eller ændr serveren til at bruge en anden port.
Byggefejl
Hvis du støder på byggefejl:
.\mvnw clean install -DskipTests
Lær mere
Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.