powhttp-mcp
Servidor MCP que permite que agentes depurem requisições HTTP de forma mais eficaz
Documentação
powhttp-mcp
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:
- Pressione
Win + R, digitesysdm.cpl, pressione Enter - Vá para Avançado → Variáveis de Ambiente
- Em "Variáveis do usuário", selecione Path e clique em Editar
- Clique em Novo e adicione
%USERPROFILE%\go\bin - 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:
- Abra Configurações do Powhttp > API de Dados
- Certifique-se de que a API de Dados está em execução
- (Recomendado) Habilite Início automático ao abrir o aplicativo para conveniência
- Anote o número da porta — você precisará dele para
POWHTTP_BASE_URLna sua configuração MCP
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:
| Prompt | Descrição |
|---|---|
base_prompt | COMEÇE AQUI: Guia essencial para uso eficiente das ferramentas e otimização de tokens |
compare_browser_program | Compare tráfego de navegador vs. programático para encontrar diferenças de detecção anti-bot |
build_api_map | Construa um catálogo de endpoints de API a partir do tráfego capturado |
generate_scraper | Gere 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:
| Ferramenta | Descrição |
|---|---|
powhttp_sessions_list | Liste todas as sessões com contagens de entradas |
powhttp_session_active | Obtenha a sessão atualmente ativa |
powhttp_search_entries | Pesquise entradas com filtros e texto livre |
powhttp_get_entry | Obtenha detalhes completos de uma entrada específica |
powhttp_get_tls | Obtenha eventos de handshake TLS para uma conexão |
powhttp_get_http2_stream | Obtenha detalhes de frames HTTP/2 para um stream |
powhttp_fingerprint | Gere impressões digitais HTTP, TLS e HTTP/2 |
powhttp_diff_entries | Compare duas entradas para encontrar diferenças de detecção |
powhttp_extract_endpoints | Agrupe entradas em grupos de endpoints |
powhttp_describe_endpoint | Gere descrição detalhada de endpoint |
powhttp_trace_flow | Rastreie requisições relacionadas em torno de uma entrada inicial |
powhttp_validate_schema | Valide corpos de entrada contra um esquema |
powhttp_query_body | Extraia campos específicos de corpos usando expressões JQ |
powhttp_infer_schema | Infira esquema mesclado de múltiplos corpos de entrada com estatísticas de campos |
powhttp_graphql_operations | Agrupe tráfego GraphQL por nome e tipo de operação |
powhttp_graphql_inspect | Analise e inspecione operações GraphQL individuais |
powhttp_graphql_errors | Extraia 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ável | Descrição | Padrão |
|---|---|---|
POWHTTP_BASE_URL | Onde encontrar o servidor da API powhttp | http://localhost:7777 |
POWHTTP_PROXY_URL | URL do proxy usado pelos prompts ao gerar scrapers e depurar | http://127.0.0.1:8890 |
LOG_LEVEL | Quão detalhados são os logs: debug, info, warn, error | info |
LOG_FILE | Arquivo para gravar logs (vazio = imprimir no console) | "" (console) |
Ajuste de Desempenho
| Variável | Descrição | Padrão |
|---|---|---|
HTTP_CLIENT_TIMEOUT_MS | Quanto tempo esperar por respostas da API (milissegundos) | 10000 (10s) |
FETCH_WORKERS | Quantas entradas buscar em paralelo | 16 |
ENTRY_CACHE_MAX_ITEMS | Quantas entradas manter no cache de memória | 512 |
REFRESH_INTERVAL_MS | Com que frequência verificar novas entradas (milissegundos) | 2000 (2s) |
REFRESH_TIMEOUT_MS | Tempo máximo para operação de atualização de índice (milissegundos) | 15000 (15s) |
FRESHNESS_THRESHOLD_MS | Considerar dados obsoletos após este número de milissegundos | 500 (0,5s) |
Limites de Dados
| Variável | Descrição | Padrão |
|---|---|---|
TOOL_MAX_BYTES_DEFAULT | Tamanho máximo do corpo de resposta que as ferramentas retornam (bytes) | 2000000 (2MB) |
RESOURCE_MAX_BODY_BYTES | Tamanho máximo do corpo para recursos MCP (bytes) | 65536 (64KB) |
TLS_MAX_EVENTS_DEFAULT | Número máximo de eventos de handshake TLS a retornar | 200 |
H2_MAX_EVENTS_DEFAULT | Número máximo de frames HTTP/2 a retornar | 200 |
BOOTSTRAP_TAIL_LIMIT | Número máximo de entradas a carregar na inicialização | 20000 |
Otimização de Tokens de IA
| Variável | Descrição | Padrão |
|---|---|---|
COMPACT_MAX_ARRAY_ITEMS | No modo compacto, reduza arrays para este número de itens | 3 |
COMPACT_MAX_STRING_LEN | Trunque strings maiores que isto (caracteres) | 500 |
COMPACT_MAX_DEPTH | Profundidade máxima de aninhamento para compactação (0 = ilimitado) | 0 |
DEFAULT_SEARCH_LIMIT | Máximo de resultados padrão para search_entries | 10 |
DEFAULT_QUERY_LIMIT | Máximo de entradas padrão para query_body | 20 |
DEFAULT_CLUSTER_LIMIT | Máximo de clusters padrão para extract_endpoints | 15 |
DEFAULT_EXAMPLES_PER_ITEM | Exemplos padrão exibidos por cluster | 3 |
Rotação de Logs
| Variável | Descrição | Padrão |
|---|---|---|
LOG_MAX_SIZE_MB | Rotacionar log quando atingir este tamanho (MB) | 10 |
LOG_MAX_BACKUPS | Manter este número de arquivos de log antigos | 5 |
LOG_MAX_AGE_DAYS | Excluir arquivos de log mais antigos que isto (dias) | 28 |
LOG_COMPRESS | Comprimir 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 menorfix:- incremento de versão de patchperf:- incremento de versão de patchrevert:- incremento de versão de patchfeat!:ouBREAKING 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 String — String (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
- powhttp - Captura e análise de tráfego HTTP
- Model Context Protocol - Especificação do protocolo