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
.dmge arraste pra Aplicativos. - Windows — rode o
.msiou o.exede 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:8888 — Porta configurável em Configurações → Proxy. Tudo roda local — nada sai da sua máquina.
- CA raiz autogerada — Instalaçã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 proxy — Um clique no status bar liga/desliga o proxy do sistema (macOS via networksetup, Windows via registry). Reverte sozinho ao sair.
- SSL allowlist / blocklist — Pule MITM em hosts específicos. Útil para apps que fazem pinning ou domínios que você não quer interceptar.
- Detecção do client app — Cada 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.
- Viewers — JSON tree, XML, HTML (com iframe e shadow preview), Raw, Hex, Image, Form (urlencoded + multipart).
- Layout — Posicione o inspector como painel direito, painel inferior ou esconda completamente.
- Busca dentro do body — ⌘F abre busca local com highlight via CodeMirror.
- Timing — DNS, 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áveis — Arraste 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 inline — M abre o editor de nota por flow. Persistido na sessão .tucano.
- Category tabs — HTTP, HTTPS, WebSocket, JSON, Form, XML, JS, CSS, GraphQL, Document, Media, Other. Atalhos 1–9 alternam entre elas.
- Keep limit — Limite máximo de flows mantidos em memória — evita inchar em sessões longas.
Composer & Replay
Reproduza e modifique requests sem sair do app.
- Composer — Monte uma request do zero (método, URL, headers, body) e dispare através do Tucano — o resultado aparece como um flow normal.
- Replay — Re-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 ficam — Sessã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.
# 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
| Chave | Exemplo | Descrição |
|---|---|---|
host | host:api.foo.com | Match parcial no hostname. |
method | method:POST | Match exato no método. |
path | path:/users | Match parcial no path. |
status | status:>=400 | Comparação numérica (>, >=, <, <=, =). Aceita aliases: ok, redirect, error, client, server, pending. |
scheme / proto | scheme:https | http ou https. |
size | size:>1mb | Soma de req+res. Aceita sufixos b, k, kb, m, mb. |
mime / type | mime:application/json | Match parcial no content-type. |
header | header:"x-trace=abc" | name=value, value opcional. Aspas pra valores com espaço. |
body | body:invalid_credentials | Procura na request e response body. |
duration | duration:>500 | Em ms. |
ext | ext:json | Extensão do path. |
port | port:8443 | Porta 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 — 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.
{
"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.
{
"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ãohttp://127.0.0.1:7878/mcp). Só mude se alterou a porta.
Ferramentas expostas
tucano_status | Status da bridge + proxy e contagem de flows. Sem parâmetros. |
tucano_list_flows | Lista resumos dos flows capturados (sem bodies). Params: limit (1–1000), host, method, status, q, since (epoch-ms pra polling incremental). |
tucano_get_flow | Flow completo, com bodies. Params: id. |
tucano_get_request_body | Body da request decodificado (utf8 ou base64). Params: id. |
tucano_get_response_body | Body da response decodificado (utf8 ou base64). Params: id. |
tucano_replay_flow | Re-dispara um flow com overrides opcionais de headers/body; cria flow novo. Params: id, headers (substitui todos quando informado), body. |
tucano_compose_request | Envia uma request nova pelo Tucano. Params: method, url (URL completa), headers, body, log (padrão true — false roda sem persistir). |
tucano_delete_flows | Apaga flows por id. Params: ids (array). |
tucano_clear_flows | Limpa todos os flows capturados — útil pra estabelecer baseline antes de uma automação. Sem parâmetros. |
tucano_start_capture | Liga 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_capture | Desliga o system proxy do OS e para o servidor proxy local. Sem parâmetros. |
tucano_export_as_curl | Renderiza 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_code | Renderiza 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_search | Busca 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_stats | Estatí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_for | Bloqueia 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_diff | Diff 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_settings | Lê as configurações atuais de SSL proxying (quais hosts HTTPS são descriptografados pra capturar os bodies). Sem parâmetros. |
tucano_set_ssl_settings | Configura 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_har | Exporta 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.
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.
Space | Iniciar / parar captura |
⌘K | Foco no filtro / adicionar token |
⌘⇧K | Remover último filtro |
⌘F | Buscar dentro do body |
⌘⇧F | Find All (busca global) |
⌘D | Compare dois flows selecionados |
⌘S | Salvar sessão .tucano |
⌘O | Abrir sessão .tucano |
⌘L | Limpar todos os flows |
⌘A | Selecionar tudo visível |
⌘0–⌘6 | Marcar flow com cor |
M | Adicionar / editar nota |
Delete / Backspace | Apagar selecionados |
1–9 | Trocar de category tab |
⌘, | Abrir Configurações |
Esc | Fechar 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ívelDisponível desde v0.1.11
Replay com overrides DisponívelDisponível desde v0.1.11
Keep limit DisponívelDisponível desde v0.1.11
Linux bundles (AppImage, .deb) DisponívelDisponível na página de download
Breakpoints (pausar/editar request) RoadmapAutoResponder RoadmapWebSocket frame inspector RoadmapHoje a conexão WS é encaminhada, sem inspeção de frames individuais.
gRPC RoadmapScripting (Lua/JS para reescrever requests) RoadmapFAQ
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.