Carregando
0x30Lição 4 de 16

Acompanhe o ciclo de uma solicitação sem estado

Entenda como solicitações carregam versão e capacidades e como clientes descobrem servidores.

20 min Questionário com 7 perguntas 2 exercícios de código
Ao final desta lição, você saberá
  • 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 XP

Uma 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.

Mensagem 1 de 6Previsões 0/0
Host + cliente
Servidor MCP

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.

negotiate.py — versão 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")
Saída
2025-11-25

Principais conclusões

  • Cada solicitação leva os metadados obrigatórios em _meta.

  • server/discover informa 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.

Exercício 1

Negocie uma versão do protocolo

+25 XP

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
main.py
Carregando editor…

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.

Exercício 2

Valide os metadados da solicitação

+25 XP

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
main.py
Carregando editor…

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…