Memory Custom : PouchDB

Extiende el servidor Memory con PouchDB para un almacenamiento robusto basado en documentos, rutas de archivos de memoria personalizadas y registro de marcas de tiempo de interacción.

Documentación

Memory Custom : PouchDB 🧠

smithery badge

Este proyecto añade nuevas funcionalidades al servidor de memoria ofrecido por el equipo de MCP. Permite la creación y gestión de un grafo de conocimiento que captura interacciones mediante un modelo de lenguaje (LLM). 🚀

Este repositorio se bifurcó de https://github.com/BRO3886/mcp-memory-custom, que fue un excelente punto de partida; gracias de nuevo por corregir las marcas de tiempo. El objetivo de este repositorio era más bien solucionar el problema de un archivo JSON cada vez más grande para el contexto.

Nuevas características ✨

1. Integración con PouchDB 💾

  • El servidor ahora utiliza PouchDB para un almacenamiento robusto basado en documentos
  • ¿Por qué?: Mejor consistencia de datos, control de versiones integrado y mejor rendimiento para conjuntos de datos grandes
  • Mantiene una copia de seguridad en archivo para compatibilidad

2. Rutas de memoria personalizadas 📁

  • Los usuarios ahora pueden especificar diferentes rutas de archivos de memoria para varios proyectos
  • ¿Por qué?: Esta característica mejora la organización y gestión de los datos de memoria, permitiendo un almacenamiento de memoria específico por proyecto

3. Marca de tiempo ⏰

  • El servidor ahora genera marcas de tiempo para las interacciones
  • ¿Por qué?: Las marcas de tiempo permiten rastrear cuándo se creó o modificó cada memoria, proporcionando mejor contexto e historial para los datos almacenados

Primeros pasos 🚀

Requisitos previos 🔧

  • Node.js (versión 16 o superior)
  • PouchDB (se instala automáticamente como dependencia)

Instalación mediante Smithery 📦

Para instalar Knowledge Graph Memory Server para Claude Desktop automáticamente mediante Smithery:

npx -y @smithery/cli install @bneil/mcp-memory-pouchdb --client claude

Instalación 🛠️

  1. Clona el repositorio:

    git clone git@github.com:bneil/mcp-memory-pouchdb.git
    cd mcp-memory-pouchdb
    
  2. Instala las dependencias:

    npm install
    

Configuración ⚙️

El servidor requiere que se establezcan dos variables de entorno:

  1. MEMORY_FILE_PATH: La ruta absoluta donde se almacenará el archivo de respaldo de memoria
  2. POUCHDB_PATH: La ruta absoluta donde se almacenará la base de datos PouchDB

Ejemplo de configuración en tu claude_desktop_config.json / .cursor/mcp.json:

{
  "mcpServers": {
    "memory": {
      "command": "node",
      "args": ["/path/to/mcp-memory-pouchdb/dist/index.js"],
      "env": {
        "MEMORY_FILE_PATH": "/path/to/custom/memory.json",
        "POUCHDB_PATH": "/path/to/custom/pouchdb_directory",
        "DISABLE_MEMORY_FILE": "true"
      }
    }
  }
}

El servidor no se iniciará si no se establece alguna de las variables de entorno. 🚫

Variables de entorno opcionales:

  • POUCHDB_OPTIONS: Cadena JSON de opciones de configuración adicionales de PouchDB
  • DISABLE_MEMORY_FILE: Establecer en "true" para deshabilitar el guardado en el archivo memory.json (usar solo PouchDB para el almacenamiento)

Ejecutando el servidor 🚀

Actualizando el archivo json del servidor mcp 📝

Añade esto a tu archivo claude_desktop_config.json / .cursor/mcp.json:

{
  "mcpServers": {
    "memory": {
      "command": "node",
      "args": ["/path/to/mcp-memory-pouchdb/dist/index.js"],
      "env" : {
        "MEMORY_FILE_PATH":"/home/.../local_dbs/memory.json",
        "POUCHDB_PATH":"/home/.../local_dbs/pouchdb"
      }
    }
  }
}

Cambios en el prompt del sistema:

Follow these steps for each interaction:

0. Memory Initialization:
   - At startup, execute a read_graph function to initialize memory access
   - If memory is empty, create a default entity for the user with basic placeholder info
   - Run initialization sequence: read_graph → create_entities → read_graph

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"
   - Verify memory access is functioning properly

3. Memory Attention:
   - 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, add timestamps to wherever required. You can get current timestamp via get_current_time
     b) Connect them to the current entities using relations
     c) Store facts about them as observations, add timestamps to observations via get_current_time

5. Error Recovery:
   - If memory retrieval fails, execute read_graph function immediately
   - Log any memory access failures for debugging
   - Continue the conversation with best available information

6. Memory Validation:
   - Periodically verify that memory access is functional by checking for core entities
   - If validation fails, attempt reconnection via read_graph

IMPORTANT: Provide a helpful and engaging response, asking relevant questions to encourage user engagement. Update the memory during the interaction, if required, based on the new information gathered (point 3).

Ejecutando el servidor localmente 💻

Para iniciar el servidor de memoria de Knowledge Graph, ejecuta:

npm run build
node dist/index.js

El servidor escuchará solicitudes a través de la entrada/salida estándar.

Endpoints de la API 🔌

El servidor expone varias herramientas que se pueden llamar con parámetros específicos:

  • Get Current Time ⏰
  • Set Memory File Path 📁
  • Create Entities ➕
  • Create Relations 🔗
  • Add Observations 📝
  • Delete Entities ❌
  • Delete Observations 🗑️
  • Delete Relations 🔗
  • Read Graph 📖
  • Search Nodes 🔍
  • Open Nodes 🔓

Agradecimientos 🙏

  • Inspirado en el servidor de memoria de Anthropic
  • Impulsado por PouchDB para un almacenamiento de datos robusto 💾