Docs / Tucano Proxy

Tucano Proxy

Referência completa do app: funcionalidades, sintaxe dos filtros, exportações, MCP e instalação do certificado raiz.

Instalação

Baixe o instalador da sua plataforma na página de download. O app é construído em Rust + Tauri 2 — binário enxuto (~10MB), sem dependências externas.

  • macOS — abra o .dmg e arraste pra Aplicativos.
  • Windows — rode o .msi ou o .exe de setup.
  • Linux.AppImage (chmod +x e rode) ou .deb.

Captura

Proxy MITM local que intercepta HTTP, HTTPS e WebSocket (a conexão WS é encaminhada — inspector de frames individuais está no roadmap).

  • MITM em 127.0.0.1:8888Porta configurável em Configurações → Proxy. Tudo roda local — nada sai da sua máquina.
  • CA raiz autogeradaInstalação one-click no trust store do OS. macOS via keychain (pede senha de admin), Windows via registry no store ROOT do usuário.
  • Toggle de system proxyUm clique no status bar liga/desliga o proxy do sistema (macOS via networksetup, Windows via registry). Reverte sozinho ao sair.
  • SSL allowlist / blocklistPule MITM em hosts específicos. Útil para apps que fazem pinning ou domínios que você não quer interceptar.
  • Detecção do client appCada flow mostra qual processo originou a request (campo clientApp, em macOS e Windows).

Inspector

Painéis lado a lado de Headers, Body e Timing. Viewers auto-detectados pelo content-type.

  • ViewersJSON tree, XML, HTML (com iframe e shadow preview), Raw, Hex, Image, Form (urlencoded + multipart).
  • LayoutPosicione o inspector como painel direito, painel inferior ou esconda completamente.
  • Busca dentro do body⌘F abre busca local com highlight via CodeMirror.
  • TimingDNS, conexão, TLS, TTFB, transferência — request e response side-by-side.

Lista de flows

Lista virtualizada (@tanstack/solid-virtual) que aguenta dezenas de milhares de capturas sem travar.

  • Colunas configuráveisArraste para reordenar, arraste a borda direita para redimensionar, duplo clique para auto-fit.
  • Marcas de cor⌘0–⌘6 marca o flow com cores. Útil pra agrupar visualmente o fluxo de uma feature.
  • Notas inlineM abre o editor de nota por flow. Persistido na sessão .tucano.
  • Category tabsHTTP, HTTPS, WebSocket, JSON, Form, XML, JS, CSS, GraphQL, Document, Media, Other. Atalhos 1–9 alternam entre elas.
  • Keep limitLimite máximo de flows mantidos em memória — evita inchar em sessões longas.

Composer & Replay

Reproduza e modifique requests sem sair do app.

  • ComposerMonte uma request do zero (método, URL, headers, body) e dispare através do Tucano — o resultado aparece como um flow normal.
  • ReplayRe-dispara um flow existente, com sobrescritas opcionais em headers/body. O novo flow é logado e marcado como replay.

Sessões .tucano

Salva tudo em SQLite portátil — flows, bodies, notas, marcas de cor.

  • Salvar / abrir⌘S salva como .tucano, ⌘O abre. Compartilhe com o time, anexe num ticket, abra meses depois — nada se perde.
  • Onde os dados ficamSessão ativa fica em SQLite local na app data dir do Tauri. Não há sync, nem nuvem, nem telemetria.

Compare & Find All

  • Compare (⌘D)Selecione dois flows e abra um diff visual lado-a-lado — headers e body — pra entender o que mudou entre duas execuções.
  • Find All (⌘⇧F)Busca global em URL, body, notas e headers de todos os flows capturados, com highlight ao vivo.

Filtros (DSL)

A barra de filtro aceita uma DSL leve no padrão chave:valor, combinada com AND. Use -chave:valor pra negar e aspas pra valores com espaço. Texto livre vira busca full-text.

