Knowledge Graph Memory Server

Permite memoria persistente para Claude mediante un grafo de conocimiento almacenado en archivos JSON locales.

Documentación

Servidor de Memoria de Grafo de Conocimiento

smithery badge

Una implementación básica de memoria persistente utilizando un grafo de conocimiento local. Esto permite que Claude recuerde información sobre el usuario entre chats y aprenda de errores pasados mediante un sistema de lecciones.

Knowledge Graph Memory Server MCP server

Conceptos Clave

Entidades

Las entidades son los nodos principales en el grafo de conocimiento. Cada entidad tiene:

  • Un nombre único (identificador)
  • Un tipo de entidad (por ejemplo, "persona", "organización", "evento")
  • Una lista de observaciones

Ejemplo:

{
  "name": "John_Smith",
  "entityType": "person",
  "observations": ["Speaks fluent Spanish"]
}

Relaciones

Las relaciones definen conexiones dirigidas entre entidades. Siempre se almacenan en voz activa y describen cómo interactúan o se relacionan las entidades entre sí.

Ejemplo:

{
  "from": "John_Smith",
  "to": "Anthropic",
  "relationType": "works_at"
}

Observaciones

Las observaciones son piezas discretas de información sobre una entidad. Son:

  • Almacenadas como cadenas de texto
  • Adjuntas a entidades específicas
  • Pueden añadirse o eliminarse de forma independiente
  • Deben ser atómicas (un hecho por observación)

Ejemplo:

{
  "entityName": "John_Smith",
  "observations": [
    "Speaks fluent Spanish",
    "Graduated in 2019",
    "Prefers morning meetings"
  ]
}

Lecciones

Las lecciones son entidades especiales que capturan conocimiento sobre errores y sus soluciones. Cada lección tiene:

  • Un nombre único (identificador)
  • Información del patrón de error (tipo, mensaje, contexto)
  • Pasos de solución y verificación
  • Seguimiento de la tasa de éxito
  • Contexto ambiental
  • Metadatos (severidad, marcas de tiempo, frecuencia)

Ejemplo:

{
  "name": "NPM_VERSION_MISMATCH_01",
  "entityType": "lesson",
  "observations": [
    "Error occurs when using incompatible package versions",
    "Affects Windows environments specifically",
    "Resolution requires version pinning"
  ],
  "errorPattern": {
    "type": "dependency",
    "message": "Cannot find package @shadcn/ui",
    "context": "package installation"
  },
  "metadata": {
    "severity": "high",
    "environment": {
      "os": "windows",
      "nodeVersion": "18.x"
    },
    "createdAt": "2025-02-13T13:21:58.523Z",
    "updatedAt": "2025-02-13T13:22:21.336Z",
    "frequency": 1,
    "successRate": 1.0
  },
  "verificationSteps": [
    {
      "command": "pnpm add shadcn@latest",
      "expectedOutput": "Successfully installed shadcn",
      "successIndicators": ["added shadcn"]
    }
  ]
}

API

