Acompanhe o ciclo de uma solicitação sem estado
Entenda como solicitações carregam versão e capacidades e como clientes descobrem servidores.
- Ler os metadados de uma solicitação MCP
- Explicar a descoberta de capacidades
- Escolher entre stdio e Streamable HTTP
Na revisão MCP 2026-07-28, não há handshake initialize nem sessão no nível do protocolo. Cada solicitação carrega a versão e as capacidades do cliente em _meta. O cliente pode chamar server/discover para consultar as capacidades e versões aceitas pelo servidor. Revisões até 2025-11-25 ainda usam o handshake antigo.
Isso não significa que sua aplicação não tenha estado: autenticação, preferências e dados do usuário continuam sob responsabilidade do host ou do servidor.
Experimente
Até 15 XPUma conversa sem estado
Acompanhe o host ao descobrir as capacidades do servidor, listar ferramentas e chamar uma delas. Antes de revelar cada mensagem, tente prevê-la. Observe que toda solicitação repete os campos de _meta.
Preveja: O que o cliente envia primeiro para conhecer de uma vez as versões e capacidades do servidor?
Escolhendo uma versão
Cliente e servidor podem aceitar várias revisões. Se a versão declarada em uma solicitação não for aceita, o servidor responde com UnsupportedProtocolVersionError (-32022) e lista as versões disponíveis. O cliente tenta novamente com a versão mais recente que ambos aceitam. Como as versões têm formato AAAA-MM-DD, basta escolher a maior string em comum.
1client = ["2025-11-25", "2026-07-28"]
2server = ["2025-06-18", "2025-11-25"]
3common = set(client) & set(server)
4print(max(common) if common else "no common version")2025-11-25
Principais conclusões
Cada solicitação leva os metadados obrigatórios em
_meta.server/discoverinforma capacidades e versões aceitas.A aplicação ainda pode manter seu próprio estado de usuário.
Quiz da aula
7 perguntas · aprovação com 5 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: crie um servidor MCP
Escreva código Python no editor e execute os testes com exemplos. O Python roda localmente no navegador usando WebAssembly.
Negocie uma versão do protocolo
A primeira linha lista as versões aceitas pelo cliente; a segunda, as do servidor. Imprima a versão mais recente aceita pelos dois ou nenhuma versão em comum.
- Versão compartilhada mais antiga
- Ambas as versões atuais
- Nenhuma versão em comum
O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.
Valide os metadados da solicitação
Leia uma solicitação JSON-RPC. Imprima ok se params._meta contiver io.modelcontextprotocol/protocolVersion e io.modelcontextprotocol/clientCapabilities. Caso contrário, imprima -32602 missing: e as chaves ausentes.
- Complete
- No capabilities
- No params at all
O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…