Este projeto demonstra como criar um cliente Java que se conecta e interage com um servidor MCP (Model Context Protocol). Neste exemplo, vamos conectar ao servidor da calculadora do Capítulo 01 e realizar várias operações matemáticas.
Antes de executar este cliente, você precisa:
-
Iniciar o Servidor da Calculadora do Capítulo 01:
- Navegue até o diretório do servidor da calculadora:
03-GettingStarted/01-first-server/solution/java/ - Compile e execute o servidor da calculadora:
cd ..\01-first-server\solution\java .\mvnw clean install -DskipTests java -jar target\calculator-server-0.0.1-SNAPSHOT.jar - O servidor deve estar rodando em
http://localhost:8080
- Navegue até o diretório do servidor da calculadora:
-
Java 21 or higher installed on your system
-
Maven (included via Maven Wrapper)
The SDKClient é uma aplicação Java que demonstra como:
- Conectar a um servidor MCP usando transporte Server-Sent Events (SSE)
- Listar as ferramentas disponíveis no servidor
- Chamar diversas funções da calculadora remotamente
- Tratar as respostas e exibir os resultados
O cliente utiliza o framework Spring AI MCP para:
- Estabelecer Conexão: Cria um cliente WebFlux SSE para conectar ao servidor da calculadora
- Inicializar Cliente: Configura o cliente MCP e estabelece a conexão
- Descobrir Ferramentas: Lista todas as operações disponíveis da calculadora
- Executar Operações: Chama várias funções matemáticas com dados de exemplo
- Exibir Resultados: Mostra os resultados de cada cálculo
src/
└── main/
└── java/
└── com/
└── microsoft/
└── mcp/
└── sample/
└── client/
└── SDKClient.java # Main client implementation
O projeto utiliza as seguintes dependências principais:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>Esta dependência fornece:
McpClient- The main client interfaceWebFluxSseClientTransport- Transporte SSE para comunicação web- Esquemas do protocolo MCP e tipos de requisição/resposta
Compile o projeto usando o wrapper do Maven:
.\mvnw clean installjava -jar .\target\calculator-client-0.0.1-SNAPSHOT.jarNota: Certifique-se de que o servidor da calculadora está rodando em http://localhost:8080 before executing any of these commands.
When you run the client, it will:
- Connect to the calculator server at
http://localhost:8080 - Listar Ferramentas - Exibe todas as operações disponíveis da calculadora
- Realizar Cálculos:
- Adição: 5 + 3 = 8
- Subtração: 10 - 4 = 6
- Multiplicação: 6 × 7 = 42
- Divisão: 20 ÷ 4 = 5
- Potência: 2^8 = 256
- Raiz Quadrada: √16 = 4
- Valor Absoluto: |-5.5| = 5.5
- Ajuda: Exibe as operações disponíveis
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: Você pode ver avisos do Maven sobre threads pendentes ao final - isso é normal em aplicações reativas e não indica erro.
var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080"));Isso cria um transporte SSE (Server-Sent Events) que conecta ao servidor da calculadora.
var client = McpClient.sync(this.transport).build();
client.initialize();Cria um cliente MCP síncrono e inicializa a conexão.
CallToolResult resultAdd = client.callTool(new CallToolRequest("add", Map.of("a", 5.0, "b", 3.0)));Chama a ferramenta "add" com os parâmetros a=5.0 e b=3.0.
Se você receber erros de conexão, certifique-se que o servidor da calculadora do Capítulo 01 está ativo:
Error: Connection refused
Solução: Inicie o servidor da calculadora primeiro.
Se a porta 8080 estiver ocupada:
Error: Address already in use
Solução: Pare outras aplicações que estejam usando a porta 8080 ou modifique o servidor para usar outra porta.
Se encontrar erros na compilação:
.\mvnw clean install -DskipTestsAviso Legal:
Este documento foi traduzido utilizando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.