MCP DuckDB Knowledge Graph Memory Server

by IzumiSy
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Supports containerized deployment through Docker, allowing the memory server to be run in isolated containers with appropriate build and run commands.

  • Uses DuckDB as the backend database for storing knowledge graph data, leveraging its fast query processing, SQL interface, and transaction support for efficient storage and retrieval of entities, observations, and relations.

Servidor de memoria de gráficos de conocimiento MCP DuckDB

Una versión bifurcada del servidor de memoria oficial Knowledge Graph .

Instalación

Instalación mediante herrería

Para instalar DuckDB Knowledge Graph Memory Server para Claude Desktop automáticamente a través de Smithery :

npx -y @smithery/cli install @IzumiSy/mcp-duckdb-memory-server --client claude

Instalación manual

De lo contrario, agregue @IzumiSy/mcp-duckdb-memory-server en su claude_desktop_config.json manualmente ( MEMORY_FILE_PATH es opcional)

{ "mcpServers": { "graph-memory": { "command": "npx", "args": [ "-y", "@izumisy/mcp-duckdb-memory-server" ], "env": { "MEMORY_FILE_PATH": "/path/to/your/memory.data" } } } }

Los datos almacenados en esa ruta son un archivo de base de datos DuckDB.

Estibador

Construir

docker build -t mcp-duckdb-graph-memory .

Correr

docker run -dit mcp-duckdb-graph-memory

Uso

Utilice la instrucción de ejemplo a continuación

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 observations

Motivación

Este proyecto mejora el servidor de memoria MCP Knowledge Graph original reemplazando su backend con DuckDB.

¿Por qué DuckDB?

El servidor de memoria original de Knowledge Graph de MCP utilizaba un archivo JSON como almacén de datos y realizaba búsquedas en memoria. Si bien este enfoque funciona bien con conjuntos de datos pequeños, presenta varios desafíos:

  1. Rendimiento : el rendimiento de la búsqueda en memoria se degrada a medida que crece el conjunto de datos
  2. Escalabilidad : el uso de memoria aumenta significativamente cuando se manejan grandes cantidades de entidades y relaciones.
  3. Flexibilidad de consultas : las consultas complejas y las búsquedas condicionales son difíciles de implementar
  4. Integridad de los datos : garantizar la atomicidad de las transacciones y las operaciones CRUD es un desafío

Se eligió DuckDB para abordar estos desafíos:

  • Procesamiento rápido de consultas : DuckDB está optimizado para consultas analíticas y funciona bien incluso con grandes conjuntos de datos
  • Interfaz SQL : se puede utilizar SQL estándar para ejecutar consultas complejas fácilmente
  • Soporte de transacciones : admite el procesamiento de transacciones para mantener la integridad de los datos
  • Capacidades de indexación : permite la creación de índices para mejorar el rendimiento de la búsqueda.
  • Base de datos integrada : funciona dentro de la aplicación sin necesidad de un servidor de base de datos externo

Detalles de implementación

Esta implementación utiliza DuckDB como sistema de almacenamiento backend, centrándose en dos aspectos clave:

Estructura de la base de datos

El gráfico de conocimiento se almacena en una estructura de base de datos relacional como se muestra a continuación:

Este diseño de esquema permite el almacenamiento y la recuperación eficientes de los componentes del gráfico de conocimiento manteniendo al mismo tiempo las relaciones entre entidades, observaciones y relaciones.

Implementación de búsqueda difusa

La implementación combina consultas SQL con Fuse.js para una búsqueda flexible de entidades:

  • Las consultas SQL de DuckDB recuperan los datos base de la base de datos
  • Fuse.js proporciona capacidades de coincidencia difusa sobre los datos recuperados
  • Este enfoque híbrido permite tanto consultas estructuradas como coincidencias de texto flexibles.
  • Los resultados de la búsqueda incluyen coincidencias exactas y parciales, clasificadas por relevancia.

Desarrollo

Configuración

pnpm install

Pruebas

pnpm test

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Un servidor de memoria para Claude que almacena y recupera datos del gráfico de conocimiento en DuckDB, mejorando el rendimiento y las capacidades de consulta para conversaciones con información de usuario persistente.

  1. Installation
    1. Installing via Smithery
    2. Manual install
    3. Docker
  2. Usage
    1. Motivation
      1. Why DuckDB?
    2. Implementation Details
      1. Database Structure
      2. Fuzzy Search Implementation
    3. Development
      1. Setup
      2. Testing
    4. License
      ID: 4mqwh1toao