hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Enables GitHub Copilot to access the persistent knowledge graph memory system through the model context protocol.
Uses Neo4j as the storage backend for the knowledge graph, providing unified graph storage and vector search capabilities.
Leverages OpenAI's embedding models for semantic search capabilities, supporting multiple models including text-embedding-3-small/large.
Memento MCP: un sistema de memoria de gráficos de conocimiento para LLM
Sistema de memoria de grafos de conocimiento escalable y de alto rendimiento con recuperación semántica, recuerdo contextual y reconocimiento temporal. Proporciona a cualquier cliente LLM compatible con el protocolo de contexto de modelo (p. ej., Claude Desktop, Cursor, Github Copilot) una memoria ontológica a largo plazo resiliente, adaptativa y persistente.
Conceptos básicos
Entidades
Las entidades son los nodos principales del grafo de conocimiento. Cada entidad tiene:
- Un nombre único (identificador)
- Un tipo de entidad (por ejemplo, "persona", "organización", "evento")
- Una lista de observaciones
- Incrustaciones vectoriales (para búsqueda semántica)
- Historial completo de versiones
Ejemplo:
Relaciones
Las relaciones definen conexiones dirigidas entre entidades con propiedades mejoradas:
- Indicadores de fuerza (0,0-1,0)
- Niveles de confianza (0,0-1,0)
- Metadatos enriquecidos (fuente, marcas de tiempo, etiquetas)
- Conciencia temporal con historial de versiones
- Decadencia de la confianza basada en el tiempo
Ejemplo:
Backend de almacenamiento
Memento MCP utiliza Neo4j como su backend de almacenamiento, proporcionando una solución unificada tanto para el almacenamiento de gráficos como para las capacidades de búsqueda de vectores.
¿Por qué Neo4j?
- Almacenamiento unificado : consolida el almacenamiento de gráficos y vectores en una única base de datos
- Operaciones gráficas nativas : diseñadas específicamente para recorridos y consultas de gráficos
- Búsqueda de vectores integrada : búsqueda de similitud de vectores para incrustaciones integradas directamente en Neo4j
- Escalabilidad : mejor rendimiento con grandes gráficos de conocimiento
- Arquitectura simplificada : diseño limpio con una única base de datos para todas las operaciones
Prerrequisitos
- Neo4j 5.13+ (necesario para las capacidades de búsqueda vectorial)
Configuración de escritorio de Neo4j (recomendada)
La forma más fácil de comenzar a utilizar Neo4j es utilizar Neo4j Desktop :
- Descargue e instale Neo4j Desktop desde https://neo4j.com/download/
- Crear un nuevo proyecto
- Agregar una nueva base de datos
- Establezca la contraseña en
memento_password
(o su contraseña preferida) - Iniciar la base de datos
La base de datos Neo4j estará disponible en:
- URI de Bolt :
bolt://127.0.0.1:7687
(para conexiones de controlador) - HTTP :
http://127.0.0.1:7474
(para la interfaz de usuario del navegador Neo4j) - Credenciales predeterminadas : nombre de usuario:
neo4j
, contraseña:memento_password
(o la que haya configurado)
Configuración de Neo4j con Docker (alternativa)
Alternativamente, puedes usar Docker Compose para ejecutar Neo4j:
Al utilizar Docker, la base de datos Neo4j estará disponible en:
- URI de Bolt :
bolt://127.0.0.1:7687
(para conexiones de controlador) - HTTP :
http://127.0.0.1:7474
(para la interfaz de usuario del navegador Neo4j) - Credenciales predeterminadas : nombre de usuario:
neo4j
, contraseña:memento_password
Persistencia y gestión de datos
Los datos de Neo4j persisten después de reiniciar el contenedor e incluso de actualizar la versión debido a la configuración del volumen de Docker en el archivo docker-compose.yml
:
Estas asignaciones garantizan que:
- El directorio
/data
(contiene todos los archivos de base de datos) persiste en su host en./neo4j-data
- El directorio
/logs
persiste en su host en./neo4j-logs
- El directorio
/import
(para importar archivos de datos) persiste en./neo4j-import
Puede modificar estas rutas en su archivo docker-compose.yml
para almacenar datos en diferentes ubicaciones si es necesario.
Actualización de la versión de Neo4j
Puedes cambiar ediciones y versiones de Neo4j sin perder datos:
- Actualice la versión de la imagen de Neo4j en
docker-compose.yml
- Reinicie el contenedor con
docker-compose down && docker-compose up -d neo4j
- Reinicialice el esquema con
npm run neo4j:init
Los datos persistirán durante este proceso mientras las asignaciones de volumen sigan siendo las mismas.
Restablecimiento completo de la base de datos
Si necesita restablecer completamente su base de datos Neo4j:
Copia de seguridad de datos
Para hacer una copia de seguridad de sus datos de Neo4j, simplemente puede copiar el directorio de datos:
Utilidades CLI de Neo4j
Memento MCP incluye utilidades de línea de comandos para administrar operaciones de Neo4j:
Conexión de prueba
Pruebe la conexión a su base de datos Neo4j:
Inicializando el esquema
Para un funcionamiento normal, la inicialización del esquema de Neo4j se realiza automáticamente cuando Memento MCP se conecta a la base de datos. No es necesario ejecutar ningún comando manual para su uso habitual.
Los siguientes comandos solo son necesarios para escenarios de desarrollo, pruebas o personalización avanzada:
Funciones avanzadas
Búsqueda semántica
Encuentre entidades semánticamente relacionadas basándose en el significado en lugar de solo palabras clave:
- Incrustaciones vectoriales : las entidades se codifican automáticamente en un espacio vectorial de alta dimensión utilizando los modelos de incrustación de OpenAI
- Similitud de coseno : encuentre conceptos relacionados incluso cuando utilicen terminología diferente
- Umbrales configurables : establezca puntuaciones mínimas de similitud para controlar la relevancia de los resultados
- Búsqueda intermodal : consulta con texto para encontrar entidades relevantes independientemente de cómo se describieron
- Compatibilidad con múltiples modelos : compatible con múltiples modelos de incrustación (OpenAI text-embedding-3-small/large)
- Recuperación contextual : recupere información basándose en el significado semántico en lugar de coincidencias exactas de palabras clave
- Valores predeterminados optimizados : parámetros ajustados para lograr un equilibrio entre precisión y recuperación (umbral de similitud de 0,6, búsqueda híbrida habilitada)
- Búsqueda híbrida : combina búsqueda semántica y por palabras clave para obtener resultados más completos.
- Búsqueda adaptativa : el sistema elige de forma inteligente entre búsqueda de solo vectores, solo palabras clave o híbrida según las características de la consulta y los datos disponibles.
- Optimización del rendimiento : prioriza la búsqueda de vectores para la comprensión semántica mientras mantiene mecanismos de respaldo para la resiliencia.
- Procesamiento consciente de consultas : ajusta la estrategia de búsqueda en función de la complejidad de la consulta y las incrustaciones de entidades disponibles
Conciencia temporal
Realice un seguimiento del historial completo de entidades y relaciones con la recuperación de gráficos de puntos en el tiempo:
- Historial de versiones completo : cada cambio en una entidad o relación se conserva con marcas de tiempo
- Consultas de punto en el tiempo : recupera el estado exacto del gráfico de conocimiento en cualquier momento del pasado
- Seguimiento de cambios : registra automáticamente las marcas de tiempo createdAt, updatedAt, validFrom y validTo
- Coherencia temporal : mantener una visión históricamente precisa de cómo evolucionó el conocimiento
- Actualizaciones no destructivas : las actualizaciones crean nuevas versiones en lugar de sobrescribir los datos existentes
- Filtrado basado en el tiempo : filtra elementos del gráfico según criterios temporales
- Exploración histórica : investigar cómo cambió información específica a lo largo del tiempo
Decadencia de la confianza
Las relaciones pierden confianza automáticamente con el tiempo según una vida media configurable:
- Decadencia basada en el tiempo : la confianza en las relaciones disminuye naturalmente con el tiempo si no se refuerza.
- Vida media configurable : define con qué rapidez la información se vuelve menos segura (valor predeterminado: 30 días)
- Pisos de confianza mínimos : establezca umbrales para evitar el deterioro excesivo de información importante
- Metadatos de desintegración : cada relación incluye información detallada del cálculo de desintegración
- No destructivo : los valores de confianza originales se conservan junto con los valores decaídos
- Aprendizaje por refuerzo : Las relaciones recuperan la confianza cuando se refuerzan con nuevas observaciones
- Flexibilidad de tiempo de referencia : calcule la descomposición basándose en tiempos de referencia arbitrarios para el análisis histórico
Metadatos avanzados
Compatibilidad completa con metadatos tanto para entidades como para relaciones con campos personalizados:
- Seguimiento de fuentes : registre dónde se originó la información (entrada del usuario, análisis, fuentes externas)
- Niveles de confianza : Asigne puntuaciones de confianza (0,0-1,0) a las relaciones en función de la certeza.
- Fuerza de la relación : Indica la importancia o fuerza de las relaciones (0,0-1,0)
- Metadatos temporales : rastrea cuándo se agregó, modificó o verificó la información
- Etiquetas personalizadas : agregue etiquetas arbitrarias para clasificación y filtrado
- Datos estructurados : almacene datos estructurados complejos dentro de campos de metadatos
- Soporte de consultas : búsqueda y filtrado según las propiedades de metadatos
- Esquema extensible : agregue campos personalizados según sea necesario sin modificar el modelo de datos principal
Herramientas de API de MCP
Las siguientes herramientas están disponibles para los hosts de clientes LLM a través del Protocolo de contexto de modelo:
Gestión de entidades
- crear_entidades
- Crear múltiples entidades nuevas en el gráfico de conocimiento
- Entrada:
entities
(matriz de objetos)- Cada objeto contiene:
name
(cadena): identificador de entidadentityType
(cadena): clasificación de tiposobservations
(string[]): Observaciones asociadas
- Cada objeto contiene:
- añadir_observaciones
- Agregar nuevas observaciones a entidades existentes
- Entrada:
observations
(matriz de objetos)- Cada objeto contiene:
entityName
(cadena): entidad de destinocontents
(string[]): Nuevas observaciones para agregar
- Cada objeto contiene:
- eliminar_entidades
- Eliminar entidades y sus relaciones
- Entrada:
entityNames
(cadena[])
- eliminar_observaciones
- Eliminar observaciones específicas de las entidades
- Entrada:
deletions
(matriz de objetos)- Cada objeto contiene:
entityName
(cadena): entidad de destinoobservations
(string[]): Observaciones para eliminar
- Cada objeto contiene:
Gestión de relaciones
- crear_relaciones
- Crear múltiples relaciones nuevas entre entidades con propiedades mejoradas
- Entrada:
relations
(matriz de objetos)- Cada objeto contiene:
from
(string): Nombre de la entidad de origento
(cadena): nombre de la entidad de destinorelationType
(cadena): tipo de relaciónstrength
(número, opcional): Fuerza de la relación (0,0-1,0)confidence
(número, opcional): Nivel de confianza (0,0-1,0)metadata
(objeto, opcional): campos de metadatos personalizados
- Cada objeto contiene:
- obtener_relación
- Obtenga una relación específica con sus propiedades mejoradas
- Aporte:
from
(string): Nombre de la entidad de origento
(cadena): nombre de la entidad de destinorelationType
(cadena): tipo de relación
- actualizar_relación
- Actualizar una relación existente con propiedades mejoradas
- Entrada:
relation
(objeto):- Contiene:
from
(string): Nombre de la entidad de origento
(cadena): nombre de la entidad de destinorelationType
(cadena): tipo de relaciónstrength
(número, opcional): Fuerza de la relación (0,0-1,0)confidence
(número, opcional): Nivel de confianza (0,0-1,0)metadata
(objeto, opcional): campos de metadatos personalizados
- Contiene:
- eliminar_relaciones
- Eliminar relaciones específicas del gráfico
- Entrada:
relations
(matriz de objetos)- Cada objeto contiene:
from
(string): Nombre de la entidad de origento
(cadena): nombre de la entidad de destinorelationType
(cadena): tipo de relación
- Cada objeto contiene:
Operaciones gráficas
- leer_gráfico
- Lea el gráfico de conocimiento completo
- No se requiere entrada
- nodos de búsqueda
- Búsqueda de nodos según la consulta
- Entrada:
query
(cadena)
- nodos abiertos
- Recuperar nodos específicos por nombre
- Entrada:
names
(cadena[])
Búsqueda semántica
- búsqueda semántica
- Búsqueda de entidades semánticamente utilizando incrustaciones vectoriales y similitud
- Aporte:
query
(cadena): La consulta de texto que se buscará semánticamentelimit
(número, opcional): Máximo de resultados a devolver (predeterminado: 10)min_similarity
(número, opcional): umbral mínimo de similitud (0,0-1,0, predeterminado: 0,6)entity_types
(string[], opcional): Filtrar resultados por tipos de entidadhybrid_search
(booleano, opcional): combina búsqueda por palabras clave y semántica (valor predeterminado: verdadero)semantic_weight
(número, opcional): peso de los resultados semánticos en la búsqueda híbrida (0,0-1,0, valor predeterminado: 0,6)
- Características:
- Selecciona de forma inteligente el método de búsqueda óptimo (vector, palabra clave o híbrido) según el contexto de la consulta.
- Maneja con elegancia las consultas sin coincidencias semánticas a través de mecanismos de respaldo
- Mantiene un alto rendimiento con decisiones de optimización automáticas
- obtener_entidad_incrustada
- Obtener la incrustación vectorial para una entidad específica
- Aporte:
entity_name
(cadena): El nombre de la entidad para la que se obtendrá la incrustación
Características temporales
- obtener_historial_de_entidades
- Obtener el historial de versiones completo de una entidad
- Entrada:
entityName
(cadena)
- obtener_historial_de_relaciones
- Obtener el historial de versiones completo de una relación
- Aporte:
from
(string): Nombre de la entidad de origento
(cadena): nombre de la entidad de destinorelationType
(cadena): tipo de relación
- obtener_gráfico_en_tiempo
- Obtener el estado del gráfico en una marca de tiempo específica
- Entrada:
timestamp
(número): marca de tiempo de Unix (milisegundos desde la época)
- obtener_gráfico_decaído
- Obtener un gráfico con valores de confianza decaídos en el tiempo
- Entrada:
options
(objeto, opcional):reference_time
(número): marca de tiempo de referencia para el cálculo de la decadencia (milisegundos desde la época)decay_factor
(número): anulación del factor de decaimiento opcional
Configuración
Variables de entorno
Configure Memento MCP con estas variables de entorno:
Opciones de línea de comandos
Las herramientas CLI de Neo4j admiten las siguientes opciones:
Modelos de incrustación
Modelos de integración de OpenAI disponibles:
text-embedding-3-small
: Eficiente y rentable (1536 dimensiones)text-embedding-3-large
: Mayor precisión, mayor coste (3072 dimensiones)text-embedding-ada-002
: Modelo heredado (1536 dimensiones)
Configuración de la API de OpenAI
Para utilizar la búsqueda semántica, deberá configurar las credenciales de la API de OpenAI:
- Obtenga una clave API de OpenAI
- Configure su entorno con:
Nota : En entornos de prueba, el sistema simulará la generación de incrustaciones si no se proporciona una clave API. Sin embargo, se recomienda usar incrustaciones reales para las pruebas de integración.
Integración con Claude Desktop
Configuración
Agregue esto a su claude_desktop_config.json
:
Alternativamente, para el desarrollo local, puede utilizar:
Importante : Siempre especifique explícitamente el modelo de inserción en su configuración de Claude Desktop para garantizar un comportamiento consistente.
Indicaciones del sistema recomendadas
Para una integración óptima con Claude, agregue estas declaraciones al aviso de su sistema:
Prueba de búsqueda semántica
Una vez configurado, Claude puede acceder a las capacidades de búsqueda semántica a través del lenguaje natural:
- Para crear entidades con incrustaciones semánticas:Copy
- Para buscar semánticamente:Copy
- Para recuperar información específica:Copy
El poder de este enfoque es que los usuarios pueden interactuar de forma natural, mientras que el LLM maneja la complejidad de seleccionar y utilizar las herramientas de memoria adecuadas.
Aplicaciones en el mundo real
Las capacidades de búsqueda adaptativa de Memento brindan beneficios prácticos:
- Versatilidad de consultas : los usuarios no necesitan preocuparse por cómo formular las preguntas: el sistema se adapta automáticamente a diferentes tipos de consultas.
- Resiliencia ante fallos : incluso cuando no hay coincidencias semánticas disponibles, el sistema puede recurrir a métodos alternativos sin intervención del usuario.
- Eficiencia de rendimiento : al seleccionar de forma inteligente el método de búsqueda óptimo, el sistema equilibra el rendimiento y la relevancia para cada consulta.
- Recuperación de contexto mejorada : las conversaciones LLM se benefician de una mejor recuperación de contexto, ya que el sistema puede encontrar información relevante en gráficos de conocimiento complejos.
Por ejemplo, cuando un usuario pregunta "¿Qué sabes sobre aprendizaje automático?", el sistema puede recuperar entidades conceptualmente relacionadas, incluso si no mencionan explícitamente el "aprendizaje automático", como por ejemplo entidades sobre redes neuronales, ciencia de datos o algoritmos específicos. Sin embargo, si la búsqueda semántica no arroja suficientes resultados, el sistema ajusta automáticamente su enfoque para garantizar que se devuelva información útil.
Solución de problemas
Diagnóstico de búsqueda vectorial
Memento MCP incluye capacidades de diagnóstico integradas para ayudar a solucionar problemas de búsqueda de vectores:
- Verificación de incrustación : el sistema verifica si las entidades tienen incrustaciones válidas y las genera automáticamente si faltan.
- Estado del índice del vector : verifica que el índice del vector exista y esté en estado EN LÍNEA
- Búsqueda de respaldo : si la búsqueda vectorial falla, el sistema recurre a la búsqueda basada en texto.
- Registro detallado : registro completo de operaciones de búsqueda de vectores para la resolución de problemas
Herramientas de depuración (cuando DEBUG=verdadero)
Cuando se habilita el modo de depuración, aparecen herramientas de diagnóstico adicionales:
- diagnosis_vector_search : información sobre el índice de vectores de Neo4j, los recuentos de incrustaciones y la funcionalidad de búsqueda
- force_generate_embedding : Fuerza la generación de una incrustación para una entidad específica
- debug_embedding_config : información sobre la configuración actual del servicio de incrustación
Reinicio del desarrollador
Para restablecer completamente su base de datos Neo4j durante el desarrollo:
Construcción y desarrollo
Instalación
Instalación mediante herrería
Para instalar memento-mcp para Claude Desktop automáticamente a través de Smithery :
Instalación global con npx
Puedes ejecutar Memento MCP directamente usando npx sin instalarlo globalmente:
Este método se recomienda para utilizar con Claude Desktop y otros clientes compatibles con MCP.
Instalación local
Para desarrollar o contribuir al proyecto:
Licencia
Instituto Tecnológico de Massachusetts (MIT)
You must be authenticated.
Tools
Sistema de memoria gráfica de conocimiento escalable y de alto rendimiento con búsqueda semántica, conocimiento temporal y gestión avanzada de relaciones.
- Core Concepts
- Storage Backend
- Advanced Features
- MCP API Tools
- Configuration
- Integration with Claude Desktop
- Troubleshooting
- Building and Development
- Installation
- License