Servidor MCP do seu serviço|INEMA.CLUB-PRO

Nesta aula você vai

  1. 1Host, cliente, transporte e servidor: quem chama quem
  2. 2Ferramenta é ação que o modelo escolhe; recurso é dado que o cliente lê; prompt é modelo que a pessoa escolhe
  3. 3A revisão vigente do protocolo é a 2026-07-28, e o que saiu dela
  4. 4Listar as peças do servidor do kit num comando

Objetivo: separar ferramenta, recurso e prompt e dizer quem é host, cliente, servidor e transporte no seu serviço.

01Do aplicativo ao seu serviço

Clique em cada bloco.

Clique em cada bloco do diagrama para ver o que ele faz.

Divisão de controle conforme a documentação do SDK oficial v2 (páginas Tools, Resources e Prompts), lida em 19/10/2026.

02As três coisas que um servidor oferece

No kit, um serviço fictício de turmas de curso.

1. Ferramenta

Uma função que o modelo decide chamar a partir do nome, da descrição e do esquema de entrada. Pode só ler ou pode mudar algo no mundo.

No kit: buscar_turmas (só leitura) e reservar_vaga (tem consequência).

Pergunta que leva o modelo a chamarTem turma de MCP com vaga?

03Revisão 2026-07-28: o que mudou em uma tela

A versão vigente do protocolo é a 2026-07-28 (página de versionamento do MCP, lida em 19/10/2026). A anterior era a 2025-11-25.

O que mais muda para quem vem de 2025: não há mais aperto de mão initialize nem sessão (Mcp-Session-Id); cada pedido leva versão e capacidades em _meta; o cliente descobre o servidor com server/discover; e o servidor que precisa perguntar algo ao usuário devolve input_required em vez de abrir um pedido próprio. Roots, Sampling e Logging foram descontinuados.

O SDK oficial que implementa isso é a linha v2 (@modelcontextprotocol/server e @modelcontextprotocol/client, 2.3.1, de 05/10/2026). O pacote antigo @modelcontextprotocol/sdk (1.32.1) ainda fala a 2025-11-25: é o que você vai achar na maioria dos tutoriais.

04Liste as peças do servidor do kit

Precisa do kit instalado (aula 2, primeiro bloco). O cliente fala com o servidor no mesmo processo, sem porta.

Terminal · listar
cd ~/projetos/formacao-webmcp-mcp-v72/kit
node listar.mjs; echo "saída: $?"
Arquivo · kit/listar.mjs
// listar.mjs — liga um cliente MCP ao servidor de turmas, no mesmo processo (sem porta),
// e mostra a anatomia: era do protocolo, ferramentas, recursos e prompts.
import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';
import { createMcpHandler } from '@modelcontextprotocol/server';
import { createServer } from './servidor.mjs';

const handler = createMcpHandler(createServer);
const transporte = new StreamableHTTPClientTransport(new URL('http://teste.local/mcp'), {
  fetch: (url, init) => handler.fetch(new Request(url, init))
});
// mode 'auto': pergunta server/discover; se o servidor for antigo, cai no initialize.
const cliente = new Client({ name: 'listar', version: '1.0.0' }, { versionNegotiation: { mode: 'auto' } });
await cliente.connect(transporte);

const { tools } = await cliente.listTools();
const { resources } = await cliente.listResources();
const { prompts } = await cliente.listPrompts();
console.log(`era: ${cliente.getProtocolEra()}`);
for (const t of tools) console.log(`ferramenta: ${t.name} · readOnlyHint=${t.annotations?.readOnlyHint}`);
for (const r of resources) console.log(`recurso: ${r.uri}`);
for (const p of prompts) console.log(`prompt: ${p.name}`);
console.log(`${tools.length} ferramentas · ${resources.length} recurso · ${prompts.length} prompt`);

await cliente.close();
await handler.close();
Exemplo do repositório
era: modern
ferramenta: buscar_turmas · readOnlyHint=true
ferramenta: reservar_vaga · readOnlyHint=false
recurso: turmas://catalogo
prompt: convite_turma
2 ferramentas · 1 recurso · 1 prompt
saída: 0

era: modern quer dizer que cliente e servidor combinaram a revisão 2026-07-28. Com mode: 'legacy' (o padrão do cliente v2) eles cairiam no initialize de 2025.

05Prática

Ensaio no kit e o mapa do seu serviço.

E1 · Ver as peças

5 min

Rode o bloco listar depois de instalar o kit (aula 2, primeiro bloco).

Pronto quando: node listar.mjs → 2 ferramentas · 1 recurso · 1 prompt, com era: modern e saída: 0.

E2 · O seu serviço em três colunas

15 min

Num arquivo mapa-mcp.md, liste o que o seu serviço faria como ferramenta, como recurso e como prompt. Marque cada ferramenta como leitura ou consequência.

Pronto quando: grep -c -E "leitura|consequência" mapa-mcp.md → pelo menos 3.

06Teste da aula

Pergunta 1 de 4

Quem decide chamar uma ferramenta MCP?competência

07Em três frases

PeçasHost com modelo, cliente dentro dele, transporte e o seu servidor.
PrimitivasFerramenta (modelo escolhe), recurso (cliente lê), prompt (pessoa escolhe).
Revisão2026-07-28, sem initialize nem sessão; SDK v2 2.3.1 a implementa.

Para ir além

Próxima aula