Todos os artigos
AnthropicClaudeAItool use

Tool use da Anthropic em local: túneis para Claude

O tool use do Claude não é um webhook. O seu backend envia uma mensagem, o Claude responde, às vezes com um pedido para chamar uma ferramenta, o seu código roda a ferramenta e devolve o resultado. Tudo acontece por HTTPS de saída a partir da sua máquina. Então por que este artigo fala de túneis?

Porque no momento em que você constrói algo de verdade com o Claude — um agente de código, uma automação de suporte, um servidor MCP, um fluxo de longa duração — você começa a precisar de conectividade de entrada. Para clientes de navegador. Para servidores MCP expostos a outros apps. Para webhooks de ferramentas de terceiros que o modelo invoca.

Onde um túnel realmente ajuda

Frontends de navegador para apps com Claude

O mesmo formato da configuração do OpenAI Realtime. O seu frontend não pode guardar a sua chave de API da Anthropic, então ele fala com o seu backend, que fala com a Anthropic. O frontend precisa de HTTPS para que as respostas em streaming rendam de forma limpa (alguns navegadores degradam o tratamento de SSE em HTTP puro), e o seu backend precisa de HTTPS se o frontend for HTTPS. O túnel resolve os dois.

Servidores MCP rodando em local

O Model Context Protocol permite que o Claude (e outros clientes) se conectem a ferramentas que você expõe como servidores MCP. Para servidores MCP com transporte HTTP — ao contrário de stdio — o cliente precisa alcançar o seu servidor. Se você está prototipando um servidor MCP e quer testá-lo com o Claude Desktop ou outro cliente remoto, expor o seu servidor MCP local por um túnel é o caminho de menor resistência.

Callbacks de computer use

Se você usa a beta de computer use do Claude e o modelo interage com um serviço que dispara webhooks de volta para a sua máquina, você está em território de webhooks. Os mesmos padrões de qualquer provedor: capturar, reenviar, verificar (se aplicável).

O que um túnel não faz

Você não precisa de um túnel só para chamar o Claude a partir de um script local. curl https://api.anthropic.com/v1/messages funciona de qualquer máquina. Os SDKs de Python e TypeScript funcionam bem. O tool use em si é uma interação de saída — o Claude não chama a sua máquina quando quer usar uma ferramenta; o seu código é quem faz a chamada com base na resposta do Claude.

Isso confunde algumas pessoas da primeira vez. O padrão é:

  1. O seu código envia uma mensagem de usuário ao Claude com uma lista de ferramentas disponíveis.
  2. O Claude responde, possivelmente com um bloco tool_use que descreve uma ferramenta a chamar.
  3. O seu código executa a ferramenta no seu sistema local.
  4. O seu código devolve o resultado da ferramenta ao Claude como uma mensagem de continuação.
  5. Repete até terminar.

Os cinco passos acontecem em um único processo Python ou TypeScript. Sem tráfego de entrada. Sem túnel.

O motivo real de o túnel ajudar nos fluxos com Claude

O motivo de a gente acabar rodando um túnel durante o desenvolvimento com Claude não é o modelo em si. É tudo ao redor dele: o painel que mostra o progresso do agente, o frontend que faz streaming das saídas das ferramentas, o servidor MCP exposto para testes, o webhook de uma ferramenta de terceiros que o agente invocou ("envie uma mensagem no Slack", "crie uma issue no Linear"). O agente dispara uma reação em cadeia e, em algum ponto dessa cadeia, um serviço externo acaba querendo acessar a sua máquina.

Configuração para um ciclo de desenvolvimento de servidor MCP

  1. Implemente o seu servidor MCP com transporte HTTP.
  2. Rode-o em local na porta que você escolher.
  3. npx portpreview 3000 (ou a sua porta).
  4. No Claude Desktop ou no seu outro cliente MCP, configure a URL do servidor remoto apontando para o seu túnel.
  5. Emita comandos. Observe a captura de requisições no túnel e as respostas que o seu servidor devolve.

Se o seu servidor MCP for de transporte stdio, isto não se aplica — servidores stdio se comunicam por pipes de processo e ficam locais por design.

Respostas em streaming e túneis

O Claude faz streaming das respostas via SSE. Os túneis precisam lidar corretamente com a resposta de streaming de longa duração — a maioria lida, mas alguns proxies HTTP antigos colocam a resposta em buffer e só liberam no final, o que anula o sentido do streaming. PortPreview, Cloudflare e ngrok lidam com SSE sem buffer. Se você vê o seu frontend receber a resposta inteira de uma vez após uma longa espera, o seu túnel está em buffer. É um problema do túnel, não do Claude.

Depurar o loop do agente

A parte mais difícil do desenvolvimento com tool use do Claude não é a API. É entender o que o modelo decidiu fazer em cada passo. Registre cada bloco tool_use antes de executá-lo. Registre cada resultado de ferramenta antes de devolver ao Claude. Se você tem um túnel entre o seu frontend e o seu backend, a captura de requisições também te dá um registro das mensagens de usuário — útil para reproduzir execuções do agente sem redigitar os prompts.

Para onde isso caminha

O ecossistema de tool use da Anthropic anda rápido — MCP, computer use, janelas de contexto maiores, menor latência. Os padrões de webhook de depurar webhooks em local e a matemática de assinaturas do guia de verificação de assinatura se aplicam quando qualquer ferramenta externa que o agente chama dispara um callback para a sua máquina.

Entre na lista de espera do PortPreview para um túnel com captura, reenvio e encaminhamento seguro de SSE embutidos.

Perguntas frequentes

Preciso de um túnel para usar o tool use do Claude?
Não para a API principal. O tool use do Claude é uma interação de saída — o seu código chama a Anthropic, o Claude responde com pedidos de ferramenta, o seu código os executa e você devolve os resultados. Tudo de saída. Você só precisa de um túnel quando serviços externos chamam a sua máquina: frontends de navegador, servidores MCP expostos remotamente ou ferramentas de terceiros que disparam webhooks de volta.
Como testo um servidor MCP com o Claude em local?
Para servidores MCP com transporte HTTP, rode o servidor em local e exponha-o por um túnel. Configure o Claude Desktop (ou outro cliente MCP remoto) com a URL do túnel. Servidores MCP stdio não precisam de túnel porque se comunicam por pipes de processo.
Os túneis atrapalham as respostas em streaming do Claude?
A maioria dos túneis modernos lida com o streaming SSE sem buffer. Se o seu frontend recebe uma resposta completa de uma vez após uma longa demora, o túnel está em buffer e quebrando o streaming. O PortPreview e outros túneis recentes evitam isso.