Herramientas

  • create_entities

    • Crear múltiples entidades nuevas en el grafo de conocimiento
    • Entrada: entities (array de objetos)
      • Cada objeto contiene:
        • name (cadena): Identificador de la entidad
        • entityType (cadena): Clasificación de tipo
        • observations (cadena[]): Observaciones asociadas
    • Ignora entidades con nombres existentes
  • create_relations

    • Crear múltiples relaciones nuevas entre entidades
    • Entrada: relations (array de objetos)
      • Cada objeto contiene:
        • from (cadena): Nombre de la entidad fuente
        • to (cadena): Nombre de la entidad destino
        • relationType (cadena): Tipo de relación en voz activa
    • Omite relaciones duplicadas
  • add_observations

    • Añadir nuevas observaciones a entidades existentes
    • Entrada: observations (array de objetos)
      • Cada objeto contiene:
        • entityName (cadena): Entidad destino
        • contents (cadena[]): Nuevas observaciones a añadir
    • Devuelve las observaciones añadidas por entidad
    • Falla si la entidad no existe
  • delete_entities

    • Eliminar entidades y sus relaciones
    • Entrada: entityNames (cadena[])
    • Eliminación en cascada de relaciones asociadas
    • Operación silenciosa si la entidad no existe
  • delete_observations

    • Eliminar observaciones específicas de entidades
    • Entrada: deletions (array de objetos)
      • Cada objeto contiene:
        • entityName (cadena): Entidad destino
        • observations (cadena[]): Observaciones a eliminar
    • Operación silenciosa si la observación no existe
  • delete_relations

    • Eliminar relaciones específicas del grafo
    • Entrada: relations (array de objetos)
      • Cada objeto contiene:
        • from (cadena): Nombre de la entidad fuente
        • to (cadena): Nombre de la entidad destino
        • relationType (cadena): Tipo de relación
    • Operación silenciosa si la relación no existe
  • read_graph

    • Leer todo el grafo de conocimiento
    • No requiere entrada
    • Devuelve la estructura completa del grafo con todas las entidades y relaciones
  • search_nodes

    • Buscar nodos basándose en la consulta
    • Entrada: query (cadena)
    • Busca en:
      • Nombres de entidades
      • Tipos de entidades
      • Contenido de observaciones
    • Devuelve entidades coincidentes y sus relaciones
  • open_nodes

    • Recuperar nodos específicos por nombre
    • Entrada: names (cadena[])
    • Devuelve:
      • Entidades solicitadas
      • Relaciones entre entidades solicitadas
    • Omite silenciosamente nodos inexistentes

Herramientas de Gestión de Lecciones

  • create_lesson

    • Crear una nueva lección a partir de un error y su solución
    • Entrada: lesson (objeto)
      • Contiene:
        • name (cadena): Identificador único
        • entityType (cadena): Debe ser "lesson"
        • observations (cadena[]): Notas sobre el error y la solución
        • errorPattern (objeto): Detalles del error
          • type (cadena): Categoría del error
          • message (cadena): Mensaje de error
          • context (cadena): Dónde ocurrió el error
          • stackTrace (cadena, opcional): Traza de pila
        • metadata (objeto): Información adicional
          • severity ("low" | "medium" | "high" | "critical")
          • environment (objeto): Detalles del sistema
          • frequency (número): Veces encontrado
          • successRate (número): Tasa de éxito de la solución
        • verificationSteps (array): Verificación de la solución
          • Cada paso contiene:
            • command (cadena): Acción a realizar
            • expectedOutput (cadena): Resultado esperado
            • successIndicators (cadena[]): Marcadores de éxito
    • Inicializa automáticamente las marcas de tiempo de metadatos
    • Valida todos los campos requeridos
  • find_similar_errors

    • Encontrar errores similares y sus soluciones
    • Entrada: errorPattern (objeto)
      • Contiene:
        • type (cadena): Categoría del error
        • message (cadena): Mensaje de error
        • context (cadena): Contexto del error
    • Devuelve lecciones coincidentes ordenadas por tasa de éxito
    • Utiliza coincidencia difusa para mensajes de error
  • update_lesson_success

    • Actualizar el seguimiento de éxito de una lección
    • Entrada:
      • lessonName (cadena): Lección a actualizar
      • success (booleano): Si la solución funcionó
    • Actualiza:
      • Tasa de éxito (promedio ponderado)
      • Contador de frecuencia
      • Marca de tiempo de última actualización
  • get_lesson_recommendations

    • Obtener lecciones relevantes para el contexto actual
    • Entrada: context (cadena)
    • Busca en:
      • Tipo de error
      • Mensaje de error
      • Contexto del error
      • Observaciones de la lección
    • Devuelve lecciones ordenadas por:
      • Relevancia del contexto
      • Tasa de éxito
    • Incluye detalles completos de la solución

Gestión de Archivos

El servidor ahora maneja dos tipos de archivos:

  • memory.json: Almacena entidades y relaciones básicas
  • lesson.json: Almacena entidades de lecciones con patrones de error

Los archivos se dividen automáticamente si superan las 1000 líneas para mantener el rendimiento.

Configuración del Cliente MCP de Cursor

Para integrar este servidor de memoria con el cliente MCP de Cursor, sigue estos pasos:

  1. Clona el Repositorio:
git clone [repository-url]
cd [repository-name]
  1. Instala las Dependencias:
pnpm install
  1. Compila el Proyecto:
pnpm build
  1. Configura el Servidor:
  • Localiza la ruta completa al archivo del servidor compilado: /path/to/the/dist/index.js
  • Inicia el servidor usando Node.js: node /path/to/the/dist/index.js
  1. Actívalo en Cursor:
  • Usa el atajo de teclado Ctrl+Shift+P
  • Escribe "reload window" y selecciónalo
  • Espera unos segundos para que el servidor MCP se active
  • Selecciona el tipo stdio cuando se te solicite

El servidor de memoria debería estar ahora integrado con tu cliente MCP de Cursor y listo para usar.

Uso con Claude Desktop

Configuración

Añade esto a tu claude_desktop_config.json:

Docker

{
  "mcpServers": {
    "memory": {
      "command": "docker",
      "args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
    }
  }
}

NPX

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}

NPX con configuración personalizada

El servidor puede configurarse usando las siguientes variables de entorno:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ],
      "env": {
        "MEMORY_FILE_PATH": "/path/to/custom/memory.json"
      }
    }
  }
}
  • MEMORY_FILE_PATH: Ruta al archivo JSON de almacenamiento de memoria (por defecto: memory.json en el directorio del servidor)

Prompt del Sistema

El prompt para utilizar la memoria depende del caso de uso. Cambiar el prompt ayudará al modelo a determinar la frecuencia y los tipos de memorias creadas.

Aquí hay un ejemplo de prompt para la personalización de chat. Podrías usar este prompt en el campo "Instrucciones Personalizadas" de un Proyecto de Claude.ai.

Follow these steps for each interaction:

1. User Identification:
   - You should assume that you are interacting with default_user
   - If you have not identified default_user, proactively try to do so.

2. Memory Retrieval:
   - Always begin your chat by saying only "Remembering..." and retrieve all relevant information from your knowledge graph
   - Always refer to your knowledge graph as your "memory"

3. Memory
   - While conversing with the user, be attentive to any new information that falls into these categories:
     a) Basic Identity (age, gender, location, job title, education level, etc.)
     b) Behaviors (interests, habits, etc.)
     c) Preferences (communication style, preferred language, etc.)
     d) Goals (goals, targets, aspirations, etc.)
     e) Relationships (personal and professional relationships up to 3 degrees of separation)

4. Memory Update:
   - If any new information was gathered during the interaction, update your memory as follows:
     a) Create entities for recurring organizations, people, and significant events
     b) Connect them to the current entities using relations
     b) Store facts about them as observations

Compilación

Docker:

docker build -t mcp/memory -f src/memory/Dockerfile .

Licencia

Este servidor MCP está licenciado bajo la Licencia MIT. Esto significa que eres libre de usar, modificar y distribuir el software, sujeto a los términos y condiciones de la Licencia MIT. Para más detalles, consulta el archivo LICENSE en el repositorio del proyecto.

Nuevas Herramientas

  • create_lesson

    • Crear una nueva lección a partir de un error y su solución
    • Entrada: lesson (objeto)
      • Contiene patrón de error, pasos de solución y metadatos
      • Rastrea automáticamente el tiempo de creación y las actualizaciones
      • Verifica que los pasos de solución estén completos
  • find_similar_errors

    • Encontrar errores similares y sus soluciones
    • Entrada: errorPattern (objeto)
      • Contiene tipo de error, mensaje y contexto
      • Devuelve lecciones coincidentes ordenadas por tasa de éxito
      • Incluye soluciones relacionadas y pasos de verificación
  • update_lesson_success

    • Actualizar el seguimiento de éxito de una lección
    • Entrada:
      • lessonName (cadena): Lección a actualizar
      • success (booleano): Si la solución funcionó
    • Actualiza la tasa de éxito y las métricas de frecuencia
  • get_lesson_recommendations

    • Obtener lecciones relevantes para el contexto actual
    • Entrada: context (cadena)
    • Devuelve lecciones ordenadas por relevancia y tasa de éxito
    • Incluye detalles completos de la solución y pasos de verificación

GRAN CRÉDITO AL PROPIETARIO DE ESTE REPOSITORIO POR EL CÓDIGO BASE, LO MEJORÉ CON LECCIONES Y GESTIÓN DE ARCHIVOS

¡Muchas gracias! https://github.com/modelcontextprotocol/servers jerome3o-anthropic https://github.com/modelcontextprotocol/servers/tree/main/src/memory