filtros
# só erros de uma API
host:api.foo.com status:>=400

# POSTs, invertendo um host
method:POST -host:cdn.foo.com

# header com espaço + duração
header:"x-trace=abc" duration:>500
ChaveExemploDescrição
hosthost:api.foo.comMatch parcial no hostname.
methodmethod:POSTMatch exato no método.
pathpath:/usersMatch parcial no path.
statusstatus:>=400Comparação numérica (>, >=, <, <=, =). Aceita aliases: ok, redirect, error, client, server, pending.
scheme / protoscheme:httpshttp ou https.
sizesize:>1mbSoma de req+res. Aceita sufixos b, k, kb, m, mb.
mime / typemime:application/jsonMatch parcial no content-type.
headerheader:"x-trace=abc"name=value, value opcional. Aspas pra valores com espaço.
bodybody:invalid_credentialsProcura na request e response body.
durationduration:>500Em ms.
extext:jsonExtensão do path.
portport:8443Porta do destino.

Exportações

Por flow

  • cURL (bash/zsh)
  • cURL (Windows cmd)
  • PowerShell (Invoke-WebRequest)
  • JavaScript fetch
  • Python requests
  • HTTPie
  • Raw HTTP/1.1

Em lote

  • Postman Collection v2.1 .postman_collection.json
  • HAR 1.2 .har
  • LLM Markdown .md

Export para LLM (Markdown)

Gera um tucano.llm.md com prompt customizável, linguagem-alvo e steps estruturados. Headers sensíveis são mascarados e placeholders cross-step ({var1}) carregam dicas de locator. Linguagens-alvo: C# / .NET (HttpClient), TypeScript (fetch), Python (requests), Go (net/http), Java (HttpClient), Outro / livre.

tucano.llm.md
# Tucano — Fluxo HTTP capturado

> Você é um engenheiro experiente em TypeScript (fetch).
> Antes de gerar código, siga o padrão do repo.

## Steps (estruturado)

### 1. POST auth.example.com/login → 200
| header        | value            |
| ------------- | ---------------- |
| authorization | ***REDACTED***   |

### 2. GET api.example.com/me → 200
| authorization | Bearer {var1}  |

Servidor MCP

O Tucano fala Model Context Protocol nativamente — sem Node, sem npx, sem pacote extra. Ligue a bridge MCP no app (Configurações → MCP) e ele serve o protocolo direto sobre Streamable HTTP em http://127.0.0.1:7878/mcp. Clientes LLM (Claude Desktop, Claude Code, Cursor, OpenCode, Codex) listam flows em tempo real, leem bodies, refazem com overrides e compõem requests novas.

Pré-requisitos

  • Tucano Proxy aberto com a bridge MCP ligada (Configurações → MCP).
  • Token Bearer copiado de Configurações → MCP (UUID gerado na primeira execução; pode rotacionar).

Instalação

O jeito mais simples é o botão Install em Configurações → MCP: ele escreve a entrada no config do cliente automaticamente, escolhendo o transporte certo. Pra configurar na mão, há dois transportes.

HTTP — Claude Code, Cursor, OpenCode, Codex

Conexão direta ao endpoint, sem processo extra. Não é suportado pelo Claude Desktop.

mcp config (HTTP)
{
  "mcpServers": {
    "tucano": {
      "type": "http",
      "url": "http://127.0.0.1:7878/mcp",
      "headers": {
        "Authorization": "Bearer paste-the-token-from-tucano-settings"
      }
    }
  }
}

stdio — Claude Desktop

O config do Claude Desktop só aceita servidores stdio. O próprio binário do Tucano faz a ponte stdio → HTTP (sem Node/npx). Ajuste o command pro caminho do app na sua plataforma — ou deixe o botão Install preencher o caminho real automaticamente.

