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
| Capacidad | Herramientas MCP | Qué permite |
|---|---|---|
| Inspeccionar tráfico capturado | get_stats, search_exchanges, get_exchange_detail | Mapear endpoints, métodos, cabeceras, cuerpos JSON, códigos de estado y orden de solicitudes. |
| Controlar la captura | start_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 sesiones | save_capture, open_capture, list_captures | Preservar una captura útil o compararla con una ejecución posterior. |
| Modificar solicitudes coincidentes | add_rule, list_rules, set_rule_enabled | Bloquear, 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_format | Inspeccionar o reescribir solicitudes antes de que salgan y respuestas antes de que el cliente las reciba. |
| Coordinar sesiones | get_logs, log_note | Ver 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.
- Dígale al LLM: “Inicia una captura nueva para
example.com; borra cualquier intercambio existente primero.” - 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.
- 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 solicitudX-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
POSTaapi.example.com/orders, reemplaza el campo JSONtestModecontrue. Captura la solicitud original y dime qué intercambios cambiaron.” - Redirección de URL: “Redirige solicitudes de
https://api.example.com/v1/catalogahttps://staging-api.example.com/v1/cataloghasta que te diga que te detengas.” - Cuerpo de respuesta: “Para respuestas de
api.example.com/feature-flags, devuelve una versión connewCheckoutestablecido entrue, pero conserva la respuesta original del servidor en la captura.” - Respuesta simulada: “Simula
GET https://api.example.com/accountcon una respuesta JSON200para un usuario de prueba, sin enviar la solicitud al servidor.” - Bloquear tráfico: “Bloquea solicitudes a
analytics.example.comy 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
| Comando | Propó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 help | Imprime 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ón | Predeterminado | Propósito |
|---|---|---|
--port=<n> | 8888 | Puerto TCP para el proxy de captura. |
--mcp-port=<n> | 9999 | Puerto TCP para el servidor MCP de localhost. |
--console-view | off | Imprime una línea de resumen por cada intercambio completado. |
--paused | off | Inicia el proxy con la grabación desactivada. El tráfico, las reglas y los scripts aún se ejecutan. |
--buffer=<n> | 5000 | Máximo de intercambios retenidos en memoria; descarta los más antiguos cuando está lleno. 0 es ilimitado. |
--buffer-mb=<n> | 512 | Límite aproximado de memoria de cuerpos en MB; descarta los más antiguos cuando está lleno. 0 es ilimitado. |
--stop-after=<n> | ilimitado | Detiene la grabación después de este número de intercambios. El tráfico continúa fluyendo. |
--no-proxy | off | Inicia solo MCP. Inicie la interceptación más tarde con la herramienta MCP start_proxy. |
--no-system-proxy | off | Escucha sin cambiar la configuración de proxy de la máquina; configure un cliente manualmente. |
--no-cert-trust | off | Genera y exporta el certificado raíz sin agregarlo al almacén de confianza del usuario actual. |
-h o --help | off | Muestra el manual integrado. reqtree help es la forma más clara. |
Modos de inicio comunes
| Objetivo | Comando |
|---|---|
| Capturar todo en esta máquina | reqtree start |
| Capturar un cliente configurado manualmente | reqtree start --no-system-proxy --no-cert-trust |
| Conectar un LLM antes de interceptar tráfico | reqtree start --no-proxy |
| Iniciar la grabación solo cuando se solicite | reqtree start --paused |
| Leer una captura anterior | reqtree 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.
-
Inicie ReqTree:
reqtree start. -
Abra la configuración del servidor MCP de su cliente LLM y agregue un servidor HTTP remoto.
-
Ingrese estos valores:
Configuración Valor Nombre reqtreeTransporte Streamable HTTP (algunos clientes lo etiquetan simplemente como HTTP) URL http://127.0.0.1:9999Autenticación / cabeceras Ninguna -
Guarde o reconecte el cliente MCP, luego llame a
get_proxy_statuspara 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:
| Ruta | Contenido |
|---|---|
reqtree-root.pfx / reqtree-root.cer | El certificado raíz MITM generado. |
logs\reqtree-YYYYMMDD.log | El registro de actividad leído por get_logs. |
proxy-state.json | Presente 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.