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 sin interfaz gráfica. Captura el tráfico en memoria y lo expone a un LLM a través de MCP; el LLM es la interfaz para inspeccionar, guardar y modificar el tráfico. Es una capa de datos para comprender una API, no una interfaz gráfica ni un generador de clientes de API por sí mismo.

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

CapacidadHerramientas MCPQué permite
Inspeccionar tráfico capturadoget_stats, search_exchanges, get_exchange_detailMapear endpoints, métodos, cabeceras, cuerpos JSON, 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 del 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, establecer o eliminar cabeceras de solicitud y redactar cuerpos de solicitud.
Ejecutar lógica personalizada en C#add_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 entregados 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, error 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 pedirle a un LLM que escriba su primer script.

Cuando un script de respuesta modifica el tráfico, ReqTree conserva la respuesta original del servidor 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 una versión del servidor.

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 más simple. ReqTree confía en su certificado raíz para el usuario actual, apunta la configuración de proxy de la máquina hacia sí mismo y comienza a grabar tráfico de navegadores y aplicaciones. Use Ctrl+C para detenerlo limpiamente; esto restaura la configuración de proxy del sistema anterior.

Luego agregue ReqTree como un servidor MCP HTTP en la configuración MCP de su cliente LLM. Los detalles de conexión portátiles están en Conectando 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. Dígale al LLM: “Inicia una captura nueva para example.com; borra cualquier intercambio existente primero.”
  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. Dígale al LLM: “He completado el flujo de inicio de sesión. Detén la captura y recrea el flujo de autenticación del sitio web observado como un cliente de API. Usa marcadores de posición para credenciales y secretos, no reutilices tokens capturados y no inventes endpoints.”

ReqTree le 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, un conjunto de pruebas de API, un servicio de prueba, un esquema, fixtures o un 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 realizó. Capture flujos adicionales deliberadamente para otros roles, errores, verificaciones de dispositivos o permisos antes de pedirle 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, agrega 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 servidor 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 servidor.”
  • Bloquear tráfico: “Bloquea solicitudes a analytics.example.com y registra cada coincidencia.”

Para cambios condicionales o calculados, el LLM puede generar un script personalizado en C# 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 agregue 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, de forma predeterminada, el proxy de captura de todo el sistema.
reqtree open <file.reqtree>Abre una captura guardada para lectura; no intercepta ni graba tráfico.
reqtree helpImprime el manual integrado. Funciona sin un repositorio o un servidor en ejecución.

Opciones de inicio

Los valores de las 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 cada intercambio completado.
--pausedoffInicia el proxy con la grabación desactivada. El tráfico, las reglas y los scripts aún se ejecutan.
--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>ilimitadoDetiene 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-proxyoffEscucha sin cambiar la configuración de proxy de la máquina; configure un cliente manualmente.
--no-cert-trustoffGenera y exporta el certificado raíz sin agregarlo al almacén de confianza del usuario actual.
-h o --helpoffMuestra el manual integrado. reqtree help es la forma más clara.

Modos de inicio comunes

ObjetivoComando
Capturar todo en esta máquinareqtree start
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 solicitereqtree start --paused
Leer una captura anteriorreqtree open C:\path\to\capture.reqtree

Para el modo de 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.

Conectando 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 para 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 agregue 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 se 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 de 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 las compensaciones clave. PROGRESS.md registra el estado actual y errores anteriores. Mantenga este README y reqtree help alineados siempre que cambie la CLI.