Skip to main content
Glama
evangstav

Memory MCP Server

by evangstav

Memory MCP Server

Ein Model Context Protocol (MCP) Server, der Knowledge-Graph-Funktionalität zur Verwaltung von Entitäten, Beziehungen und Beobachtungen im Arbeitsspeicher bietet, mit strengen Validierungsregeln zur Wahrung der Datenkonsistenz.

Installation

Installieren Sie den Server in Claude Desktop:

mcp install main.py -v MEMORY_FILE_PATH=/path/to/memory.jsonl

Related MCP server: MCP Memory Server - HTTP Streaming

Datenvalidierungsregeln

Entitätsnamen

  • Müssen mit einem Kleinbuchstaben beginnen

  • Können Kleinbuchstaben, Zahlen und Bindestriche enthalten

  • Maximale Länge von 100 Zeichen

  • Müssen innerhalb des Graphen eindeutig sein

  • Beispiel für gültige Namen: python-project, meeting-notes-2024, user-john

Entitätstypen

Die folgenden Entitätstypen werden unterstützt:

  • person: Menschliche Entitäten

  • concept: Abstrakte Ideen oder Prinzipien

  • project: Arbeitsinitiativen oder Aufgaben

  • document: Jede Form von Dokumentation

  • tool: Software-Tools oder Dienstprogramme

  • organization: Unternehmen oder Gruppen

  • location: Physische oder virtuelle Orte

  • event: Zeitlich begrenzte Ereignisse

Beobachtungen

  • Nicht leere Zeichenfolgen

  • Maximale Länge von 500 Zeichen

  • Müssen pro Entität eindeutig sein

  • Sollten sachliche und objektive Aussagen sein

  • Zeitstempel einfügen, wenn relevant

Beziehungen

Die folgenden Beziehungstypen werden unterstützt:

  • knows: Verbindung von Person zu Person

  • contains: Eltern-/Kind-Beziehung

  • uses: Entität nutzt eine andere Entität

  • created: Urheberschafts-/Erstellungsbeziehung

  • belongs-to: Mitgliedschaft/Eigentum

  • depends-on: Abhängigkeitsbeziehung

  • related-to: Generische Beziehung

Zusätzliche Beziehungsregeln:

  • Sowohl Quell- als auch Zielentitäten müssen existieren

  • Selbstbezügliche Beziehungen sind nicht erlaubt

  • Keine zirkulären Abhängigkeiten erlaubt

  • Müssen vordefinierte Beziehungstypen verwenden

Verwendung

Der Server bietet Tools zur Verwaltung eines Knowledge-Graphen:

Entität abrufen

