Questo progetto mostra come creare un client Java che si connette e interagisce con un server MCP (Model Context Protocol). In questo esempio, ci collegheremo al server della calcolatrice del Capitolo 01 ed eseguiremo varie operazioni matematiche.
Prima di eseguire questo client, devi:
-
Avviare il Server Calcolatrice del Capitolo 01:
- Vai nella directory del server calcolatrice:
03-GettingStarted/01-first-server/solution/java/ - Compila ed esegui il server calcolatrice:
cd ..\01-first-server\solution\java .\mvnw clean install -DskipTests java -jar target\calculator-server-0.0.1-SNAPSHOT.jar - Il server dovrebbe essere in esecuzione su
http://localhost:8080
- Vai nella directory del server calcolatrice:
-
Avere installato Java 21 o superiore sul tuo sistema
-
Avere Maven (incluso tramite Maven Wrapper)
SDKClient è un’applicazione Java che dimostra come:
- Connettersi a un server MCP usando il trasporto Server-Sent Events (SSE)
- Elencare gli strumenti disponibili dal server
- Chiamare varie funzioni della calcolatrice da remoto
- Gestire le risposte e mostrare i risultati
Il client utilizza il framework Spring AI MCP per:
- Stabilire la Connessione: crea un client WebFlux SSE per connettersi al server calcolatrice
- Inizializzare il Client: configura il client MCP e stabilisce la connessione
- Scoprire gli Strumenti: elenca tutte le operazioni disponibili della calcolatrice
- Eseguire Operazioni: chiama varie funzioni matematiche con dati di esempio
- Mostrare i Risultati: visualizza i risultati di ogni calcolo
src/
└── main/
└── java/
└── com/
└── microsoft/
└── mcp/
└── sample/
└── client/
└── SDKClient.java # Main client implementation
Il progetto utilizza le seguenti dipendenze principali:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>Questa dipendenza fornisce:
McpClient- L’interfaccia principale del clientWebFluxSseClientTransport- Trasporto SSE per comunicazioni web- Schemi del protocollo MCP e tipi di richiesta/risposta
Compila il progetto usando il Maven wrapper:
.\mvnw clean installjava -jar .\target\calculator-client-0.0.1-SNAPSHOT.jarNota: Assicurati che il server calcolatrice sia in esecuzione su http://localhost:8080 prima di eseguire uno di questi comandi.
Quando esegui il client, esso:
- Si connette al server calcolatrice su
http://localhost:8080 - Elenca gli Strumenti - Mostra tutte le operazioni disponibili della calcolatrice
- Esegue Calcoli:
- Addizione: 5 + 3 = 8
- Sottrazione: 10 - 4 = 6
- Moltiplicazione: 6 × 7 = 42
- Divisione: 20 ÷ 4 = 5
- Potenza: 2^8 = 256
- Radice Quadrata: √16 = 4
- Valore Assoluto: |-5.5| = 5.5
- Aiuto: mostra le operazioni disponibili
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]
Nota: Potresti vedere avvisi di Maven riguardo thread residui alla fine - questo è normale per applicazioni reattive e non indica un errore.
var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080"));Questo crea un trasporto SSE (Server-Sent Events) che si connette al server calcolatrice.
var client = McpClient.sync(this.transport).build();
client.initialize();Crea un client MCP sincrono e inizializza la connessione.
CallToolResult resultAdd = client.callTool(new CallToolRequest("add", Map.of("a", 5.0, "b", 3.0)));Chiama lo strumento "add" con i parametri a=5.0 e b=3.0.
Se ricevi errori di connessione, assicurati che il server calcolatrice del Capitolo 01 sia in esecuzione:
Error: Connection refused
Soluzione: Avvia prima il server calcolatrice.
Se la porta 8080 è occupata:
Error: Address already in use
Soluzione: Ferma altre applicazioni che usano la porta 8080 o modifica il server per usare una porta diversa.
Se incontri errori di compilazione:
.\mvnw clean install -DskipTestsDisclaimer:
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica Co-op Translator. Pur impegnandoci per garantire accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un umano. Non ci assumiamo alcuna responsabilità per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.