powhttp-mcp

Servidor MCP que permite que agentes depurem requisições HTTP de forma mais eficaz

Documentação

powhttp-mcp

powhttp-mcp

Go Reference GitHub Release License: AGPL v3

Um servidor MCP que dá aos assistentes de IA visão de raio-X sobre o tráfego HTTP capturado pelo powhttp.


Veja em ação

Usando /generate_scraper para construir um monitor de listagens de carros BMW:

https://github.com/user-attachments/assets/be098e9d-d700-491c-ae7f-5afb12732728


Recursos

  • Análise de Tráfego HTTP - Pesquise, inspecione e analise requisições/respostas HTTP capturadas
  • Detecção Anti-Bot - Compare tráfego de navegador vs. programático para identificar vetores de detecção
  • Fingerprinting - Gere impressões digitais TLS (JA3/JA4) e HTTP/2
  • Mapeamento de API - Agrupe e catalogue endpoints de API a partir do tráfego capturado
  • Análise GraphQL - Agrupe operações, inspecione esquemas e extraia erros de APIs GraphQL
  • Inferência de Esquema - Infira esquemas mesclados de múltiplos corpos de resposta com estatísticas de campos
  • Rastreamento de Fluxo - Rastreie requisições relacionadas (redirecionamentos, chamadas dependentes)
  • Validação de Esquema - Valide corpos de resposta contra structs Go, Zod ou JSON Schema
  • Geração de Scrapers - Gere scrapers Go de prova de conceito a partir do tráfego capturado

Validação de esquema em ação - corrigindo estruturas de dados para casos extremos:

https://github.com/user-attachments/assets/1156c537-70ab-4179-ad4a-c148988ac503


Instalação

Instale via go install:

go install github.com/usestring/powhttp-mcp/cmd/powhttp-mcp@latest

Ou instale uma versão específica:

go install github.com/usestring/powhttp-mcp/cmd/powhttp-mcp@v1.0.0
Não tem o Go instalado?

Baixe e instale o Go pelo site oficial: https://go.dev/doc/install

Adicionando binários do Go ao seu PATH

Se você receber command not found: powhttp-mcp após a instalação, precisará adicionar o diretório bin do Go ao seu PATH.

Encontre seu diretório bin do Go:

go env GOPATH

Isso retorna o diretório do seu workspace Go, normalmente ~/go (macOS/Linux) ou C:\Users\yourname\go (Windows). Os binários são instalados no subdiretório bin.

macOS / Linux

Para bash (~/.bashrc ou ~/.bash_profile):

export PATH="$PATH:$(go env GOPATH)/bin"

Para zsh (~/.zshrc):

export PATH="$PATH:$(go env GOPATH)/bin"

Para fish (~/.config/fish/config.fish):

fish_add_path (go env GOPATH)/bin

Em seguida, recarregue seu shell:

source ~/.zshrc  # or ~/.bashrc, etc.

Windows

PowerShell (sessão atual):

$env:PATH += ";$(go env GOPATH)\bin"

Permanentemente via PowerShell:

[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";$(go env GOPATH)\bin", "User")

Ou via Configurações do Sistema:

  1. Pressione Win + R, digite sysdm.cpl, pressione Enter
  2. Vá para AvançadoVariáveis de Ambiente
  3. Em "Variáveis do usuário", selecione Path e clique em Editar
  4. Clique em Novo e adicione %USERPROFILE%\go\bin
  5. Clique em OK para salvar e reinicie o terminal

Habilitando a API de Dados

Antes de usar o powhttp-mcp, você precisa habilitar a API de Dados no powhttp:

  1. Abra Configurações do Powhttp > API de Dados
  2. Certifique-se de que a API de Dados está em execução
  3. (Recomendado) Habilite Início automático ao abrir o aplicativo para conveniência
  4. Anote o número da porta — você precisará dele para POWHTTP_BASE_URL na sua configuração MCP

Powhttp Data API Settings


Uso

Conectando ao Cursor

