powhttp-mcp

Servidor MCP que permite a los agentes depurar mejor las solicitudes HTTP

Documentación

powhttp-mcp

powhttp-mcp

Go Reference GitHub Release License: AGPL v3

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:

  1. Presiona Win + R, escribe sysdm.cpl, presiona Enter
  2. Ve a AvanzadoVariables de entorno
  3. Bajo "Variables de usuario", selecciona Path y haz clic en Editar
  4. Haz clic en Nuevo y añade %USERPROFILE%\go\bin
  5. 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:

  1. Abre Powhttp Settings > Data API
  2. Asegúrate de que la API de Datos esté en ejecución
  3. (Recomendado) Habilita Auto start on app launch para mayor comodidad
  4. Anota el número de puerto — lo necesitarás para POWHTTP_BASE_URL en tu configuración de MCP

Powhttp Data API Settings


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:

PromptDescripción
base_promptEMPIEZA AQUÍ: Guía esencial para el uso eficiente de herramientas y optimización de tokens
compare_browser_programCompara tráfico de navegador vs programático para encontrar diferencias de detección anti-bot
build_api_mapConstruye un catálogo de endpoints de API a partir del tráfico capturado
generate_scraperGenera 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:

HerramientaDescripción
powhttp_sessions_listLista todas las sesiones con conteos de entradas
powhttp_session_activeObtiene la sesión actualmente activa
powhttp_search_entriesBusca entradas con filtros y texto libre
powhttp_get_entryObtiene detalles completos de una entrada específica
powhttp_get_tlsObtiene eventos de handshake TLS para una conexión
powhttp_get_http2_streamObtiene detalles de tramas HTTP/2 para un stream
powhttp_fingerprintGenera huellas digitales HTTP, TLS y HTTP/2
powhttp_diff_entriesCompara dos entradas para encontrar diferencias de detección
powhttp_extract_endpointsAgrupa entradas en grupos de endpoints
powhttp_describe_endpointGenera descripción detallada de endpoint
powhttp_trace_flowRastrea solicitudes relacionadas alrededor de una entrada semilla
powhttp_validate_schemaValida cuerpos de entradas contra un esquema
powhttp_query_bodyExtrae campos específicos de cuerpos usando expresiones JQ
powhttp_infer_schemaInfiere esquema combinado de múltiples cuerpos de entradas con estadísticas de campos
powhttp_graphql_operationsAgrupa tráfico GraphQL por nombre y tipo de operación
powhttp_graphql_inspectAnaliza e inspecciona operaciones GraphQL individuales
powhttp_graphql_errorsExtrae 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
VariableDescripciónPredeterminado
POWHTTP_BASE_URLDónde encontrar el servidor API de powhttphttp://localhost:7777
POWHTTP_PROXY_URLURL de proxy utilizada por los prompts al generar scrapers y depurarhttp://127.0.0.1:8890
LOG_LEVELNivel de verbosidad de los logs: debug, info, warn, errorinfo
LOG_FILEArchivo donde escribir los logs (vacío = imprimir en consola)"" (consola)
Ajuste de Rendimiento
VariableDescripciónPredeterminado
HTTP_CLIENT_TIMEOUT_MSTiempo de espera para respuestas de API (milisegundos)10000 (10s)
FETCH_WORKERSCuántas entradas obtener en paralelo16
ENTRY_CACHE_MAX_ITEMSCuántas entradas mantener en caché de memoria512
REFRESH_INTERVAL_MSCada cuánto comprobar nuevas entradas (milisegundos)2000 (2s)
REFRESH_TIMEOUT_MSTiempo máximo para operación de refresco de índice (milisegundos)15000 (15s)
FRESHNESS_THRESHOLD_MSConsiderar datos obsoletos después de esta cantidad de milisegundos500 (0.5s)
Límites de Datos
VariableDescripciónPredeterminado
TOOL_MAX_BYTES_DEFAULTTamaño máximo del cuerpo de respuesta que devuelven las herramientas (bytes)2000000 (2MB)
RESOURCE_MAX_BODY_BYTESTamaño máximo del cuerpo para recursos MCP (bytes)65536 (64KB)
TLS_MAX_EVENTS_DEFAULTMáximo de eventos de handshake TLS a devolver200
H2_MAX_EVENTS_DEFAULTMáximo de tramas HTTP/2 a devolver200
BOOTSTRAP_TAIL_LIMITMáximo de entradas a cargar al iniciar20000
Optimización de Tokens de IA
VariableDescripciónPredeterminado
COMPACT_MAX_ARRAY_ITEMSEn modo compacto, recortar arrays a esta cantidad de elementos3
COMPACT_MAX_STRING_LENTruncar cadenas más largas que esto (caracteres)500
COMPACT_MAX_DEPTHProfundidad máxima de anidamiento para compactación (0 = ilimitado)0
DEFAULT_SEARCH_LIMITMáximo de resultados predeterminado para search_entries10
DEFAULT_QUERY_LIMITMáximo de entradas predeterminado para query_body20
DEFAULT_CLUSTER_LIMITMáximo de clústeres predeterminado para extract_endpoints15
DEFAULT_EXAMPLES_PER_ITEMEjemplos predeterminados mostrados por clúster3
Rotación de Logs
VariableDescripciónPredeterminado
LOG_MAX_SIZE_MBRotar log cuando alcance este tamaño (MB)10
LOG_MAX_BACKUPSConservar esta cantidad de archivos de log antiguos5
LOG_MAX_AGE_DAYSEliminar archivos de log más antiguos que esto (días)28
LOG_COMPRESSComprimir 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 menor
  • fix: - incremento de versión patch
  • perf: - incremento de versión patch
  • revert: - incremento de versión patch
  • feat!: o BREAKING 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 StringString (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