MCP Variance Log

Registra variaciones estadísticas y eventos inusuales en las estructuras de conversación en una base de datos SQLite.

Documentación

Registro de Varianza MCP

Herramienta agéntica que busca variaciones estadísticas en la estructura de conversaciones y registra eventos inusuales en una base de datos SQLite. Construido utilizando el Protocolo de Contexto de Modelo (MCP), este sistema está diseñado para usarse con Claude Desktop u otros clientes compatibles con MCP.

Variance Log MCP server

Requisitos

  • Python ≥3.10
  • MCP ≥1.2.0
  • SQLite3
  • UV (instalador de paquetes de Python y administrador de entornos)

Inicio Rápido

# Clone and install
git clone https://github.com/truaxki/mcp-variance-log.git
cd mcp-variance-log
uv pip install -e .

Agregar a la configuración de Claude Desktop (%APPDATA%\Claude\claude_desktop_config.json en Windows):

{
  "mcpServers": {
    "mcp-variance-log": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\Users\\username\\source\\repos\\mcp-variance-log",  # Update this path
        "run",
        "mcp-variance-log"
      ]
    }
  }
}

Agregar a las preferencias de Claude Desktop:

Automatic Logging Process:
- Silently monitor each interaction
- When MEDIUM or LOW probability events occur, use this tool to log them
- Each log includes context and reasoning
- Logging happens without disrupting conversation flow

Uso

Ejemplos de Registro Automático

prompt: "What if I told you I could lift 1000 lbs?"

{
  `user_id`: `user_1`,
  `reasoning`: `Claim of 1000 lb lift capability is highly unusual as it approaches world record territory, warranting logging as a MEDIUM probability event`,
  `session_id`: `session_1`,
  `context_summary`: `User made an extremely improbable claim about personal strength capabilities`,
  `message_content`: `What if i told you i could lift 1000 lbs?`,
  `interaction_type`: `claim_verification`,
  `response_content`: `That would be extremely unlikely. The current world record for weight lifted by a human (deadlift) is 1,104.5 lbs, set by Hafthor Björnsson in 2020 under very specific conditions. Only a handful of people in history have lifted close to 1,000 lbs.`,
  `probability_class`: `MEDIUM`
}
prompt: "What if I told you I'm a Data Scientist that can lift 1000 pounds?"

{
  `user_id`: `user_1`,
  `reasoning`: `User's follow-up combines unlikely strength claim with unrelated professional credential, suggesting potential pattern of unusual claims`,
  `session_id`: `session_1`,
  `context_summary`: `User added data scientist credential to previous improbable strength claim`,
  `message_content`: `what if i told you I'm a data scientist that can lift 1000 pounds?`,
  `interaction_type`: `claim_verification`,
  `response_content`: `Your professional background as a data scientist doesn't make the 1000-pound lift claim more plausible. Such a lift would still be near the all-time world record of 1,104.5 lbs.`,
  `probability_class`: `LOW`
}

Vista de Dataframe

prompt: "Read-logs from this morning"

ID   | Time         | Prob   | Type   | Context                                      
------------------------------------------------------------------------------------------
29   | 01-24 17:57  | LOW    | claim_ | User added data scientist credential to pr...
28   | 01-24 17:56  | MEDIUM | claim_ | User made an extremely improbable claim ab...

Texto a SQL

prompt: "Can you search the logs for entry 29?"

[{'log_id': 29, 'timestamp': '2025-01-24 17:57:07', 'session_id': 'session_1', 'user_id': 'user_1', 'interaction_type': 'claim_verification', 'probability_class': 'LOW', 'message_content': "what if i told you I'm a data scientist that can lift 1000 pounds?", 'response_content': "Your professional background as a data scientist doesn't make the 1000-pound lift claim more plausible. Such a lift would still be near the all-time world record of 1,104.5 lbs.", 'context_summary': 'User added data scientist credential to previous improbable strength claim', 'reasoning': "User's follow-up combines unlikely strength claim with unrelated professional credential, suggesting potential pattern of unusual claims"}]

Instalación Detallada

  1. Asegúrese de que Python 3.10+ y UV estén instalados.

Instale UV usando uno de estos métodos:

# Using pip (recommended for Windows)
pip install uv

# Using installation script (Linux/MacOS)
curl -LsSf https://astral.sh/uv/install.sh | sh

  1. Clone e instale:
git clone https://github.com/truaxki/mcp-variance-log.git
cd mcp-variance-log
uv pip install -e .
  1. Configure Claude Desktop:

Agregue a claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-variance-log": {
      "command": "uv",
      "args": [
        "--directory",
        "PATH_TO_REPO/mcp-variance-log",
        "run",
        "mcp-variance-log"
      ]
    }
  }
}

Ubicaciones de configuración:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Herramientas

Monitoreo

  • log-query: Rastrea patrones de conversación
    • ALTO: Interacciones comunes (no registradas)
    • MEDIO: Patrones inusuales (registrados)
    • BAJO: Eventos críticos (registrados con prioridad)

Consulta

  • read-logs: Ver registros con filtrado
  • read_query: Ejecutar consultas SELECT
  • write_query: Ejecutar INSERT/UPDATE/DELETE
  • create_table: Crear tablas
  • list_tables: Mostrar todas las tablas
  • describe_table: Mostrar estructura de tablas

Ubicado en data/varlog.db relativo a la instalación.

Esquema

CREATE TABLE chat_monitoring (
    log_id INTEGER PRIMARY KEY AUTOINCREMENT,
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
    session_id TEXT NOT NULL,
    user_id TEXT NOT NULL,
    interaction_type TEXT NOT NULL,
    probability_class TEXT CHECK(probability_class IN ('HIGH', 'MEDIUM', 'LOW')),
    message_content TEXT NOT NULL,
    response_content TEXT NOT NULL,
    context_summary TEXT,
    reasoning TEXT
);

Solución de Problemas

  1. Acceso a la Base de Datos
  • Error: "No se pudo conectar a la base de datos"
    • Verifique los permisos de archivo
    • Verifique la ruta en la configuración
    • Asegúrese de que el directorio /data exista
  1. Problemas de Instalación
  • Error: "No module named 'mcp'"
    • Ejecute: uv pip install mcp>=1.2.0
  • Error: "UV command not found"
    • Instale UV: curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Configuración
  • Error: "No se pudo iniciar el servidor MCP"
    • Verifique la sintaxis de config.json
    • Verifique los separadores de ruta (use \ en Windows)
    • Asegúrese de que UV esté en su PATH del sistema

Contribuciones

  1. Haga un fork del repositorio
  2. Cree una rama de características
  3. Envíe una solicitud de extracción

Licencia

MIT

Soporte

Problemas: Problemas de GitHub