Knowledge Graph Memory Server

by edobez

354 downloads
Not rated
GitHub

About

MCP server for enabling memory for Claude through a knowledge graph

Details

Author
edobez
Downloads
354
Categories
Knowledge Base

- Creates, reads, updates, and deletes entities in a knowledge graph
- Manages directed relations between entities with active voice
- Stores atomic observations attached to specific entities
- Provides search and retrieval tools (search_nodes, open_nodes)
- Persists memory to a local JSON file
- Supports custom 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 your claude_desktop_config.json using uvx with the mcp-memory-py package. Optionally set the MEMORY_FILE_PATH environment variable to specify a custom memory file location. For chat personalization, use the provided system prompt in Claude.ai Project custom instructions.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "knowledge graph memory server": {
            "memory-python": {
                "command": "uvx",
                "args": [
                    "--refresh",
                    "--quiet",
                    "mcp-memory-py"
                ],
                "env": {
                    "MEMORY_FILE_PATH": ""
                }
            }
        }
    }
}

McpServers

{
    "memory-python": {
        "command": "uvx",
        "args": [
            "--refresh",
            "--quiet",
            "mcp-memory-py"
        ],
        "env": {
            "MEMORY_FILE_PATH": ""
        }
    }
}

Knowledge Graph Memory Server

A basic implementation of persistent memory using a local knowledge graph. This lets Claude remember information about the user across chats.

This is a Python port of the original reference server (version 0.6.3).
I took the opportunity to do some refactoring of the code, mostly aided by Cline (and Claude Sonnet 3.5).

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.