Tucano Proxy
Referencia completa de la app: funcionalidades, sintaxis de filtros, exportaciones, MCP e instalación del certificado raíz.
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} |tucano-mcp — servidor MCP
O tucano-mcp expõe seus fluxos capturados a clientes LLM (Claude Desktop, Claude Code, Cursor) via Model Context Protocol. Com a bridge MCP ligada no app, o agente lista flows em tempo real, lê bodies, refaz com overrides e compõe requests novas — tudo via stdio.
Pré-requisitos
- Tucano Proxy aberto com a bridge MCP ligada (Configurações → MCP).
- Node.js 18+ no cliente que vai rodar o servidor MCP.
- Token Bearer copiado de Configurações → MCP (UUID gerado na primeira execução; pode rotacionar).
Instalação
Recomendado via npx pra o cliente sempre pegar a versão mais recente. Cole no config MCP:
{
"mcpServers": {
"tucano": {
"command": "npx",
"args": ["-y", "tucano-mcp"],
"env": {
"TUCANO_TOKEN": "paste-the-token-from-tucano-settings"
}
}
}
}Variáveis de ambiente
TUCANO_TOKEN— obrigatório. Bearer token gerado pelo app.TUCANO_URL— opcional. URL da bridge (padrãohttp://127.0.0.1:7878). Só mude se alterou a porta.
Ferramentas expostas
tucano_status | Estado del bridge + proxy y conteo de flows. Sin parámetros. |
tucano_list_flows | Lista resúmenes de flows capturados (sin bodies). Params: limit (1–1000), host, method, status, q, since (epoch-ms para polling incremental). |
tucano_get_flow | Flow completo, con bodies. Params: id. |
tucano_get_request_body | Body de la request decodificado (utf8 o base64). Params: id. |
tucano_get_response_body | Body de la response decodificado (utf8 o base64). Params: id. |
tucano_replay_flow | Re-ejecuta un flow con overrides opcionales de headers/body; crea un flow nuevo. Params: id, headers (reemplaza todos cuando se indica), body. |
tucano_compose_request | Envía una request nueva por Tucano. Params: method, url (URL completa), headers, body, log (por defecto true — false ejecuta sin persistir). |
tucano_delete_flows | Elimina flows por id. Params: ids (array). |
tucano_clear_flows | Borra todos los flows capturados — útil para establecer baseline antes de una automatización. Sin parámetros. |
tucano_start_capture | Inicia el proxy local y activa el system proxy del SO para que el tráfico pase por Tucano. Params: port (opcional, por defecto = puerto actual, normalmente 8888). |
tucano_stop_capture | Apaga el system proxy del SO y detiene el servidor proxy local. Sin parámetros. |
tucano_export_as_curl | Renderiza uno o varios flows como comandos curl listos para ejecutar — handoff para dev/Claude Code reimplementar. Params: ids, includeHeaders (por defecto true, incluye cookies/auth). |
tucano_export_as_code | Renderiza flows como snippets de código. Params: ids, lang (fetch | axios | python, por defecto fetch). Conjunto de lenguajes más reducido que el export LLM completo. |
Endpoints da bridge HTTP
Pra integrações além do MCP, a bridge é uma API HTTP local (axum) em 127.0.0.1:7878. Todos os endpoints exigem Authorization: Bearer <token>.
GET | /status | { running, port, systemProxyOn, flowsCount } |
GET | /flows | Lista (sumários, sem bodies). Query: limit, host, method, status, q, since. |
GET | /flows/:id | Flow completo (com bodies). |
DELETE | /flows | Body { ids: string[] }. Apaga em lote. |
POST | /flows/:id/replay | { headers?, body? } → { id } do novo flow. |
POST | /compose | { method, url, headers?, body?, log? } → flow completo. |
POST | /clear | Limpa todos os flows. |
POST | /capture/start | { port? } → { running, port }. |
POST | /capture/stop | → { running: false }. |
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.