Docs / Tucano Proxy

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 .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}  |

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:

claude_desktop_config.json
{
  "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ão http://127.0.0.1:7878). Só mude se alterou a porta.

Ferramentas expostas

tucano_statusEstado del bridge + proxy y conteo de flows. Sin parámetros.
tucano_list_flowsLista resúmenes de flows capturados (sin bodies). Params: limit (1–1000), host, method, status, q, since (epoch-ms para polling incremental).
tucano_get_flowFlow completo, con bodies. Params: id.
tucano_get_request_bodyBody de la request decodificado (utf8 o base64). Params: id.
tucano_get_response_bodyBody de la response decodificado (utf8 o base64). Params: id.
tucano_replay_flowRe-ejecuta un flow con overrides opcionales de headers/body; crea un flow nuevo. Params: id, headers (reemplaza todos cuando se indica), body.
tucano_compose_requestEnvía una request nueva por Tucano. Params: method, url (URL completa), headers, body, log (por defecto true — false ejecuta sin persistir).
tucano_delete_flowsElimina flows por id. Params: ids (array).
tucano_clear_flowsBorra todos los flows capturados — útil para establecer baseline antes de una automatización. Sin parámetros.
tucano_start_captureInicia 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_captureApaga el system proxy del SO y detiene el servidor proxy local. Sin parámetros.
tucano_export_as_curlRenderiza 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_codeRenderiza 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/flowsLista (sumários, sem bodies). Query: limit, host, method, status, q, since.
GET/flows/:idFlow completo (com bodies).
DELETE/flowsBody { 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/clearLimpa todos os flows.
POST/capture/start{ port? } → { running, port }.
POST/capture/stop→ { running: false }.
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.