MCP DuckDB Knowledge Graph Memory Server
Eine gegabelte Version des offiziellen Knowledge Graph Memory Server .
Installation
Installation über Smithery
So installieren Sie den DuckDB Knowledge Graph Memory Server für Claude Desktop automatisch über Smithery :
npx -y @smithery/cli install @IzumiSy/mcp-duckdb-memory-server --client claudeManuelle Installation
Andernfalls fügen Sie @IzumiSy/mcp-duckdb-memory-server manuell in Ihre claude_desktop_config.json ein ( MEMORY_FILE_PATH ist optional).
{
"mcpServers": {
"graph-memory": {
"command": "npx",
"args": [
"-y",
"@izumisy/mcp-duckdb-memory-server"
],
"env": {
"MEMORY_FILE_PATH": "/path/to/your/memory.data"
}
}
}
}Die auf diesem Pfad gespeicherten Daten sind eine DuckDB-Datenbankdatei.
Docker
Bauen
docker build -t mcp-duckdb-graph-memory .Laufen
docker run -dit mcp-duckdb-graph-memoryRelated MCP server: MCP Memory Service
Verwendung
Verwenden Sie die Beispielanweisung unten
Follow these steps for each interaction:
1. User Identification:
- You should assume that you are interacting with default_user
- If you have not identified default_user, proactively try to do so.
2. Memory Retrieval:
- Always begin your chat by saying only "Remembering..." and search relevant information from your knowledge graph
- Create a search query from user words, and search things from "memory". If nothing matches, try to break down words in the query at first ("A B" to "A" and "B" for example).
- Always refer to your knowledge graph as your "memory"
3. Memory
- While conversing with the user, be attentive to any new information that falls into these categories:
a) Basic Identity (age, gender, location, job title, education level, etc.)
b) Behaviors (interests, habits, etc.)
c) Preferences (communication style, preferred language, etc.)
d) Goals (goals, targets, aspirations, etc.)
e) Relationships (personal and professional relationships up to 3 degrees of separation)
4. Memory Update:
- If any new information was gathered during the interaction, update your memory as follows:
a) Create entities for recurring organizations, people, and significant events
b) Connect them to the current entities using relations
b) Store facts about them as observationsMotivation
Dieses Projekt erweitert den ursprünglichen MCP Knowledge Graph Memory Server, indem sein Backend durch DuckDB ersetzt wird.
Warum DuckDB?
Der ursprüngliche MCP Knowledge Graph Memory Server verwendete eine JSON-Datei als Datenspeicher und führte In-Memory-Suchen durch. Dieser Ansatz eignet sich zwar gut für kleine Datensätze, bringt aber einige Herausforderungen mit sich:
Leistung : Die Leistung der In-Memory-Suche nimmt mit zunehmendem Datensatz ab
Skalierbarkeit : Der Speicherverbrauch steigt erheblich, wenn eine große Anzahl von Entitäten und Beziehungen verarbeitet wird
Abfrageflexibilität : Komplexe Abfragen und bedingte Suchen sind schwierig zu implementieren
Datenintegrität : Die Gewährleistung der Atomizität von Transaktionen und CRUD-Operationen ist eine Herausforderung
DuckDB wurde ausgewählt, um diese Herausforderungen zu bewältigen:
Schnelle Abfrageverarbeitung : DuckDB ist für analytische Abfragen optimiert und bietet auch bei großen Datensätzen eine gute Leistung
SQL-Schnittstelle : Mit Standard-SQL können komplexe Abfragen einfach ausgeführt werden
Transaktionsunterstützung : Unterstützt die Transaktionsverarbeitung, um die Datenintegrität aufrechtzuerhalten
Indizierungsfunktionen : Ermöglicht die Erstellung von Indizes zur Verbesserung der Suchleistung
Eingebettete Datenbank : Funktioniert innerhalb der Anwendung, ohne dass ein externer Datenbankserver erforderlich ist
Implementierungsdetails
Diese Implementierung verwendet DuckDB als Backend-Speichersystem und konzentriert sich auf zwei Schlüsselaspekte:
Datenbankstruktur
Der Wissensgraph wird in einer relationalen Datenbankstruktur gespeichert, wie unten dargestellt:
erDiagram
ENTITIES {
string name PK
string entityType
}
OBSERVATIONS {
string entityName FK
string content
}
RELATIONS {
string from_entity FK
string to_entity FK
string relationType
}
ENTITIES ||--o{ OBSERVATIONS : "has"
ENTITIES ||--o{ RELATIONS : "from"
ENTITIES ||--o{ RELATIONS : "to"Dieses Schemadesign ermöglicht die effiziente Speicherung und Abfrage von Wissensgraphkomponenten, während die Beziehungen zwischen Entitäten, Beobachtungen und Relationen erhalten bleiben.
Implementierung der Fuzzy-Suche
Die Implementierung kombiniert SQL-Abfragen mit Fuse.js für eine flexible Entitätssuche:
DuckDB SQL-Abfragen rufen die Basisdaten aus der Datenbank ab
Fuse.js bietet Fuzzy-Matching-Funktionen zusätzlich zu den abgerufenen Daten
Dieser hybride Ansatz ermöglicht sowohl strukturierte Abfragen als auch flexibles Textmatching
Die Suchergebnisse umfassen sowohl exakte als auch teilweise Übereinstimmungen, sortiert nach Relevanz
Entwicklung
Aufstellen
pnpm installTesten
pnpm testLizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der Datei LICENSE .