ReqTree

Proxy de captura HTTP/HTTPS impulsado por LLM con herramientas MCP para inspeccionar tráfico, scriptear comportamiento y modificar solicitudes y respuestas.

Documentación

ReqTree

ReqTree es un proxy de captura HTTP/HTTPS y WebSocket sin interfaz gráfica. Captura tráfico HTTP/1.x y HTTP/2, además de tramas WebSocket decodificadas, en memoria y las expone a un LLM a través de MCP; el LLM es la interfaz para inspeccionar, guardar y modificar tráfico. Es una capa de datos para entender una API, no una GUI ni un generador de clientes API por sí mismo.

Lo que un LLM puede hacer a través de ReqTree

CapacidadHerramientas MCPQué habilita
Inspeccionar tráfico capturadoget_stats, search_exchanges, get_exchange_detailMapear endpoints, métodos, protocolos, cabeceras, cuerpos JSON, tramas WebSocket, códigos de estado y orden de solicitudes.
Controlar la capturastart_capture, stop_capture, capture_window, clear_*Conservar solo una reproducción o un flujo de inicio de sesión en lugar de tráfico de fondo.
Guardar y comparar sesionessave_capture, open_capture, list_capturesPreservar una captura útil o compararla con una ejecución posterior.
Modificar solicitudes coincidentesadd_rule, list_rules, set_rule_enabledBloquear, simular, redirigir, añadir o eliminar cabeceras de solicitud y redactar cuerpos de solicitud.
Ejecutar lógica C# personalizadaadd_script, list_scripts, describe_script_formatInspeccionar o reescribir solicitudes antes de que salgan y respuestas antes de que el cliente las reciba.
Coordinar sesionesget_logs, log_noteVer quién cambió reglas compartidas, scripts o estado de captura.

Las reglas se ejecutan primero y son la opción simple y declarativa. Los scripts son la vía de escape: un script before_request puede reescribir una URL, cabeceras de solicitud o un cuerpo de solicitud, o responder a una solicitud localmente asignando exchange.StatusCode y exchange.ResponseBody. Un script before_response puede reescribir el estado, las cabeceras o el cuerpo entregado al cliente.

Esto también hace que ReqTree sea útil para pruebas de API: un LLM puede capturar un flujo real, identificar su contrato, generar un cliente o casos de prueba a partir de la evidencia, y usar reglas o scripts para ejercitar respuestas de éxito, fallo y casos límite.

Las cabeceras y los cuerpos deben asignarse, no mutarse en el lugar. Por ejemplo, asigne una nueva lista de cabeceras con exchange.RequestHeaders = [...]; no convierta y edite la lista existente. Llame a describe_script_format antes de pedir a un LLM que escriba su primer script.

Cuando un script de respuesta modifica el tráfico, ReqTree conserva la respuesta original del upstream en la captura y envía la versión modificada solo al cliente. Una respuesta simulada localmente se almacena como la respuesta, porque no existe versión upstream.

Inicio rápido: la configuración normal

Instale el .NET 10 SDK y luego compile una vez desde la raíz del repositorio:

dotnet build ReqTree.sln

Inicie ReqTree con su configuración predeterminada de todo el sistema:

.\src\ReqTree\bin\Debug\net10.0\reqtree.exe start

O, después de poner reqtree.exe en su PATH:

reqtree start

Este es el modo normal de todo el sistema. ReqTree confía en su certificado raíz para el usuario actual y la Máquina Local, luego usa la configuración de conexión WinINet activa de Windows para apuntar las aplicaciones conscientes de proxy hacia sí mismo. El proxy no necesita ejecutarse como Administrador. Use Ctrl+C para detenerlo limpiamente y restaurar la configuración de proxy anterior completa.

Luego agregue ReqTree como servidor MCP HTTP en la configuración MCP de su cliente LLM. Los detalles de conexión portátiles están en Conexión de un cliente MCP.

Ejemplos

Capturar un flujo de inicio de sesión y construir un cliente