claude_desktop_config.json
{
  "mcpServers": {
    "tucano": {
      "command": "/Applications/Tucano Proxy.app/Contents/MacOS/tucano-proxy",
      "args": ["mcp-stdio"],
      "env": {
        "TUCANO_MCP_URL": "http://127.0.0.1:7878/mcp",
        "TUCANO_MCP_TOKEN": "paste-the-token-from-tucano-settings"
      }
    }
  }
}

Variáveis de ambiente (transporte stdio)

  • TUCANO_MCP_TOKEN — obrigatório. Bearer token gerado pelo app.
  • TUCANO_MCP_URL — opcional. URL do endpoint MCP (padrão http://127.0.0.1:7878/mcp). Só mude se alterou a porta.

Ferramentas expostas

tucano_statusStatus da bridge + proxy e contagem de flows. Sem parâmetros.
tucano_list_flowsLista resumos dos flows capturados (sem bodies). Params: limit (1–1000), host, method, status, q, since (epoch-ms pra polling incremental).
tucano_get_flowFlow completo, com bodies. Params: id.
tucano_get_request_bodyBody da request decodificado (utf8 ou base64). Params: id.
tucano_get_response_bodyBody da response decodificado (utf8 ou base64). Params: id.
tucano_replay_flowRe-dispara um flow com overrides opcionais de headers/body; cria flow novo. Params: id, headers (substitui todos quando informado), body.
tucano_compose_requestEnvia uma request nova pelo Tucano. Params: method, url (URL completa), headers, body, log (padrão true — false roda sem persistir).
tucano_delete_flowsApaga flows por id. Params: ids (array).
tucano_clear_flowsLimpa todos os flows capturados — útil pra estabelecer baseline antes de uma automação. Sem parâmetros.
tucano_start_captureLiga o proxy local e flipa o system proxy do OS pra o tráfego passar pelo Tucano. Params: port (opcional, padrão = porta atual, normalmente 8888).
tucano_stop_captureDesliga o system proxy do OS e para o servidor proxy local. Sem parâmetros.
tucano_export_as_curlRenderiza um ou mais flows como comandos curl prontos pra rodar — handoff pra dev/Claude Code reimplementar. Params: ids, includeHeaders (padrão true, inclui cookies/auth).
tucano_export_as_codeRenderiza flows como snippets de código. Params: ids, lang (fetch | axios | python, padrão fetch). Conjunto de linguagens mais enxuto que o export LLM completo.
tucano_searchBusca full-text no servidor dentro dos bodies e headers capturados. Retorna ids dos flows + trechos — mais barato que baixar bodies pra grepar. Params: q, além dos filtros de lista. Bodies binários são ignorados.
tucano_statsEstatísticas agregadas de todos os flows: contagens por status / method / host / content-type, total de bytes, erros, flows mais lentos e maiores, intervalo de tempo. Sem parâmetros.
tucano_wait_forBloqueia até capturar um flow que casa com os filtros (ou timeout). Uma chamada em vez de ficar pollando list_flows. Params: host, method, status, q, timeout.
tucano_diffDiff estruturado de dois flows: request line, status, duração, headers adicionados / removidos / alterados e se cada body é idêntico. Params: a, b (ids de flow).
tucano_get_ssl_settingsLê as configurações atuais de SSL proxying (quais hosts HTTPS são descriptografados pra capturar os bodies). Sem parâmetros.
tucano_set_ssl_settingsConfigura o SSL proxying pra descriptografar os bodies HTTPS dos hosts que você quer. Params: mode (all | allowlist | blocklist), hosts, skipHosts. Vale pro tráfego novo.
tucano_export_as_harExporta um ou mais flows como um log HAR 1.2 padrão (importável em navegadores, Postman, etc). Params: ids.

Endpoint MCP

A bridge expõe um único endpoint Streamable HTTP — POST 127.0.0.1:7878/mcp — que carrega JSON-RPC do MCP (handshake initialize, tools/list, tools/call). Toda requisição exige Authorization: Bearer <token>; no transporte stdio o token vai pela env TUCANO_MCP_TOKEN.

Segurança. A bridge só aceita conexões em 127.0.0.1 e exige Bearer token. Trate o token como segredo — qualquer cliente com ele lê todo o seu tráfego capturado. Rotacione em Configurações → MCP a qualquer momento.

Atalhos

Em Linux/Windows, troque por Ctrl. A lista completa também aparece em Configurações → Atalhos.

SpaceIniciar / parar captura
⌘KFoco no filtro / adicionar token
⌘⇧KRemover último filtro
⌘FBuscar dentro do body
⌘⇧FFind All (busca global)
⌘DCompare dois flows selecionados
⌘SSalvar sessão .tucano
⌘OAbrir sessão .tucano
⌘LLimpar todos os flows
⌘ASelecionar tudo visível
⌘0–⌘6Marcar flow com cor
MAdicionar / editar nota
Delete / BackspaceApagar selecionados
1–9Trocar de category tab
⌘,Abrir Configurações
EscFechar inspector / Find All

Instalação do certificado raiz

Pra inspecionar HTTPS, o Tucano gera um CA local e instala no trust store do OS. Sem ele, o Tucano ainda captura HTTP puro — só não decifra o TLS.

macOS

Configurações → Certificado → Install CA. Digite a senha de admin; o Tucano roda security add-trusted-cert no keychain. Safari e Chrome passam a confiar imediatamente.

Windows

Install CA grava no store ROOT do usuário via registry — sem prompt de admin. Edge e Chrome reaproveitam o store do sistema.

Firefox

Firefox tem store próprio. Em about:config, ative security.enterprise_roots.enabled = true, ou importe o certificado manualmente.

Roadmap

Composer Disponível

Disponível desde v0.1.11

Replay com overrides Disponível

Disponível desde v0.1.11

Keep limit Disponível

Disponível desde v0.1.11

Linux bundles (AppImage, .deb) Disponível

Disponível na página de download

Breakpoints (pausar/editar request) Roadmap
AutoResponder Roadmap
WebSocket frame inspector Roadmap

Hoje a conexão WS é encaminhada, sem inspeção de frames individuais.

gRPC Roadmap
Scripting (Lua/JS para reescrever requests) Roadmap

FAQ

Por que HTTPS não funciona? +

Você precisa instalar o CA do Tucano no trust store do OS (Configurações → Certificado → Install CA). Firefox usa seu próprio store: importe o certificado manualmente ou ative 'Use Enterprise roots' em about:config (security.enterprise_roots.enabled).

Como excluir um host do MITM? +

Adicione o host à SSL blocklist em Configurações → Certificado. Útil para apps com certificate pinning ou domínios que você simplesmente não quer interceptar.

O proxy do sistema continua ativo depois que eu fecho o app? +

Não — o Tucano reverte automaticamente ao sair. Se o app crashar, o toggle pode ficar ligado; nesse caso, abra de novo e desligue manualmente em Configurações.

Onde meus dados ficam? +

100% local. Sessão ativa fica em SQLite na app data dir do Tauri. Você pode salvar como arquivo .tucano (mesmo formato SQLite, portátil) pra compartilhar ou arquivar.

Tem versão para Linux? +

Tem — AppImage e .deb estão disponíveis na página de download, junto com macOS (Apple Silicon + Intel) e Windows x64.

Como rotacionar o token do MCP? +

Configurações → MCP → Rotate token. Lembre de atualizar TUCANO_TOKEN no config do seu cliente MCP depois.

Aparece um aviso de 'app não verificado' ao abrir? +

O app ainda não é code-signed. macOS: clique-direito → Abrir, ou xattr -cr /Applications/Tucano\ Proxy.app se ver 'is damaged'. Windows: SmartScreen → Mais info → Executar mesmo assim.

Precisa de ajuda ou achou um bug? Abra uma issue no GitHub.