Knowledge Graph Memory Server

Knowledge Graph Memory Server

Enhances the MCP memory server by implementing PouchDB for robust document storage and enabling the creation and management of a knowledge graph that captures interactions via language models.

Category
Visit Server

README

Memory Custom : PouchDB 🧠

smithery badge

This project adds new features to the Memory server offered by the MCP team. It allows for the creation and management of a knowledge graph that captures interactions via a language model (LLM). 🚀

This repo was forked from https://github.com/BRO3886/mcp-memory-custom which was a great starting point, thanks again for fixing timestamps. This repo's goal was more to fix the issue with an ever increasing json file for context.

New Features ✨

1. PouchDB Integration 💾

  • The server now uses PouchDB for robust document-based storage
  • Why?: Better data consistency, built-in versioning, and improved performance for large datasets
  • Maintains file backup for compatibility

2. Custom Memory Paths 📁

  • Users can now specify different memory file paths for various projects
  • Why?: This feature enhances organization and management of memory data, allowing for project-specific memory storage

3. Timestamping ⏰

  • The server now generates timestamps for interactions
  • Why?: Timestamps enable tracking of when each memory was created or modified, providing better context and history for the stored data

Getting Started 🚀

Prerequisites 🔧

  • Node.js (version 16 or higher)
  • PouchDB (automatically installed as a dependency)

Installing via Smithery 📦

To install Knowledge Graph Memory Server for Claude Desktop automatically via Smithery:

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

Installation 🛠️

  1. Clone the repository:

    git clone git@github.com:bneil/mcp-memory-pouchdb.git
    cd mcp-memory-pouchdb
    
  2. Install the dependencies:

    npm install
    

Configuration ⚙️

The server requires two environment variables to be set:

  1. MEMORY_FILE_PATH: The absolute path where the memory backup file will be stored
  2. POUCHDB_PATH: The absolute path where the PouchDB database will be stored

Example configuration in your 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"
      }
    }
  }
}

The server will fail to start if either environment variable is not set. 🚫

Optional environment variables:

  • POUCHDB_OPTIONS: JSON string of additional PouchDB configuration options
  • DISABLE_MEMORY_FILE: Set to "true" to disable saving to memory.json file (only use PouchDB for storage)

Running the Server 🚀

Updating the mcp server json file 📝

Add this to your claude_desktop_config.json / .cursor/mcp.json file:

{
  "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"
      }
    }
  }
}

System Prompt changes:

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

Running the Server Locally 💻

To start the Knowledge Graph Memory Server, run:

npm run build
node dist/index.js

The server will listen for requests via standard input/output.

API Endpoints 🔌

The server exposes several tools that can be called with specific parameters:

  • 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 🔓

Acknowledgments 🙏

  • Inspired by the Memory server from Anthropic
  • Powered by PouchDB for robust data storage 💾

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured