PouchDB Knowledge Graph
STDIOCreates and manages knowledge graph for LLM interactions using PouchDB storage.
Creates and manages knowledge graph for LLM interactions using PouchDB storage.
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.
To install Knowledge Graph Memory Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @bneil/mcp-memory-pouchdb --client claude
Clone the repository:
git clone [email protected]:bneil/mcp-memory-pouchdb.git cd mcp-memory-pouchdb
Install the dependencies:
npm install
The server requires two environment variables to be set:
MEMORY_FILE_PATH
: The absolute path where the memory backup file will be storedPOUCHDB_PATH
: The absolute path where the PouchDB database will be storedExample 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 optionsDISABLE_MEMORY_FILE
: Set to "true" to disable saving to memory.json file (only use PouchDB for storage)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).
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.
The server exposes several tools that can be called with specific parameters: