powhttp-mcp
Servidor MCP que permite a los agentes depurar mejor las solicitudes HTTP
Documentación
powhttp-mcp
Un servidor MCP que da a los asistentes de IA visión de rayos X sobre el tráfico HTTP capturado por powhttp.
Véalo en acción
Usando /generate_scraper para construir un monitor de listados de autos BMW:
https://github.com/user-attachments/assets/be098e9d-d700-491c-ae7f-5afb12732728
Características
- Análisis de Tráfico HTTP - Busca, inspecciona y analiza solicitudes/respuestas HTTP capturadas
- Detección Anti-Bot - Compara tráfico de navegador vs programático para identificar vectores de detección
- Huellas Digitales - Genera huellas digitales TLS (JA3/JA4) y HTTP/2
- Mapeo de API - Agrupa y cataloga endpoints de API a partir del tráfico capturado
- Análisis GraphQL - Agrupa operaciones, inspecciona esquemas y extrae errores de APIs GraphQL
- Inferencia de Esquemas - Infiere esquemas combinados de múltiples cuerpos de respuesta con estadísticas de campos
- Trazado de Flujo - Rastrea solicitudes relacionadas (redirecciones, llamadas dependientes)
- Validación de Esquemas - Valida cuerpos de respuesta contra structs de Go, Zod o JSON Schema
- Generación de Scrapers - Genera scrapers Go de PoC a partir del tráfico capturado
Validación de esquemas en acción - corrigiendo estructuras de datos para casos límite:
https://github.com/user-attachments/assets/1156c537-70ab-4179-ad4a-c148988ac503
Instalación
Instala vía go install:
go install github.com/usestring/powhttp-mcp/cmd/powhttp-mcp@latest
O instala una versión específica:
go install github.com/usestring/powhttp-mcp/cmd/powhttp-mcp@v1.0.0
¿No tienes Go instalado?
Descarga e instala Go desde el sitio web oficial: https://go.dev/doc/install
Añadiendo binarios de Go a tu PATH
Si obtienes command not found: powhttp-mcp después de la instalación, necesitas añadir el directorio bin de Go a tu PATH.
Encuentra tu directorio bin de Go:
go env GOPATH
Esto devuelve tu directorio de workspace de Go, típicamente ~/go (macOS/Linux) o C:\Users\yourname\go (Windows). Los binarios se instalan en el subdirectorio bin.
macOS / Linux
Para bash (~/.bashrc o ~/.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
Luego recarga tu shell:
source ~/.zshrc # or ~/.bashrc, etc.
Windows
PowerShell (sesión actual):
$env:PATH += ";$(go env GOPATH)\bin"
Permanentemente vía PowerShell:
[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";$(go env GOPATH)\bin", "User")
O vía Configuración del Sistema:
- Presiona
Win + R, escribesysdm.cpl, presiona Enter - Ve a Avanzado → Variables de entorno
- Bajo "Variables de usuario", selecciona Path y haz clic en Editar
- Haz clic en Nuevo y añade
%USERPROFILE%\go\bin - Haz clic en Aceptar para guardar, luego reinicia tu terminal
Habilitando la API de Datos
Antes de usar powhttp-mcp, necesitas habilitar la API de Datos en powhttp:
- Abre Powhttp Settings > Data API
- Asegúrate de que la API de Datos esté en ejecución
- (Recomendado) Habilita Auto start on app launch para mayor comodidad
- Anota el número de puerto — lo necesitarás para
POWHTTP_BASE_URLen tu configuración de MCP
Uso
Conectando a Cursor
Añade a tu .cursor/mcp.json:
{
"mcpServers": {
"powhttp": {
"command": "powhttp-mcp",
"env": {
"POWHTTP_BASE_URL": "http://localhost:7777",
"POWHTTP_PROXY_URL": "http://localhost:8888"
}
}
}
}
Conectando a Claude Desktop
Añade a tu configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json en macOS):
{
"mcpServers": {
"powhttp": {
"command": "powhttp-mcp",
"env": {
"POWHTTP_BASE_URL": "http://localhost:7777",
"POWHTTP_PROXY_URL": "http://localhost:8888"
}
}
}
}
Conectando a Claude Code
Añade usando la CLI:
claude mcp add powhttp -e POWHTTP_BASE_URL=http://localhost:7777 -e POWHTTP_PROXY_URL=http://localhost:8888 -- powhttp-mcp
El scraper generado ejecutándose correctamente:
https://github.com/user-attachments/assets/52b30cbf-7c66-40b1-a3fe-9c12d37ece11
Prompts de MCP
powhttp-mcp proporciona 4 prompts para flujos de trabajo guiados:
| Prompt | Descripción |
|---|---|
base_prompt | EMPIEZA AQUÍ: Guía esencial para el uso eficiente de herramientas y optimización de tokens |
compare_browser_program | Compara tráfico de navegador vs programático para encontrar diferencias de detección anti-bot |
build_api_map | Construye un catálogo de endpoints de API a partir del tráfico capturado |
generate_scraper | Genera scrapers Go de PoC a partir del tráfico capturado |
Herramientas de MCP
powhttp-mcp proporciona 17 herramientas para análisis de tráfico HTTP:
| Herramienta | Descripción |
|---|---|
powhttp_sessions_list | Lista todas las sesiones con conteos de entradas |
powhttp_session_active | Obtiene la sesión actualmente activa |
powhttp_search_entries | Busca entradas con filtros y texto libre |
powhttp_get_entry | Obtiene detalles completos de una entrada específica |
powhttp_get_tls | Obtiene eventos de handshake TLS para una conexión |
powhttp_get_http2_stream | Obtiene detalles de tramas HTTP/2 para un stream |
powhttp_fingerprint | Genera huellas digitales HTTP, TLS y HTTP/2 |
powhttp_diff_entries | Compara dos entradas para encontrar diferencias de detección |
powhttp_extract_endpoints | Agrupa entradas en grupos de endpoints |
powhttp_describe_endpoint | Genera descripción detallada de endpoint |
powhttp_trace_flow | Rastrea solicitudes relacionadas alrededor de una entrada semilla |
powhttp_validate_schema | Valida cuerpos de entradas contra un esquema |
powhttp_query_body | Extrae campos específicos de cuerpos usando expresiones JQ |
powhttp_infer_schema | Infiere esquema combinado de múltiples cuerpos de entradas con estadísticas de campos |
powhttp_graphql_operations | Agrupa tráfico GraphQL por nombre y tipo de operación |
powhttp_graphql_inspect | Analiza e inspecciona operaciones GraphQL individuales |
powhttp_graphql_errors | Extrae y categoriza errores GraphQL de las respuestas |
Consulta internal/mcp/README.md para documentación detallada de las herramientas.
Variables de Entorno
Configuración Básica
| Variable | Descripción | Predeterminado |
|---|---|---|
POWHTTP_BASE_URL | Dónde encontrar el servidor API de powhttp | http://localhost:7777 |
POWHTTP_PROXY_URL | URL de proxy utilizada por los prompts al generar scrapers y depurar | http://127.0.0.1:8890 |
LOG_LEVEL | Nivel de verbosidad de los logs: debug, info, warn, error | info |
LOG_FILE | Archivo donde escribir los logs (vacío = imprimir en consola) | "" (consola) |
Ajuste de Rendimiento
| Variable | Descripción | Predeterminado |
|---|---|---|
HTTP_CLIENT_TIMEOUT_MS | Tiempo de espera para respuestas de API (milisegundos) | 10000 (10s) |
FETCH_WORKERS | Cuántas entradas obtener en paralelo | 16 |
ENTRY_CACHE_MAX_ITEMS | Cuántas entradas mantener en caché de memoria | 512 |
REFRESH_INTERVAL_MS | Cada cuánto comprobar nuevas entradas (milisegundos) | 2000 (2s) |
REFRESH_TIMEOUT_MS | Tiempo máximo para operación de refresco de índice (milisegundos) | 15000 (15s) |
FRESHNESS_THRESHOLD_MS | Considerar datos obsoletos después de esta cantidad de milisegundos | 500 (0.5s) |
Límites de Datos
| Variable | Descripción | Predeterminado |
|---|---|---|
TOOL_MAX_BYTES_DEFAULT | Tamaño máximo del cuerpo de respuesta que devuelven las herramientas (bytes) | 2000000 (2MB) |
RESOURCE_MAX_BODY_BYTES | Tamaño máximo del cuerpo para recursos MCP (bytes) | 65536 (64KB) |
TLS_MAX_EVENTS_DEFAULT | Máximo de eventos de handshake TLS a devolver | 200 |
H2_MAX_EVENTS_DEFAULT | Máximo de tramas HTTP/2 a devolver | 200 |
BOOTSTRAP_TAIL_LIMIT | Máximo de entradas a cargar al iniciar | 20000 |
Optimización de Tokens de IA
| Variable | Descripción | Predeterminado |
|---|---|---|
COMPACT_MAX_ARRAY_ITEMS | En modo compacto, recortar arrays a esta cantidad de elementos | 3 |
COMPACT_MAX_STRING_LEN | Truncar cadenas más largas que esto (caracteres) | 500 |
COMPACT_MAX_DEPTH | Profundidad máxima de anidamiento para compactación (0 = ilimitado) | 0 |
DEFAULT_SEARCH_LIMIT | Máximo de resultados predeterminado para search_entries | 10 |
DEFAULT_QUERY_LIMIT | Máximo de entradas predeterminado para query_body | 20 |
DEFAULT_CLUSTER_LIMIT | Máximo de clústeres predeterminado para extract_endpoints | 15 |
DEFAULT_EXAMPLES_PER_ITEM | Ejemplos predeterminados mostrados por clúster | 3 |
Rotación de Logs
| Variable | Descripción | Predeterminado |
|---|---|---|
LOG_MAX_SIZE_MB | Rotar log cuando alcance este tamaño (MB) | 10 |
LOG_MAX_BACKUPS | Conservar esta cantidad de archivos de log antiguos | 5 |
LOG_MAX_AGE_DAYS | Eliminar archivos de log más antiguos que esto (días) | 28 |
LOG_COMPRESS | Comprimir archivos de log antiguos (true/false) | true |
Desarrollo
Requisitos previos
- Go 1.24.5 o posterior
- Instancia de powhttp en ejecución
Compilación
go build ./cmd/powhttp-mcp
Pruebas
go test ./...
Solicitudes de Funciones e Informes de Errores
¿Tienes una sugerencia de función o encontraste un error? ¡Nos encantaría saber de ti!
- Solicitudes de Funciones: Abre un issue con la etiqueta
enhancement - Informes de Errores: Por favor incluye pasos para reproducir, detalles de tu entorno y logs relevantes
Contribuciones
Usamos squash merges para todos los pull requests. Al crear un PR, asegúrate de que el título del PR siga el formato de Conventional Commits, ya que se convertirá en el mensaje de commit:
Dispara release:
feat:- incremento de versión menorfix:- incremento de versión patchperf:- incremento de versión patchrevert:- incremento de versión patchfeat!:oBREAKING CHANGE:- incremento de versión mayor
Sin release:
docs:,chore:,refactor:,test:,style:,build:,ci:
El versionado se automatiza vía release-please.
Licencia
Este proyecto está licenciado bajo la GNU Affero General Public License v3.0 - consulta el archivo LICENSE para más detalles.
Agradecimientos
About String — String (mejor sitio web próximamente :) ) extrae datos estructurados de cualquier sitio web a escala. Nosotros nos encargamos de todo el código y mantenimiento.
Este proyecto fue construido durante un hackathon interno enfocado en herramientas de experiencia de desarrollador. Agradecimientos especiales a:
- Kashif Ghafoor — Por sus contribuciones durante el hackathon
- Florian — Creador de powhttp por implementar la API a partir de una sugerencia y ser receptivo a los comentarios
Proyectos Relacionados
- powhttp - Captura y análisis de tráfico HTTP
- Model Context Protocol - Especificación del protocolo