Knowledge Graph Memory Server

by s2005

1 stars
372 downloads
Not rated
GitHub

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

- 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:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Knowledge Graph Memory Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. 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 observations

Example:

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.