TucanoTucano
Documentation · Tucano Proxy

Tucano Proxy docs

Full app reference: features, filter syntax, exports, MCP and root CA installation.

Tucano Proxy v0.1.12 tucano-mcp v0.1.0 GitHub

Visão geral

O Tucano Proxy é um debugger HTTP/HTTPS desktop, open source, escrito em Rust + Tauri 2. Roda 100% local, intercepta tráfego HTTP, HTTPS e WebSocket via MITM, e foi desenhado pra aguentar dezenas de milhares de requests sem travar.

Esta página é a referência completa: funcionalidades por área, sintaxe dos filtros, formatos de exportação, integração com agentes via MCP e o passo-a-passo de instalação do certificado raiz.

Funcionalidades

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 filtros aceita uma DSL leve no padrão chave:valor. Tokens são combinados com AND. Use -chave:valor pra negar e aspas pra valores com espaço. Texto livre fora dos tokens vira busca full-text.

host:api.foo.com status:>=400 method:POST -path:/health
header:"x-trace=abc" duration:>500 mime:application/json
"invalid_credentials"  # texto livre vira busca em URL/body
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.

Além da DSL, a barra de filtros também tem um modo Rules (UI multi-regra) — várias condições AND-combinadas, persistidas, sem precisar digitar.

Exportações

Por flow

Copie um único request em vários formatos:

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

Em lote

Selecione vários flows e exporte como:

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

Exportação para LLM (Markdown)

O Tucano gera um tucano.llm.md com prompt customizável, linguagem-alvo e steps estruturados — feito pra colar direto numa conversa com Claude, GPT ou outro agente. Headers sensíveis são mascarados por padrão e placeholders cross-step ({var1}) carregam dicas de locator pra extração.

Linguagens-alvo

  • csharp — C# / .NET (HttpClient)
  • typescript — TypeScript (fetch)
  • python — Python (requests)
  • go — Go (net/http)
  • java — Java (HttpClient)
  • other — Outro / livre

Opções

  • redactSecrets (padrão: on) — mascara authorization, proxy-authorization, cookie, set-cookie, x-api-key, x-auth-token, x-csrf-token.
  • includeStructuredSteps (padrão: on) — gera a seção Steps (estruturado) com placeholders e locators.
  • includeResponseBodies (padrão: off) — inclui bodies limpos de HTML/JSON/XML pra o modelo derivar seletores.
tucano.llm.mdMarkdown
# Tucano — Fluxo HTTP capturado

> Você é um engenheiro de software experiente em TypeScript (fetch).
> Antes de gerar código, inspecione o repositório e siga o padrão
> usado para chamadas HTTP — não invente uma estrutura nova.

## Contexto
- Total de chamadas: 2
- Linguagem-alvo: TypeScript (fetch)
- Headers sensíveis mascarados: sim

## Steps (estruturado)

### 1. POST https://auth.example.com/login → 200 (124 ms)
| header | value |
| ------ | ----- |
| content-type | application/json |
| authorization | ***REDACTED*** |

### 2. GET https://api.example.com/me → 200 (88 ms)
| header | value |
| ------ | ----- |
| authorization | Bearer {var1}  <!-- from: step1 + locator: $.token -->

tucano-mcp — servidor MCP

O tucano-mcp é um servidor Model Context Protocol que expõe seus fluxos capturados a clientes LLM (Claude Desktop, Claude Code, Cursor, etc). Com a bridge MCP ligada no app, o agente passa a enxergar requests em tempo real — pode listar, ler bodies, refazer com overrides e compor 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 (é um UUID gerado na primeira execução; pode ser rotacionado).

Instalação

Recomendado via npx pra o cliente sempre pegar a versão mais recente. Cole no config MCP:

claude_desktop_config.jsonMCP
{
  "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 você alterou a porta.

Tools expostas

tucano_statusBridge + proxy status, flow count. No params.
tucano_list_flowsList captured flow summaries (no bodies). Params: limit (1–1000), host, method, status, q, since (epoch-ms for incremental polling).
tucano_get_flowFull flow record including bodies. Params: id.
tucano_get_request_bodyDecoded request body (utf8 or base64). Params: id.
tucano_get_response_bodyDecoded response body (utf8 or base64). Params: id.
tucano_replay_flowRe-dispatch a flow with optional header/body overrides; creates a new flow. Params: id, headers (replaces all if given), body.
tucano_compose_requestSend a brand-new request through Tucano. Params: method, url (full URL), headers, body, log (default true — set false to run without persisting).
tucano_delete_flowsDelete flows by id. Params: ids (array).
tucano_clear_flowsWipe all captured flows — useful to set a clean baseline before an automation. No params.
tucano_start_captureStart the local proxy and flip the OS system proxy so traffic flows through Tucano. Params: port (optional, defaults to current Tucano port, usually 8888).
tucano_stop_captureTurn the OS system proxy off and stop the local proxy server. No params.
tucano_export_as_curlRender one or more flows as ready-to-run curl commands — handoff for dev/Claude Code to reimplement. Params: ids, includeHeaders (default true, includes cookies/auth).
tucano_export_as_codeRender flows as code snippets. Params: ids, lang (fetch | axios | python, default fetch). Smaller language set than the full LLM export.

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 header 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, incluindo bodies. Rotacione em Configurações → MCP → Rotate token a qualquer momento (e atualize o TUCANO_TOKEN no cliente).

Atalhos

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

Iniciar / parar capturaSpace
Foco no filtro / adicionar token⌘K
Remover último filtro⌘⇧K
Buscar dentro do body⌘F
Find All (busca global)⌘⇧F
Compare dois flows selecionados⌘D
Salvar sessão .tucano⌘S
Abrir sessão .tucano⌘O
Limpar todos os flows⌘L
Selecionar tudo visível⌘A
Marcar flow com cor⌘0–⌘6
Adicionar / editar notaM
Apagar selecionadosDelete / Backspace
Trocar de category tab1–9
Abrir Configurações⌘,
Fechar inspector / Find AllEsc

Instalação do certificado raiz

Pra inspecionar HTTPS, o Tucano gera um CA local e instala no trust store do OS. Cada navegador/app tem suas particularidades — o resumo:

macOS

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

Windows

Install CA grava o certificado no store ROOT (Trusted Root Certification Authorities) do usuário atual 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 em Configurações → Privacidade e segurança → Certificados.

Roadmap

ComposerDisponível

Disponível desde v0.1.11

Replay com overridesDisponível

Disponível desde v0.1.11

Keep limitDisponí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
AutoResponderRoadmap
WebSocket frame inspectorRoadmap

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

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