
Servidor MCP com Spring Boot em 2026: O Armadilha do Transporte que Desperdiça Seu Fim de Semana
Eu passei uma tarde olhando para "conexão recusada" no meu primeiro servidor MCP.
A correção foi uma linha de configuração. Aqui está o que nenhum README te diz de imediato.
O que é realmente o MCP (em 60 segundos)
O Modelo de Contexto de Protocolo é o padrão que permite que agentes de IA — Claude, GitHub
Copilot, Cursor — chamem seu código como uma ferramenta. Em vez de a IA apenas gerar
texto, ela pode realmente invocar suas funções e obter dados reais de volta.
Pense nisso como dar a Claude um conjunto de chaves para portas específicas no seu
backend Java. Ele pergunta "você pode executar esta consulta?" — seu servidor MCP a executa, retorna
o resultado — Claude usa esse resultado em sua resposta.
Para equipes Java, isso é significativo. Existem milhões de serviços Spring Boot
em produção agora que agentes de IA não podem acessar. O MCP muda isso.
Aqui está o servidor totalmente funcional — um servidor Spring Boot MCP que expõe
consultas de banco de dados, chamadas de API REST e acesso ao sistema de arquivos como ferramentas
que qualquer agente de IA pode chamar.
O servidor totalmente funcional (pronto para copiar e colar)
Dependências do Maven:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Seu primeiro ferramenta:
@Service
public class DatabaseMcpTools {
@Autowired private JdbcTemplate jdbc;
@Tool(description = "Executar uma consulta SQL somente leitura no banco de dados da aplicação")
public String queryDatabase(
@ToolParam(description = "Consulta SQL SELECT a ser executada") String sql
) {
if (!sql.trim().toUpperCase().startsWith("SELECT")) {
return "Erro: apenas consultas SELECT são permitidas";
}
return jdbc.queryForList(sql).toString();
}
@Tool(description = "Listar todas as tabelas no esquema do banco de dados")
public String listTables() {
return jdbc.queryForList(
"SELECT table_name FROM information_schema.tables " +
"WHERE table_schema = 'public'"
).toString();
}
}
application.yml:
spring:
ai:
mcp:
server:
name: meu-servidor-mcp
version: 1.0.0
instructions: "Fornece consulta de banco de dados e ferramentas de listagem de tabelas."
Execute-o:
mvn spring-boot:run
Testando: conecte-se ao Claude Desktop
Adicione a ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"meu-servidor-spring": {
"command": "java",
"args": ["-jar", "/caminho/absoluto/para/seu-servidor.jar"]
}
}
}
Reinicie o Claude Desktop. Você deve ver um ícone de 🔨 martelo na entrada de chat.
Clique nele — os nomes das suas ferramentas devem aparecer. Digite:
"Liste todas as tabelas no banco de dados"
Claude chama sua ferramenta, seus logs do Spring Boot disparam, Claude recebe dados reais de volta.
Essa é sua primeira integração MCP funcional.
A ARMADILHA: SSE vs stdio
Aqui está o que me queimou. Existem dois transportes e eles não são
A implementação do Model Context Protocol pode revolucionar a forma como empresas brasileiras utilizam IA em seus sistemas. Com a capacidade de agentes de IA acessarem dados em tempo real, as empresas podem otimizar processos e melhorar a eficiência. Isso é crucial em um mercado cada vez mais competitivo.