Adicione ao seu .cursor/mcp.json:

{
  "mcpServers": {
    "powhttp": {
      "command": "powhttp-mcp",
      "env": {
        "POWHTTP_BASE_URL": "http://localhost:7777",
        "POWHTTP_PROXY_URL": "http://localhost:8888"
      }
    }
  }
}

Conectando ao Claude Desktop

Adicione à configuração do Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json no macOS):

{
  "mcpServers": {
    "powhttp": {
      "command": "powhttp-mcp",
      "env": {
        "POWHTTP_BASE_URL": "http://localhost:7777",
        "POWHTTP_PROXY_URL": "http://localhost:8888"
      }
    }
  }
}

Conectando ao Claude Code

Adicione usando a CLI:

claude mcp add powhttp -e POWHTTP_BASE_URL=http://localhost:7777 -e POWHTTP_PROXY_URL=http://localhost:8888 -- powhttp-mcp

O scraper gerado executando com sucesso:

https://github.com/user-attachments/assets/52b30cbf-7c66-40b1-a3fe-9c12d37ece11


Prompts MCP

O powhttp-mcp fornece 4 prompts para fluxos de trabalho guiados:

PromptDescrição
base_promptCOMEÇE AQUI: Guia essencial para uso eficiente das ferramentas e otimização de tokens
compare_browser_programCompare tráfego de navegador vs. programático para encontrar diferenças de detecção anti-bot
build_api_mapConstrua um catálogo de endpoints de API a partir do tráfego capturado
generate_scraperGere scrapers Go de prova de conceito a partir do tráfego capturado

Ferramentas MCP

O powhttp-mcp fornece 17 ferramentas para análise de tráfego HTTP:

FerramentaDescrição
powhttp_sessions_listListe todas as sessões com contagens de entradas
powhttp_session_activeObtenha a sessão atualmente ativa
powhttp_search_entriesPesquise entradas com filtros e texto livre
powhttp_get_entryObtenha detalhes completos de uma entrada específica
powhttp_get_tlsObtenha eventos de handshake TLS para uma conexão
powhttp_get_http2_streamObtenha detalhes de frames HTTP/2 para um stream
powhttp_fingerprintGere impressões digitais HTTP, TLS e HTTP/2
powhttp_diff_entriesCompare duas entradas para encontrar diferenças de detecção
powhttp_extract_endpointsAgrupe entradas em grupos de endpoints
powhttp_describe_endpointGere descrição detalhada de endpoint
powhttp_trace_flowRastreie requisições relacionadas em torno de uma entrada inicial
powhttp_validate_schemaValide corpos de entrada contra um esquema
powhttp_query_bodyExtraia campos específicos de corpos usando expressões JQ
powhttp_infer_schemaInfira esquema mesclado de múltiplos corpos de entrada com estatísticas de campos
powhttp_graphql_operationsAgrupe tráfego GraphQL por nome e tipo de operação
powhttp_graphql_inspectAnalise e inspecione operações GraphQL individuais
powhttp_graphql_errorsExtraia e categorize erros GraphQL de respostas

Veja internal/mcp/README.md para documentação detalhada das ferramentas.


Variáveis de Ambiente