Use esto solo para un sitio web, cuenta y tráfico que esté autorizado a inspeccionar. Las capturas pueden contener contraseñas, cookies, tokens de portador y datos personales; no envíe una captura sin redactar a un servicio no confiable ni la confirme en control de versiones.

  1. Diga al LLM: “Inicia una captura nueva para example.com; borra primero cualquier intercambio existente.”
  2. En su navegador o aplicación, cargue el sitio, inicie sesión con una cuenta de prueba, abra una página autenticada y luego cierre sesión.
  3. Diga al LLM: “He completado el flujo de inicio de sesión. Detén la captura y recrea el flujo de autenticación del sitio observado como cliente API. Usa marcadores de posición para credenciales y secretos, no reutilices tokens capturados y no inventes endpoints.”

ReqTree da al LLM los intercambios capturados. Puede inspeccionar su orden, URLs, métodos, JSON de solicitud y respuesta, cabeceras, cookies, transiciones de tokens y respuestas de error, y luego generar un cliente pequeño, suite de pruebas API, servicio de prueba, esquema, fixtures o mock a partir de esa evidencia. Guarde la evidencia cuando termine: “Guarda esta captura como example-sign-in.”

Una captura prueba solo la ruta que usted realizó. Capture flujos adicionales deliberadamente para otros roles, errores, comprobaciones de dispositivo o permisos antes de pedir al LLM que amplíe la implementación.

Modificaciones de ejemplo

Mientras prueba un sitio que está autorizado a modificar, pregunte directamente. Por ejemplo:

“Para solicitudes a api.example.com, añade la cabecera de solicitud X-Test-Mode: true. Sigue capturando para que pueda ver el resultado y dime cómo deshacer el cambio.”

El LLM puede crear una regla coincidente y luego deshabilitarla o eliminarla. Otros mensajes útiles incluyen:

  • Cuerpo de solicitud: “Para solicitudes POST a api.example.com/orders, reemplaza el campo JSON testMode con true. Captura la solicitud original y dime qué intercambios cambiaron.”
  • Redirección de URL: “Redirige solicitudes de https://api.example.com/v1/catalog a https://staging-api.example.com/v1/catalog hasta que te diga que te detengas.”
  • Cuerpo de respuesta: “Para respuestas de api.example.com/feature-flags, devuelve una versión con newCheckout establecido en true, pero conserva la respuesta original del upstream en la captura.”
  • Respuesta simulada: “Simula GET https://api.example.com/account con una respuesta JSON 200 para un usuario de prueba, sin enviar la solicitud al upstream.”
  • Bloquear tráfico: “Bloquea solicitudes a analytics.example.com y registra cada coincidencia.”

Para cambios condicionales o calculados, el LLM puede generar un script C# personalizado y pasarlo a ReqTree por usted. ReqTree ejecuta ese script antes de que una solicitud salga o antes de que una respuesta llegue al cliente. Por ejemplo: “Escribe y habilita un script que añada X-Preview: true solo cuando una URL de solicitud contenga /preview/; registra cada cambio y muéstrame el script primero.”

Comandos

ComandoPropósito
reqtree start [options]Inicia MCP y, por defecto, el proxy de captura de todo el sistema.
reqtree open <file.reqtree>Abre una captura guardada para lectura; no intercepta ni registra tráfico.
reqtree helpImprime el manual integrado. Funciona sin repositorio ni servidor en ejecución.

Opciones de inicio

Los valores de opciones siempre usan =, por ejemplo --mcp-port=9000.

OpciónPredeterminadoPropósito
--port=<n>8888Puerto TCP para el proxy de captura.
--mcp-port=<n>9999Puerto TCP para el servidor MCP de localhost.
--console-viewoffImprime una línea de resumen por intercambio completado.
--pausedoffInicia el proxy con grabación desactivada. El tráfico, las reglas y los scripts siguen ejecutándose.
--buffer=<n>5000Máximo de intercambios retenidos en memoria; descarta los más antiguos cuando está lleno. 0 es ilimitado.
--buffer-mb=<n>512Límite aproximado de memoria de cuerpos en MB; descarta los más antiguos cuando está lleno. 0 es ilimitado.
--stop-after=<n>unlimitedDetiene la grabación después de este número de intercambios. El tráfico continúa fluyendo.
--no-proxyoffInicia solo MCP. Inicie la interceptación más tarde con la herramienta MCP start_proxy.
--no-system-proxyoffModo cliente manual: deja la configuración de proxy de Windows intacta y configura un cliente explícitamente.
--no-cert-trustoffGenera y exporta el certificado raíz sin añadirlo a ningún almacén de confianza de Windows.
--user-cert-trustoffConfía en la raíz solo para la cuenta actual, evitando elevación para la instalación del certificado.
--machine-cert-trustonAlias de compatibilidad; la confianza de máquina completa ya es el predeterminado.
-h o --helpoffMuestra el manual integrado. reqtree help es la forma más clara.

