Ferramenta gratuita

De API REST a servidor MCP em Java

O que realmente é preciso para expor uma API REST como servidor MCP em Java: o SDK, uma ferramenta que funciona e a parte que decide se um agente a usa direito.

SDK oficial modelcontextprotocol/java-sdk
Instalação
Maven: io.modelcontextprotocol.sdk:mcp
Uma ferramenta MCP funcional em Java
McpServerFeatures.SyncToolSpecification getOrder =
    new McpServerFeatures.SyncToolSpecification(
        new McpSchema.Tool( "get_order",
            "Look up one order by its id and return its current status.",
            ORDER_INPUT_SCHEMA ),
        ( exchange, args ) -> new McpSchema.CallToolResult(
            List.of( new McpSchema.TextContent( fetchOrder( (String)args.get( "orderId" ) ) ) ),
            false ) );

McpSyncServer server = McpServer.sync( transportProvider )
        .serverInfo( "my-server", "1.0.0" )
        .tools( getOrder )
        .build();

Funciona. Só que mais ninguém vê isso.

Um servidor que funciona é onde o esforço termina e a venda começa. Aponte o MCP Showcase para ele e tenha um playground ao vivo que seus clientes podem experimentar, com documentação gerada para cada ferramenta.

Como funciona

link
Instale o SDK

Mostrado acima, junto com a informação de ser mantido oficialmente ou ser um projeto da comunidade, o que pesa mais em algumas linguagens do que em outras.

play_circle
Encapsule um endpoint

Comece com uma única ferramenta, não com toda a sua API. As definições de ferramentas são enviadas ao modelo a cada requisição, e o acerto na escolha cai conforme a lista cresce.

checklist
Teste antes de conectar um agente

Passe a URL publicada pelo MCP Inspector para confirmar que o handshake completa e que as ferramentas aparecem como você pretendia.

O SDK de Java

Maven: io.modelcontextprotocol.sdk:mcpmodelcontextprotocol/java-sdk, mantido oficialmente.

Clientes sync e async são tipos distintos

O SDK de Java expõe McpSyncServer e McpAsyncServer como tipos distintos em vez de uma API com um sinalizador de modo, e o transporte é escolhido na construção. Escolha o errado e você reescreve a ligação, não muda um ajuste. O Spring AI encapsula isso se você já estiver nesse ecossistema.

Encapsular um endpoint REST

Um servidor MCP é uma camada fina sobre código que você já tem. Cada ferramenta precisa de três coisas: um nome, uma descrição dizendo o que ela faz e quando escolhê-la, e um esquema de entrada. O SDK de Java cuida do protocolo; o que você escreve é o mapeamento desses argumentos para a sua chamada HTTP existente.

Comece por um endpoint em vez de toda a sua API. As definições de ferramentas são reenviadas ao modelo a cada requisição, então cada uma é um custo de contexto permanente, e o acerto do modelo ao escolher cai conforme a lista cresce. Oito ferramentas bem descritas valem mais que oitenta.

A parte que não é sobre Java

Seja qual for a linguagem, são as descrições que decidem se o agente se comporta. Elas são lidas pelo modelo, não pelos seus colegas, e uma ferramenta descrita em três palavras é chamada no chute. Você pode conferir as suas com o linter de esquemas MCP e ver quanto a lista custa por requisição com a calculadora de tokens.

Ferramentas e guias relacionados

Um servidor que funciona é metade do trabalho

Depois que ele roda, resta o problema de ninguém conseguir dizer o que ele faz. Um prospect não consegue ler o seu código Java e não vai instalar um cliente para descobrir. O MCP Showcase aponta para a mesma URL e produz um playground ao vivo com documentação gerada para cada ferramenta, para que avaliar o seu servidor custe um clique.

Perguntas frequentes

Encapsule em uma ferramenta cada endpoint que um agente deva alcançar: um nome, uma frase dizendo o que ela faz e quando usá-la, e um esquema de entrada. O SDK de Java cuida do protocolo; o que você escreve é o mapeamento dos argumentos da ferramenta para a sua chamada HTTP existente.

Não, e esse é o erro mais comum. As definições de ferramentas são reenviadas a cada requisição: oitenta endpoints são oitenta descrições na janela de contexto de cada turno, e a capacidade do modelo de escolher a certa cai bastante conforme a lista cresce. Comece pelas poucas de que um agente realmente precisa.

O selo acima do código informa. Onde não há SDK oficial, as opções da comunidade acompanham a especificação com fidelidade variável: confira quando a biblioteca seguiu uma revisão do protocolo pela última vez, principalmente em transportes, antes de construir sobre ela.

Streamable HTTP para tudo o que estiver publicado. Os clientes cada vez mais tentam esse primeiro e alguns já não recorrem ao antigo HTTP+SSE, o que aparece como um cliente que simplesmente não vê o seu servidor, e não como um erro.

Você não descobre relendo o próprio código, porque já sabe o que as ferramentas fazem. Passe o servidor pelo linter de esquemas: ele analisa as descrições e os esquemas de entrada do jeito que um modelo os lê e sinaliza os que fariam um agente adivinhar.

Mais ferramentas MCP gratuitas