Este é um servidor genérico para o Model Context Protocol (MCP) que permite facilmente envolver APIs REST como ferramentas MCP que podem ser acessadas pelo Claude e outros clientes MCP.
- Configuração YAML fácil para múltiplos endpoints de API
- Suporte para requisições GET e POST
- Validação de parâmetros e valores padrão
- Autenticação via variáveis de ambiente
- Timeouts customizáveis para chamadas de API
- Integração com Spring Boot e Spring AI
- Configure os endpoints de API no arquivo
src/main/resources/api-config.yaml
- Configure qualquer token de API necessário como variáveis de ambiente
- Execute o servidor:
mvn spring-boot:run
O arquivo de configuração usa formato YAML com a seguinte estrutura:
# Informações do servidor
server:
name: "API Gateway MCP"
description: "Generic API gateway that wraps REST APIs as MCP tools"
version: "1.0.0"
# Autenticação
auth:
token_env_var: "API_GATEWAY_TOKEN" # Variável de ambiente para o token da API
# Definições de ferramentas
tools:
- name: "nome-da-ferramenta"
description: "Descrição da ferramenta"
endpoint: "https://api.exemplo.com/endpoint"
method: "POST" # ou "GET"
timeout: 30 # em segundos
template: |
{
"param1": "{{variavel1}}",
"param2": {{variavel2}}
}
# Para requisições GET, use query_params
query_params:
param1: "{{variavel1}}"
param2: "{{variavel2}}"
parameters:
variavel1:
type: "string"
description: "Descrição da variavel1"
required: true
variavel2:
type: "number"
description: "Descrição da variavel2"
default: 10
Por padrão, o servidor usa o arquivo src/main/resources/api-config.yaml
. Você pode especificar um arquivo de configuração personalizado de várias formas:
export MCP_CONFIG_FILE="/caminho/para/seu/arquivo.yaml"
java -jar mcpgateway-0.0.1-SNAPSHOT.jar --mcp
java -jar mcpgateway-0.0.1-SNAPSHOT.jar --mcp.config.file=/caminho/para/seu/arquivo.yaml
MCP_CONFIG_FILE="/caminho/para/seu/arquivo.yaml" ./run.sh
Edite o arquivo src/main/resources/application.yml
:
mcp:
config:
file: /caminho/para/seu/arquivo.yaml
- Caminho absoluto:
/caminho/completo/arquivo.yaml
- Caminho relativo:
meu-arquivo.yaml
(busca primeiro no classpath, depois no filesystem) - URL:
file://caminho/arquivo.yaml
# Usando arquivo personalizado
cp custom-config.yaml /home/usuario/minha-config.yaml
MCP_CONFIG_FILE="/home/usuario/minha-config.yaml" java -jar target/mcpgateway-0.0.1-SNAPSHOT.jar --mcp
# Usando arquivo relativo
cp custom-config.yaml minha-config.yaml
MCP_CONFIG_FILE="minha-config.yaml" java -jar target/mcpgateway-0.0.1-SNAPSHOT.jar --mcp
# Modo REST API com arquivo personalizado
MCP_CONFIG_FILE="/caminho/para/config.yaml" java -jar target/mcpgateway-0.0.1-SNAPSHOT.jar
Para usar com Claude Desktop, adicione o seguinte ao seu claude_desktop_config.json
:
{
"mcpServers": {
"api-gateway": {
"command": "java",
"args": ["-jar", "/caminho/para/mcpgateway-0.0.1-SNAPSHOT.jar", "--mcp"],
"env": {
"API_GATEWAY_TOKEN": "seu-token-da-api"
}
}
}
}
Localização do arquivo de configuração:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/claude/claude_desktop_config.json
Use o script run.sh
para facilitar a configuração:
./run.sh
O script oferece opções para:
- Executar como servidor REST API
- Executar como servidor MCP
- Mostrar configuração para Claude Desktop
- Testar endpoints REST
O arquivo src/main/resources/api-config.yaml
contém exemplos de configurações de API, incluindo:
- weather-lookup: Busca informações meteorológicas usando OpenWeatherMap API
- github-user-info: Obtém informações de usuário do GitHub
- jsonplaceholder-post: Cria um novo post usando JSONPlaceholder API
- httpbin-get: Testa requisições GET usando httpbin.org
- Configure o token de autenticação principal usando a variável de ambiente especificada no campo
auth.token_env_var
. - Você também pode referenciar outras variáveis de ambiente em seus templates usando a sintaxe
{{env:NOME_DA_VARIAVEL}}
.
O servidor também expõe endpoints REST para gerenciar as ferramentas:
GET /api/server/info
- Informações do servidorGET /api/tools
- Lista todas as ferramentas disponíveisGET /api/tools/{toolName}
- Informações de uma ferramenta específicaPOST /api/tools/{toolName}/execute
- Executa uma ferramentaGET /api/health
- Status de saúde do servidor
- Spring Boot 3.3.5
- Spring AI 1.0.0-M1
- Spring WebFlux
- SnakeYAML
- Java 21
Para executar em modo de desenvolvimento:
mvn spring-boot:run
O servidor estará disponível em http://localhost:8080
.