result = await session.call_tool("get_entity", {
    "entity_name": "example"
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    elif result.error_type == "VALIDATION_ERROR":
        print(f"Invalid input: {result.error}")
    else:
        print(f"Error: {result.error}")
else:
    entity = result.data
    print(f"Found entity: {entity}")

Graph abrufen

result = await session.call_tool("get_graph", {})
if result.success:
    graph = result.data
    print(f"Graph data: {graph}")
else:
    print(f"Error retrieving graph: {result.error}")

Entitäten erstellen

# Valid entity creation
entities = [
    Entity(
        name="python-project",  # Lowercase with hyphens
        entityType="project",   # Must be a valid type
        observations=["Started development on 2024-01-29"]
    ),
    Entity(
        name="john-doe",
        entityType="person",
        observations=["Software engineer", "Joined team in 2024"]
    )
]
result = await session.call_tool("create_entities", {
    "entities": entities
})
if not result.success:
    if result.error_type == "VALIDATION_ERROR":
        print(f"Invalid entity data: {result.error}")
    else:
        print(f"Error creating entities: {result.error}")

Beobachtung hinzufügen

# Valid observation
result = await session.call_tool("add_observation", {
    "entity": "python-project",
    "observation": "Completed initial prototype"  # Must be unique for entity
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    elif result.error_type == "VALIDATION_ERROR":
        print(f"Invalid observation: {result.error}")
    else:
        print(f"Error adding observation: {result.error}")

Beziehung erstellen

# Valid relation
result = await session.call_tool("create_relation", {
    "from_entity": "john-doe",
    "to_entity": "python-project",
    "relation_type": "created"  # Must be a valid type
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    elif result.error_type == "VALIDATION_ERROR":
        print(f"Invalid relation data: {result.error}")
    else:
        print(f"Error creating relation: {result.error}")

Speicher durchsuchen

result = await session.call_tool("search_memory", {
    "query": "most recent workout"  # Supports natural language queries
})
if result.success:
    if result.error_type == "NO_RESULTS":
        print(f"No results found: {result.error}")
    else:
        results = result.data
        print(f"Search results: {results}")
else:
    print(f"Error searching memory: {result.error}")

Die Suchfunktionalität unterstützt:

  • Zeitliche Abfragen (z. B. "aktuellste", "letzte", "neueste")

  • Aktivitätsabfragen (z. B. "Training", "Übung")

  • Allgemeine Entitätssuchen

  • Fuzzy-Matching mit 80% Ähnlichkeitsschwellenwert

  • Gewichtete Suche über:

    • Entitätsnamen (Gewichtung: 1.0)

    • Entitätstypen (Gewichtung: 0.8)

    • Beobachtungen (Gewichtung: 0.6)

Entitäten löschen

result = await session.call_tool("delete_entities", {
    "names": ["python-project", "john-doe"]
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    else:
        print(f"Error deleting entities: {result.error}")

Beziehung löschen

result = await session.call_tool("delete_relation", {
    "from_entity": "john-doe",
    "to_entity": "python-project"
})
if not result.success:
    if result.error_type == "NOT_FOUND":
        print(f"Entity not found: {result.error}")
    else:
        print(f"Error deleting relation: {result.error}")

Speicher leeren

result = await session.call_tool("flush_memory", {})
if not result.success:
    print(f"Error flushing memory: {result.error}")

Fehlertypen

Der Server verwendet die folgenden Fehlertypen:

  • NOT_FOUND: Entität oder Ressource nicht gefunden

  • VALIDATION_ERROR: Ungültige Eingabedaten

  • INTERNAL_ERROR: Serverseitiger Fehler

  • ALREADY_EXISTS: Ressource existiert bereits

  • INVALID_RELATION: Ungültige Beziehung zwischen Entitäten

Antwortmodelle

Alle Tools geben typisierte Antworten unter Verwendung dieser Modelle zurück:

EntityResponse

class EntityResponse(BaseModel):
    success: bool
    data: Optional[Dict[str, Any]] = None
    error: Optional[str] = None
    error_type: Optional[str] = None

GraphResponse

class GraphResponse(BaseModel):
    success: bool
    data: Optional[Dict[str, Any]] = None
    error: Optional[str] = None
    error_type: Optional[str] = None

OperationResponse

class OperationResponse(BaseModel):
    success: bool
    error: Optional[str] = None
    error_type: Optional[str] = None

Entwicklung

Tests ausführen

pytest tests/

Neue Funktionen hinzufügen

  1. Aktualisieren Sie die Validierungsregeln in validation.py

  2. Fügen Sie Tests in tests/test_validation.py hinzu

  3. Implementieren Sie Änderungen in knowledge_graph_manager.py

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    -
    quality
    D
    maintenance
    Enables creation and management of knowledge graphs with entities, relationships, and observations through HTTP streaming. Supports persistent storage, search functionality, and CRUD operations for building and querying interconnected knowledge bases.
    Last updated
    2
  • A
    license
    C
    quality
    D
    maintenance
    Provides persistent memory and knowledge graph capabilities for AI assistants using local SQLite storage. Enables creating, searching, and managing entities, relationships, and observations with vector search support across conversations.
    Last updated
    7
    88
    14
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    Provides LLMs with persistent memory across conversations using a knowledge graph that stores entities, relationships, and observations with support for PostgreSQL or SQLite backends.
    Last updated
    79
    24
    MIT

View all related MCP servers

Related MCP Connectors

  • Manage TTRPG campaigns: NPCs, locations, factions, quests, sessions, lore, and knowledge graphs.

  • AI knowledge graph for architecture, portfolio, and digital strategy management.

  • End-to-end agent-managed company brain. Docs, diagrams, plans, Knowledge Graph. Lean & affordable.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/evangstav/python-memory-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server