Memory Custom : PouchDB

Estende o servidor Memory com PouchDB para armazenamento robusto baseado em documentos, caminhos de arquivos de memória personalizados e registro de data e hora de interações.

Documentação

Memory Custom : PouchDB 🧠

smithery badge

Este projeto adiciona novos recursos ao servidor Memory oferecido pela equipe MCP. Ele permite a criação e o gerenciamento de um grafo de conhecimento que captura interações por meio de um modelo de linguagem (LLM). 🚀

Este repositório foi bifurcado de https://github.com/BRO3886/mcp-memory-custom, que foi um ótimo ponto de partida; agradecemos novamente pela correção dos timestamps. O objetivo deste repositório foi mais resolver o problema de um arquivo json cada vez maior para contexto.

Novos Recursos ✨

1. Integração com PouchDB 💾

  • O servidor agora usa PouchDB para armazenamento robusto baseado em documentos
  • Por quê?: Melhor consistência de dados, versionamento integrado e desempenho aprimorado para grandes conjuntos de dados
  • Mantém backup em arquivo para compatibilidade

2. Caminhos de Memória Personalizados 📁

  • Os usuários agora podem especificar diferentes caminhos de arquivo de memória para vários projetos
  • Por quê?: Este recurso melhora a organização e o gerenciamento dos dados de memória, permitindo armazenamento de memória específico por projeto

3. Registro de Timestamps ⏰

  • O servidor agora gera timestamps para as interações
  • Por quê?: Os timestamps permitem rastrear quando cada memória foi criada ou modificada, fornecendo melhor contexto e histórico para os dados armazenados

Começando 🚀

Pré-requisitos 🔧

  • Node.js (versão 16 ou superior)
  • PouchDB (instalado automaticamente como dependência)

Instalação via Smithery 📦

Para instalar o Knowledge Graph Memory Server para Claude Desktop automaticamente via Smithery:

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

Instalação 🛠️

  1. Clone o repositório:

    git clone git@github.com:bneil/mcp-memory-pouchdb.git
    cd mcp-memory-pouchdb
    
  2. Instale as dependências:

    npm install
    

Configuração ⚙️

O servidor requer duas variáveis de ambiente para serem definidas:

  1. MEMORY_FILE_PATH: O caminho absoluto onde o arquivo de backup da memória será armazenado
  2. POUCHDB_PATH: O caminho absoluto onde o banco de dados PouchDB será armazenado

Exemplo de configuração no seu 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"
      }
    }
  }
}

O servidor falhará ao iniciar se qualquer uma das variáveis de ambiente não estiver definida. 🚫

Variáveis de ambiente opcionais:

  • POUCHDB_OPTIONS: String JSON com opções adicionais de configuração do PouchDB
  • DISABLE_MEMORY_FILE: Defina como "true" para desativar o salvamento no arquivo memory.json (use apenas PouchDB para armazenamento)

Executando o Servidor 🚀

Atualizando o arquivo json do servidor mcp 📝

Adicione isto ao seu arquivo 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"
      }
    }
  }
}

Alterações no System Prompt:

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).

Executando o Servidor Localmente 💻

Para iniciar o Knowledge Graph Memory Server, execute:

npm run build
node dist/index.js

O servidor escutará solicitações via entrada/saída padrão.

Endpoints da API 🔌

O servidor expõe várias ferramentas que podem ser chamadas com parâmetros específicos:

  • Obter Hora Atual
  • Definir Caminho do Arquivo de Memória 📁
  • Criar Entidades
  • Criar Relações 🔗
  • Adicionar Observações 📝
  • Excluir Entidades
  • Excluir Observações 🗑️
  • Excluir Relações 🔗
  • Ler Grafo 📖
  • Pesquisar Nós 🔍
  • Abrir Nós 🔓

Agradecimentos 🙏

  • Inspirado no servidor Memory da Anthropic
  • Alimentado por PouchDB para armazenamento robusto de dados 💾