Este serviço fornece operações básicas de calculadora através do Model Context Protocol (MCP) usando Spring Boot com transporte WebFlux. Foi concebido como um exemplo simples para iniciantes que estão a aprender sobre implementações MCP.
Para mais informações, consulte a documentação de referência do MCP Server Boot Starter.
O serviço demonstra:
- Suporte para SSE (Server-Sent Events)
- Registo automático de ferramentas usando a anotação
@Tooldo Spring AI - Funções básicas de calculadora:
- Adição, subtração, multiplicação, divisão
- Cálculo de potência e raiz quadrada
- Módulo (resto) e valor absoluto
- Função de ajuda para descrição das operações
Este serviço de calculadora oferece as seguintes capacidades:
-
Operações Aritméticas Básicas:
- Adição de dois números
- Subtração de um número por outro
- Multiplicação de dois números
- Divisão de um número por outro (com verificação de divisão por zero)
-
Operações Avançadas:
- Cálculo de potência (elevar uma base a um expoente)
- Cálculo de raiz quadrada (com verificação de número negativo)
- Cálculo do módulo (resto da divisão)
- Cálculo do valor absoluto
-
Sistema de Ajuda:
- Função de ajuda incorporada que explica todas as operações disponíveis
O serviço expõe os seguintes endpoints API através do protocolo MCP:
add(a, b): Soma dois númerossubtract(a, b): Subtrai o segundo número ao primeiromultiply(a, b): Multiplica dois númerosdivide(a, b): Divide o primeiro número pelo segundo (com verificação de zero)power(base, exponent): Calcula a potência de um númerosquareRoot(number): Calcula a raiz quadrada (com verificação de número negativo)modulus(a, b): Calcula o resto da divisãoabsolute(number): Calcula o valor absolutohelp(): Obtém informações sobre as operações disponíveis
Um cliente de teste simples está incluído no pacote com.microsoft.mcp.sample.client. A classe SampleCalculatorClient demonstra as operações disponíveis do serviço de calculadora.
O projeto inclui um exemplo de cliente LangChain4j em com.microsoft.mcp.sample.client.LangChain4jClient que demonstra como integrar o serviço de calculadora com LangChain4j e modelos GitHub:
-
Configuração do Token GitHub:
Para usar os modelos de IA do GitHub (como o phi-4), precisa de um token de acesso pessoal do GitHub:
a. Aceda às definições da sua conta GitHub: https://github.com/settings/tokens
b. Clique em "Generate new token" → "Generate new token (classic)"
c. Dê um nome descritivo ao seu token
d. Selecione os seguintes escopos:
repo(Controlo total dos repositórios privados)read:org(Ler membros da organização e equipas, ler projetos da organização)gist(Criar gists)user:email(Aceder a endereços de email do utilizador (somente leitura))
e. Clique em "Generate token" e copie o seu novo token
f. Defina-o como variável de ambiente:
No Windows:
set GITHUB_TOKEN=your-github-tokenNo macOS/Linux:
export GITHUB_TOKEN=your-github-tokeng. Para configuração persistente, adicione-o às variáveis de ambiente através das definições do sistema
-
Adicione a dependência LangChain4j GitHub ao seu projeto (já incluída no pom.xml):
<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-github</artifactId> <version>${langchain4j.version}</version> </dependency>
-
Certifique-se de que o servidor da calculadora está a correr em
localhost:8080
Este exemplo demonstra:
- Ligação ao servidor MCP da calculadora via transporte SSE
- Uso do LangChain4j para criar um chatbot que utiliza as operações da calculadora
- Integração com modelos de IA do GitHub (agora usando o modelo phi-4)
O cliente envia as seguintes consultas de exemplo para demonstrar a funcionalidade:
- Calcular a soma de dois números
- Encontrar a raiz quadrada de um número
- Obter informações de ajuda sobre as operações disponíveis da calculadora
Execute o exemplo e verifique a saída no terminal para ver como o modelo de IA usa as ferramentas da calculadora para responder às consultas.
O cliente LangChain4j está configurado para usar o modelo phi-4 do GitHub com as seguintes definições:
ChatLanguageModel model = GitHubChatModel.builder()
.apiKey(System.getenv("GITHUB_TOKEN"))
.timeout(Duration.ofSeconds(60))
.modelName("phi-4")
.logRequests(true)
.logResponses(true)
.build();Para usar modelos GitHub diferentes, basta alterar o parâmetro modelName para outro modelo suportado (ex.: "claude-3-haiku-20240307", "llama-3-70b-8192", etc.).
O projeto requer as seguintes dependências principais:
<!-- For MCP Server -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>
<!-- For LangChain4j integration -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-mcp</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<!-- For GitHub models support -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-github</artifactId>
<version>${langchain4j.version}</version>
</dependency>Construa o projeto usando Maven:
./mvnw clean install -DskipTestsjava -jar target/calculator-server-0.0.1-SNAPSHOT.jarO MCP Inspector é uma ferramenta útil para interagir com serviços MCP. Para usá-lo com este serviço de calculadora:
-
Instale e execute o MCP Inspector numa nova janela de terminal:
npx @modelcontextprotocol/inspector
-
Aceda à interface web clicando na URL exibida pela aplicação (normalmente http://localhost:6274)
-
Configure a ligação:
- Defina o tipo de transporte para "SSE"
- Defina a URL para o endpoint SSE do seu servidor em execução:
http://localhost:8080/sse - Clique em "Connect"
-
Use as ferramentas:
- Clique em "List Tools" para ver as operações disponíveis da calculadora
- Selecione uma ferramenta e clique em "Run Tool" para executar uma operação
O projeto inclui um Dockerfile para implantação em container:
-
Construa a imagem Docker:
docker build -t calculator-mcp-service . -
Execute o container Docker:
docker run -p 8080:8080 calculator-mcp-service
Isto irá:
- Construir uma imagem Docker multi-stage com Maven 3.9.9 e Eclipse Temurin 24 JDK
- Criar uma imagem de container otimizada
- Expor o serviço na porta 8080
- Iniciar o serviço MCP da calculadora dentro do container
Pode aceder ao serviço em http://localhost:8080 assim que o container estiver a correr.
-
Problemas de Permissão do Token: Se receber um erro 403 Forbidden, verifique se o seu token tem as permissões corretas conforme indicado nos pré-requisitos.
-
Token Não Encontrado: Se receber um erro "No API key found", certifique-se de que a variável de ambiente GITHUB_TOKEN está corretamente definida.
-
Limite de Taxa: A API do GitHub tem limites de taxa. Se encontrar um erro de limite de taxa (código de estado 429), aguarde alguns minutos antes de tentar novamente.
-
Expiração do Token: Os tokens do GitHub podem expirar. Se receber erros de autenticação após algum tempo, gere um novo token e atualize a sua variável de ambiente.
Se precisar de mais ajuda, consulte a documentação LangChain4j ou a documentação da API GitHub.
Aviso Legal:
Este documento foi traduzido utilizando o serviço de tradução automática Co-op Translator. Embora nos esforcemos pela precisão, por favor tenha em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes da utilização desta tradução.