Modos de inicio comunes

ObjetivoComando
Capturar tráfico HTTP/HTTPS de todo el sistemareqtree start
Limitar la confianza del certificado a esta cuentareqtree start --user-cert-trust
Capturar un cliente configurado manualmentereqtree start --no-system-proxy --no-cert-trust
Conectar un LLM antes de interceptar tráficoreqtree start --no-proxy
Iniciar la grabación solo cuando se pidareqtree start --paused
Leer una captura anteriorreqtree open C:\path\to\capture.reqtree

Para el modo cliente manual, apunte el cliente a http://localhost:8888. El certificado raíz aún se exporta a %LOCALAPPDATA%\ReqTree\reqtree-root.cer para que ese cliente pueda confiar en el tráfico HTTPS.

La confianza del certificado de máquina completa es el predeterminado y persiste después de que ReqTree salga. Windows puede pedir elevación una vez cuando ese certificado se instala por primera vez; las ejecuciones ordinarias del proxy permanecen sin elevación. La captura normal usa la configuración de proxy HTTP y HTTPS activa por conexión de WinINet, el mismo mecanismo que un proxy de Windows comparable. Las aplicaciones que ignoran la configuración de proxy de Windows, UDP y QUIC no se capturan, y los clientes TLS con fijación de certificados no pueden descifrarse. --no-system-proxy deja la configuración de Windows intacta para configuración explícita/manual del cliente.

Conexión de un cliente MCP

ReqTree habla Streamable HTTP directamente, por lo que cualquier cliente LLM que admita servidores MCP HTTP puede usarlo. No hay proceso puente ni comando que ejecutar desde la configuración del cliente.

  1. Inicie ReqTree: reqtree start.

  2. Abra la configuración del servidor MCP de su cliente LLM y añada un servidor HTTP remoto.

  3. Ingrese estos valores:

    ConfiguraciónValor
    Nombrereqtree
    TransporteStreamable HTTP (algunos clientes lo etiquetan simplemente como HTTP)
    URLhttp://127.0.0.1:9999
    Autenticación / cabecerasNinguna
  4. Guarde o reconecte el cliente MCP, luego llame a get_proxy_status para confirmar que está conectado.

Mantenga el puerto de la URL sincronizado con --mcp-port. Por ejemplo, si ReqTree inicia con --mcp-port=9000, configure http://127.0.0.1:9000 en su lugar. El endpoint es solo de loopback, por lo que el cliente debe ejecutarse en la misma máquina que ReqTree.

Varias sesiones LLM pueden conectarse a la vez; comparten una captura, un conjunto de reglas y scripts, y un registro de coordinación. get_logs muestra quién cambió qué.

Datos y recuperación

ReqTree almacena su certificado, registros y marcador de recuperación de proxy en %LOCALAPPDATA%\ReqTree:

RutaContenido
reqtree-root.pfx / reqtree-root.cerEl certificado raíz MITM generado.
logs\reqtree-YYYYMMDD.logEl registro de actividad leído por get_logs.
proxy-state.jsonPresente solo mientras ReqTree posee la configuración de proxy del sistema.

El tráfico capturado no se escribe allí automáticamente. Vive en memoria hasta que se llama a save_capture, y se pierde cuando ReqTree sale si no se guardó.

Si el internet parece detenerse después de un bloqueo o un cierre forzado, ejecute reqtree start nuevamente. ReqTree ve el marcador de recuperación obsoleto y restaura la configuración de proxy del sistema anterior antes de iniciar. La herramienta clean_stale_proxy_state proporciona la misma reparación bajo demanda.

Para contribuyentes y LLMs

AGENTS.md explica la arquitectura y las reglas del repositorio. DECISIONS.md explica los compromisos clave. PROGRESS.md registra el estado actual y errores anteriores. Mantenga este README y reqtree help alineados siempre que cambie la CLI.