Capturando
Una pestaña Network de DevTools para tu Ollama local.
Observa el tráfico HTTP entre tus herramientas y un Ollama local y lo muestra como un inspector de solicitudes. Cualquier cliente MCP lee esa captura, en modo solo lectura, para que un LLM responda preguntas sobre tu inferencia.
Por solicitud
Lee el tráfico en sí, así que una extensión de editor, un cliente de código cerrado y un script propio aparecen todos por igual. Cada uno conserva la configuración que ya tiene.
La captura es inspección de paquetes mediante WinDivert, en la capa de red, por debajo de la aplicación que originó la solicitud. La aplicación reensambla el flujo TCP, analiza el intercambio HTTP y deriva sus métricas de la respuesta que realmente observó.
Tu proyecto conserva intactas sus dependencias y sus imports, así que cualquier herramienta de tu máquina se observa tal como viene. Una extensión de editor o un cliente de código cerrado aparecen en los mismos términos que el código propio.
La captura lee una copia en el cable, fuera del camino de la solicitud. Tu petición llega a Ollama por la ruta de siempre, a la velocidad de siempre, y si el inspector deja de funcionar la inferencia sigue su curso.
Tu cliente sigue apuntando a 127.0.0.1:11434. Al abrir la aplicación el tráfico aparece; al cerrarla, la configuración queda tal como la dejaste.
Lo que inspeccionas es lo que recibió Ollama. El objeto de solicitud que construyó tu código viaja intacto, y el payload en pantalla es el que cruzó el cable, hasta los fragmentos de streaming, reensamblados en orden.
Cada cifra proviene de la respuesta que la aplicación capturó, así que dos ejecuciones se pueden comparar y la diferencia entre ellas es real. Un campo sin nada que leer muestra un guion hasta que llega la respuesta.
Una misma solicitud, con treinta y un segundos de diferencia. Los cuatro campos esperan hasta tener algo que leer, así que un número en pantalla indica que la medición existe.
| Campo | De dónde sale el valor |
|---|---|
| Latencia de la solicitud | Medida sobre el intercambio capturado |
| Conteo de tokens | Leído del cuerpo de la respuesta |
| Tokens por segundo | Derivado de esos dos, nunca estimado |
| Código de estado HTTP | Observado en el cable |
| Cuerpos de solicitud y respuesta | Almacenados textualmente, hasta 16 MiB |
| Fragmentos de streaming | Reensamblados en orden: 1017 en la captura anterior |
| Modelos cargados | Confirmados contra la API de Ollama |
El contrato es escalonado, así que un cliente gasta contexto solo en lo que pidió. Cada llamada acota la pregunta que responde la siguiente, y un cuerpo llega una vez que el modelo eligió un identificador estable.
resolve_inference_contextOrientación. Qué modelos, endpoints y estados existen, y en qué rango de tiempo.
Entradas
Salidas
Es barata porque: Solo agregados. Nunca incluye un cuerpo, una cabecera ni detalle por inferencia.
search_inferencesAcotamiento. Paginar entre candidatos bajo filtros combinados con AND.
Entradas
Salidas
Es barata porque: Los resúmenes solo llevan campos estables; las cabeceras pesadas y los cuerpos se omiten por construcción.
get_inference_contextDetalle acotado. Un identificador conocido, solo las secciones solicitadas y un cuerpo leído por porciones.
Entradas
Salidas
Es barata porque: El cliente define la ventana de bytes, así que un cuerpo grande llega en varias llamadas, en las porciones que solicitó.
at DESCLa inferencia más reciente primero.
id DESCVarias inferencias pueden compartir la misma marca de tiempo, así que esto mantiene firme el límite de una página entre dos consultas idénticas.
El cursor lleva
Un cursor reutilizado con filtros distintos se rechaza.
{
"mcpServers": {
"dllm-network": {
"command": "C:\\path\\to\\dllm-network-mcp.exe"
}
}
}El sidecar resuelve por sí mismo la ubicación de la base de datos. Regístralo con la ruta absoluta y reinicia el cliente.
La interfaz gráfica y el sidecar MCP son dos procesos del sistema operativo con ciclos de vida independientes: la interfaz la inicias tú y el sidecar lo inicia tu cliente MCP cuando lo necesita. Se encuentran en un único archivo SQLite en disco, y eso es lo que permite que un mismo almacén cruce esa separación.
El archivo que abren ambos procesos
%LOCALAPPDATA%\dllm-network\telemetry.dbdllm-networkOpciones del DSN
Se abre una vez por sesión mediante sqlite.Open. Es la única conexión autorizada a escribir, y las escrituras llegan agrupadas desde una goroutine de drenaje independiente para que el bucle de captura nunca espere al disco.
dllm-network-mcpOpciones del DSN
Un binario stdio independiente y sin banderas, iniciado por el cliente MCP. Resuelve la ruta de la base de datos con el mismo resolutor compartido que usa la interfaz, de modo que ambos nunca puedan discrepar sobre dónde está el archivo.
Todo lo que conectes al sidecar (Claude Desktop, Claude Code, un cliente propio) llega a tu telemetría por una conexión en la que SQLite se niega a aceptar una sentencia de escritura, y una prueba de regresión lo mantiene así. Apunta un LLM a tu historial de inferencias sabiendo que lo peor que puede hacer es leerlo.
Cada una es una propiedad del binario publicado, porque el linter detiene una compilación que la rompería.
El lado de lectura depende de un puerto de lectura, así que «solo lectura» es una forma del programa. Eso es lo que hace seguro entregar el sidecar a un LLM.
mcp-not-captureinternal/mcp/**El SDK de MCP existe en un único lugar, así que un cambio incompatible aguas arriba tiene un solo paquete donde aterrizar. Todos los demás paquetes compilan y se prueban sin el SDK presente.
sdk-confined-to-mcpeverywhere except internal/mcp/**El tipo de inferencia se mantiene libre de todo controlador de almacenamiento, así que una prueba puede ejercitar el dominio sin nada corriendo detrás. Cómo se guarda una inferencia es asunto exclusivo del paquete sqlite.
inference-domain-purityinternal/telemetry/inference/**El mismo tipo se mantiene libre del SDK de MCP, así que lo que un protocolo quiere que parezca una inferencia nunca llega al modelo. Agregar un transporte HTTP junto al de stdio no toca código de dominio.
inference-domain-purityinternal/telemetry/inference/**Cada nombre de regla de arriba es una línea en la configuración del linter del repositorio, así que cada límite aquí se puede comprobar.
Un repositorio, dos artefactos: la aplicación de bandeja que captura y el binario stdio que sirve lo capturado.
$ go build -o dllm-network-mcp.exe ./cmd/dllm-network-mcpLa aplicación de bandeja, el sidecar MCP y la tubería de captura. Apache 2.0.
El flujo de datos, la junta WAL y los cuatro límites impuestos, en las propias palabras del repositorio.
Compilar, registrar y usar el servidor MCP; la referencia de las tres herramientas y la resolución de problemas.
La semántica de confirmado frente a inferido y cómo se etiqueta cada campo en modo pasivo.