Carregando
0x90Lição 10 de 16

Crie fluxos de trabalho com clientes MCP

Descubra capacidades, combine ferramentas, percorra páginas e mantenha o usuário no controle.

20 min Questionário com 7 perguntas 2 exercícios de código
Ao final desta lição, você saberá
  • Descobrir e armazenar em cache ferramentas com segurança
  • Resolver nomes repetidos entre servidores
  • Encaminhar chamadas e falhas pelo host

O host pode se conectar a vários servidores MCP. Cada cliente descobre as capacidades do servidor, e o host combina essas informações para o modelo. Como dois servidores podem expor ferramentas com o mesmo nome, o host precisa preservar a origem — por exemplo, github__search e jira__search.

Listas grandes podem usar paginação com nextCursor. Se a resposta informar ttlMs, o cliente pode reutilizar os dados pelo tempo indicado. Não presuma capacidades opcionais: descubra o que cada servidor realmente oferece.

Paginação e cache

Listas longas chegam em páginas: se uma resposta tiver nextCursor, há mais dados. Repita a solicitação com params.cursor até receber uma página sem nextCursor. Nesta revisão, resultados de listagem também podem trazer ttlMs (por quanto tempo reutilizar a resposta) e cacheScope. Assim, o cliente não precisa buscar a lista de ferramentas antes de cada mensagem. Servidores devem manter uma ordem estável, o que também ajuda o cache de prompts do modelo.

paging.py — percorra todas as páginas
1pages = {
2    None: {"tools": ["search", "fetch"], "nextCursor": "p2"},
3    "p2": {"tools": ["summarize"], "nextCursor": "p3"},
4    "p3": {"tools": ["translate"]},
5}
6cursor, tools = None, []
7while True:
8    page = pages[cursor]
9    tools += page["tools"]
10    cursor = page.get("nextCursor")
11    if cursor is None:
12        break
13print(tools)
Saída
['search', 'fetch', 'summarize', 'translate']

Vários servidores, um modelo

Nomes de ferramentas são únicos somente dentro de cada servidor. Se GitHub e Jira oferecem search, o host precisa diferenciá-los antes de mostrá-los ao modelo, por exemplo github__search e jira__search. Escolha o prefixo no próprio host: o nome informado pelo servidor não tem garantia de exclusividade.

Principais conclusões

  • O host coordena os clientes e encaminha as chamadas ao servidor correto.

  • Descubra capacidades e trate colisões de nomes explicitamente.

  • Use cursores para paginação e respeite a validade de cache informada.

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

Combine listas sem colisões

+25 XP

Leia as listas de ferramentas de vários servidores e gere nomes únicos com o servidor como prefixo quando houver colisão. Preserve o encaminhamento para o servidor de origem.

  • A collision
  • One server
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

Respeite a validade do cache

+25 XP

Leia o horário em que uma lista foi armazenada, seu TTL e o horário atual. Imprima cached enquanto a lista ainda for válida; caso contrário, imprima refetch.

  • Before and after expiry
  • Zero TTL
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…