Configuração Básica
VariávelDescriçãoPadrão
POWHTTP_BASE_URLOnde encontrar o servidor da API powhttphttp://localhost:7777
POWHTTP_PROXY_URLURL do proxy usado pelos prompts ao gerar scrapers e depurarhttp://127.0.0.1:8890
LOG_LEVELQuão detalhados são os logs: debug, info, warn, errorinfo
LOG_FILEArquivo para gravar logs (vazio = imprimir no console)"" (console)
Ajuste de Desempenho
VariávelDescriçãoPadrão
HTTP_CLIENT_TIMEOUT_MSQuanto tempo esperar por respostas da API (milissegundos)10000 (10s)
FETCH_WORKERSQuantas entradas buscar em paralelo16
ENTRY_CACHE_MAX_ITEMSQuantas entradas manter no cache de memória512
REFRESH_INTERVAL_MSCom que frequência verificar novas entradas (milissegundos)2000 (2s)
REFRESH_TIMEOUT_MSTempo máximo para operação de atualização de índice (milissegundos)15000 (15s)
FRESHNESS_THRESHOLD_MSConsiderar dados obsoletos após este número de milissegundos500 (0,5s)
Limites de Dados
VariávelDescriçãoPadrão
TOOL_MAX_BYTES_DEFAULTTamanho máximo do corpo de resposta que as ferramentas retornam (bytes)2000000 (2MB)
RESOURCE_MAX_BODY_BYTESTamanho máximo do corpo para recursos MCP (bytes)65536 (64KB)
TLS_MAX_EVENTS_DEFAULTNúmero máximo de eventos de handshake TLS a retornar200
H2_MAX_EVENTS_DEFAULTNúmero máximo de frames HTTP/2 a retornar200
BOOTSTRAP_TAIL_LIMITNúmero máximo de entradas a carregar na inicialização20000
Otimização de Tokens de IA
VariávelDescriçãoPadrão
COMPACT_MAX_ARRAY_ITEMSNo modo compacto, reduza arrays para este número de itens3
COMPACT_MAX_STRING_LENTrunque strings maiores que isto (caracteres)500
COMPACT_MAX_DEPTHProfundidade máxima de aninhamento para compactação (0 = ilimitado)0
DEFAULT_SEARCH_LIMITMáximo de resultados padrão para search_entries10
DEFAULT_QUERY_LIMITMáximo de entradas padrão para query_body20
DEFAULT_CLUSTER_LIMITMáximo de clusters padrão para extract_endpoints15
DEFAULT_EXAMPLES_PER_ITEMExemplos padrão exibidos por cluster3
Rotação de Logs
VariávelDescriçãoPadrão
LOG_MAX_SIZE_MBRotacionar log quando atingir este tamanho (MB)10
LOG_MAX_BACKUPSManter este número de arquivos de log antigos5
LOG_MAX_AGE_DAYSExcluir arquivos de log mais antigos que isto (dias)28
LOG_COMPRESSComprimir arquivos de log antigos (true/false)true

Desenvolvimento

Pré-requisitos

  • Go 1.24.5 ou posterior
  • Instância powhttp em execução

Compilação

go build ./cmd/powhttp-mcp

Testes

go test ./...

Solicitações de Recursos e Relatórios de Bugs

Tem uma sugestão de recurso ou encontrou um bug? Adoraríamos ouvir de você!

  • Solicitações de Recursos: Abra uma issue com o rótulo enhancement
  • Relatórios de Bugs: Inclua etapas para reproduzir, detalhes do seu ambiente e logs relevantes

Contribuindo

Usamos squash merges para todos os pull requests. Ao criar um PR, certifique-se de que o título do PR segue o formato Conventional Commits, pois ele se tornará a mensagem do commit:

Dispara lançamento:

  • feat: - incremento de versão menor
  • fix: - incremento de versão de patch
  • perf: - incremento de versão de patch
  • revert: - incremento de versão de patch
  • feat!: ou BREAKING CHANGE: - incremento de versão principal

Sem lançamento:

  • docs:, chore:, refactor:, test:, style:, build:, ci:

O versionamento é automatizado via release-please.


Licença

Este projeto é licenciado sob a GNU Affero General Public License v3.0 - veja o arquivo LICENSE para detalhes.


Agradecimentos

Sobre a StringString (site melhor em breve :) ) extrai dados estruturados de qualquer site em escala. Cuidamos de todo o código e manutenção.

Este projeto foi construído durante um hackathon interno focado em ferramentas de experiência do desenvolvedor. Agradecimentos especiais a:

  • Kashif Ghafoor — Por suas contribuições durante o hackathon
  • Florian — Criador do powhttp por implementar a API a partir de uma sugestão e ser receptivo ao feedback

Projetos Relacionados