Projet MCP Server-Client
Uma implementação do Model Context Protocol (MCP) para comunicação entre modelos de IA e ferramentas externas, com exemplos de servidor e cliente em Python e Spring Boot.
Documentação
Projet MCP Server-Client
Apresentação do projeto
Este projeto é uma implementação do protocolo MCP (Model Context Protocol) que permite a comunicação entre modelos de IA e ferramentas externas. A aplicação é composta por três componentes principais:
- Servidor MCP Python - Um servidor MCP leve escrito em Python usando a biblioteca FastMCP
- Servidor MCP Spring Boot - Um servidor MCP baseado em Spring Boot usando o protocolo SSE (Server-Sent Events)
- Cliente MCP Spring Boot - Um cliente que se conecta aos servidores MCP e usa a API Anthropic Claude para funcionalidades de IA
Estrutura do projeto
mcp-server-client-spring-ai-main/
│
├── python-mcp-server/ # Serveur MCP Python
│ ├── server.py # Point d'entrée du serveur MCP Python
│ └── main.py # Fichier Python principal
│
├── sse-mcp-server/ # Serveur MCP Spring Boot
│ ├── pom.xml # Configuration Maven
│ └── src/ # Code source Java
│
├── mcp-client/ # Client MCP Spring Boot
│ ├── pom.xml # Configuration Maven
│ ├── src/ # Code source Java
│ └── resources/ # Fichiers de configuration
│ ├── application.properties # Configuration principale
│ ├── application-secrets.properties # Clés API (non versionnées)
│ └── mcp-servers.json # Configuration des serveurs MCP
│
└── run-all.bat # Script pour démarrer tous les composants
Pré-requisitos
- Java 21 ou superior
- Python 3.10 ou superior
- Maven (incluído via os wrappers mvnw)
- Chave da API Anthropic Claude
Instalação
- Instalação das dependências Python
cd python-mcp-server
pip install fastmcp
- Configuração da chave da API Anthropic (OBRIGATÓRIO)
A aplicação requer uma chave da API Anthropic Claude válida para funcionar. Sem essa chave, você receberá um erro de autenticação (HTTP 401 - invalid x-api-key).
Veja como configurar a chave da API:
a) Crie um arquivo application-secrets.properties na pasta mcp-client/src/main/resources/ com base no modelo fornecido:
# Clé API Anthropic
spring.ai.anthropic.api-key=sk-ant-api03-VOTRE_CLÉ_API_ICI
b) Alternativamente, você pode definir uma variável de ambiente do sistema chamada CLAUDE_API_KEY com sua chave da API como valor.
IMPORTANTE: Nunca compartilhe sua chave da API e não a publique no GitHub ou em qualquer outro repositório público. O arquivo
application-secrets.propertiesé automaticamente ignorado pelo Git para proteger sua chave.
Inicialização da aplicação
Pré-requisitos antes da inicialização
- Certifique-se de que você configurou corretamente sua chave da API Anthropic (veja a seção anterior)
- Verifique se o Python está instalado e se a biblioteca FastMCP está disponível
- Se você usar o servidor filesystem, verifique se o Node.js está instalado e acessível
Método 1: Inicialização automatizada (recomendada)
Use o script batch que inicia todos os componentes na ordem correta com os intervalos apropriados:
run-all.bat
Este script:
- Inicia primeiro o servidor MCP Python em uma janela separada
- Aguarda 3 segundos para a inicialização
- Inicia o servidor MCP Spring Boot em uma segunda janela
- Aguarda 5 segundos para a inicialização
- Executa o cliente MCP na janela atual
Método 2: Inicialização manual dos componentes
Se você preferir um controle mais preciso, pode iniciar cada componente manualmente nesta ordem:
- Iniciar o servidor MCP Python
cd python-mcp-server
python server.py
- Iniciar o servidor MCP Spring Boot
cd sse-mcp-server
./mvnw spring-boot:run # Sous Windows: mvnw.cmd spring-boot:run
- Iniciar o cliente MCP
cd mcp-client
./mvnw spring-boot:run # Sous Windows: mvnw.cmd spring-boot:run
Acesso à aplicação
Uma vez iniciada, a aplicação cliente é acessível em:
- URL:
http://localhost:8080 - O servidor Python MCP executa na porta 8878
- O servidor Spring Boot MCP executa na porta 8877
Arquitetura
O sistema usa o protocolo MCP (Model Context Protocol) para permitir a comunicação entre diferentes componentes:
- O Servidor MCP Python fornece ferramentas simples como a recuperação de informações sobre funcionários
- O Servidor MCP Spring Boot fornece serviços adicionais via Spring Boot
- O Cliente MCP se conecta a esses servidores para acessar suas ferramentas e as expõe através de uma interface web
Configuração
Configuração do cliente MCP
O arquivo application.properties contém a configuração principal:
# Configuration du client MCP
spring.ai.mcp.client.type=sync
spring.ai.mcp.client.connection-timeout=60000
spring.ai.mcp.client.read-timeout=60000
spring.ai.mcp.client.sse.connections.server1.url=http://localhost:8877
Configuração dos servidores MCP
O arquivo mcp-servers.json define os servidores MCP disponíveis:
{
"mcpServers": {
"filesystem": {
"command": "C:/Program Files/nodejs/npx.cmd",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"chemin/vers/dossier"
]
},
"Python-MCP-Server": {
"command": "python",
"args": [
"chemin/vers/server.py"
]
}
}
}
Segurança
As chaves de API sensíveis são armazenadas em um arquivo application-secrets.properties que é excluído do controle de versão Git. Nunca compartilhe este arquivo e não o inclua em seus commits.
Solução de problemas
-
Erro "Invalid x-api-key"
- Verifique se sua chave da API Anthropic está configurada corretamente em
application-secrets.properties
- Verifique se sua chave da API Anthropic está configurada corretamente em
-
Erro "Cannot run program 'npx'"
- Verifique se o Node.js está instalado ou desative o servidor filesystem adicionando:
spring.ai.mcp.client.stdio.filesystem.auto-initialization.enabled=falseemapplication.properties
-
Problemas de conexão com o servidor MCP
- Verifique se os servidores MCP estão em execução
- Verifique os parâmetros de timeout em
application.properties
Contribuição
Para contribuir com este projeto, por favor:
- Faça um fork do repositório
- Crie uma branch para sua funcionalidade (
git checkout -b nouvelle-fonctionnalite) - Faça commit das suas alterações (
git commit -am 'Ajouter une nouvelle fonctionnalité') - Envie para a branch (
git push origin nouvelle-fonctionnalite) - Crie uma Pull Request
Licença
Este projeto é distribuído sob a licença MIT.