Labsco
modelcontextprotocol logo

Memory

βœ“ Officialβ˜… 88,000

from modelcontextprotocol

Knowledge graph-based persistent memory system

πŸ”₯πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeQuick setup

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.

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:

Copy & paste β€” that's it
{
 "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:

Copy & paste β€” that's it
{
 "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:

Copy & paste β€” that's it
{
 "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

Resources

  • knowledge-graph (memory://knowledge-graph)

  • The full knowledge graph as a readable MCP Resource

  • MIME type: application/json

  • Returns the same shape as read_graph (entities and relations)

  • Mutation tools (create_entities, create_relations, add_observations, delete_entities, delete_observations, delete_relations) emit notifications/resources/updated for this URI, so subscribed clients see live changes

Building

Docker:

Copy & paste β€” that's it
docker build -t mcp/memory -f src/memory/Dockerfile . 

For Awareness: a prior mcp/memory volume contains an index.js file that could be overwritten by the new container. If you are using a docker volume for storage, delete the old docker volume's index.js file before starting the new container.

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.