Knowledge Graph Memory Server
About
Standalone MCP server for enabling memory for Claude through a knowledge graph
Details
- Author
- s2005
- GitHub stars
- 1
- Downloads
- 372
- Categories
- Knowledge Base, AI
Jump to
- Persistent, local knowledge graph for chat context
- Tools to create, read, update, and delete entities, relations, and observations
- Full search functionality across names, types, and observations
- Silent handling of duplicate entities and relations
- Cascading deletion of relations when entities are removed
- Customizable memory file path via environment variable
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Knowledge Graph Memory ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add the server configuration to claude_desktop_config.json using Docker (recommended) or NPX. Optionally set the MEMORY_FILE_PATH environment variable to customize the storage location. Use the provided system prompt example in a Claude.ai Project to enable memory operations.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"knowledge graph memory server": {
"mcp-memory-server": {
"command": "docker",
"args": [
"build",
"-t",
"mcp/memory",
"-f",
"src/Dockerfile",
"."
]
}
}
}
}
McpServers
{
"mcp-memory-server": {
"command": "docker",
"args": [
"build",
"-t",
"mcp/memory",
"-f",
"src/Dockerfile",
"."
]
}
}
Knowledge Graph Memory Server
> Note: This project was extracted from modelcontextprotocol/servers to create a standalone implementation.
A basic implementation of persistent memory using a local knowledge graph. This lets Claude remember information about the user across chats.
Core Concepts
Entities
Entities are the primary nodes in the knowledge graph. Each entity has: - A unique name (identifier) - An entity type (e.g., "person", "organization", "event") - A list of observationsExample:
{
"name": "John_Smith",
"entityType": "person",
"observations": ["Speaks fluent Spanish"]
}
Relations
Relations define directed connections between entities. They are always stored in active voice and describe how entities interact or relate to each other.Example:
{
"from": "John_Smith",
"to": "Anthropic",
"relationType": "works_at"
}
Observations
Observations are discrete pieces of information about an entity. They are:
- Stored as strings
- Attached to specific entities
- Can be added or removed independently
- Should be atomic (one fact per observation)
Example:
{
"entityName": "John_Smith",
"observations": [
"Speaks fluent Spanish",
"Graduated in 2019",
"Prefers morning meetings"
]
}
API
Tools
- create_entities - Create multiple new entities in the knowledge graph - Input:entities (array of objects)
- Each object contains:
- name (string): Entity identifier
- entityType (string): Type classification
- observations (string[]): Associated observations
- Ignores entities with existing names
- create_relations
- Create multiple new relations between entities
- Input: relations (array of objects)
- Each object contains:
- from (string): Source entity name
- to (string): Target entity name
- relationType (string): Relationship type in active voice
- Skips duplicate relations
- add_observations
- Add new observations to existing entities
- Input: observations (array of objects)
- Each object contains:
- entityName (string): Target entity
- contents (string[]): New observations to add
- Returns added observations per entity
- Fails if entity doesn't exist
- delete_entities
- Remove entities and their relations
- Input: entityNames (string[])
- Cascading deletion of associated relations
- Silent operation if entity doesn't exist
- delete_observations
- Remove specific observations from entities
- Input: deletions (array of objects)
- Each object contains:
- entityName (string): Target entity
- observations (string[]): Observations to remove
- Silent operation if observation doesn't exist
- delete_relations
- Remove specific relations from the graph
- Input: relations (array of objects)
- Each object contains:
- from (string): Source entity name
- to (string): Target entity name
- relationType (string): Relationship type
- Silent operation if relation doesn't exist
- read_graph
- Read the entire knowledge graph
- No input required
- Returns complete graph structure with all entities and relations
- search_nodes
- Search for nodes based on query
- Input: query (string)
- Searches across:
- Entity names
- Entity types
- Observation content
- Returns matching entities and their relations
- open_nodes
- Retrieve specific nodes by name
- Input: names (string[])
- Returns:
- Requested entities
- Relations between requested entities
- Silently skips non-existent nodes
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


