hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
@pinkpixel/mem0-mcp Servidor MCP ✨
Un servidor de Protocolo de Contexto de Modelo (MCP) que se integra con Mem0.ai para proporcionar memoria persistente a los LLM. Permite a los agentes de IA almacenar y recuperar información entre sesiones.
Este servidor utiliza el SDK Node.js mem0ai
para su funcionalidad principal.
Características 🧠
Herramientas
add_memory
: almacena un fragmento de contenido de texto como una memoria asociada con unuserId
específico.- Entrada:
content
(cadena, obligatorio),userId
(cadena, obligatorio),sessionId
(cadena, opcional),agentId
(cadena, opcional),metadata
(objeto, opcional) - Almacena el texto proporcionado, lo que permite recuperarlo en interacciones futuras.
- Entrada:
search_memory
: busca memorias almacenadas basándose en una consulta en lenguaje natural para unuserId
específico.- Entrada:
query
(cadena, obligatoria),userId
(cadena, obligatoria),sessionId
(cadena, opcional),agentId
(cadena, opcional),filters
(objeto, opcional),threshold
(número, opcional) - Recupera recuerdos relevantes basándose en la similitud semántica.
- Entrada:
delete_memory
: elimina una memoria específica del almacenamiento por su ID.- Entrada:
memoryId
(cadena, obligatoria),userId
(cadena, obligatoria),sessionId
(cadena, opcional),agentId
(cadena, opcional) - Elimina permanentemente la memoria especificada.
- Recupera recuerdos relevantes basándose en la similitud semántica.
- Entrada:
Prerrequisitos 🔑
Este servidor admite dos modos de almacenamiento:
- Modo de almacenamiento en la nube ☁️ (Recomendado)
- Requiere una clave API Mem0 (proporcionada como variable de entorno
MEM0_API_KEY
) - Los recuerdos se almacenan de forma persistente en los servidores en la nube de Mem0
- No se necesita base de datos local
- Requiere una clave API Mem0 (proporcionada como variable de entorno
- Modo de almacenamiento local 💾
- Requiere una clave API de OpenAI (proporcionada como variable de entorno
OPENAI_API_KEY
) - Las memorias se almacenan en una base de datos vectorial en memoria (no persistente de forma predeterminada)
- Los datos se pierden cuando el servidor se reinicia a menos que esté configurado para almacenamiento persistente
- Requiere una clave API de OpenAI (proporcionada como variable de entorno
Instalación y configuración ⚙️
Puedes ejecutar este servidor de dos formas principales:
1. Uso de npx
(recomendado para un uso rápido)
Instale el paquete globalmente usando npm:
Configure su cliente MCP (por ejemplo, Claude Desktop, Cursor, Cline, Roo Code, etc.) para ejecutar el servidor usando npx
:
Configuración de almacenamiento en la nube (recomendado)
Nota: Reemplace "YOUR_MEM0_API_KEY_HERE"
con su clave API Mem0 real.
Configuración de almacenamiento local (alternativa)
Nota: Reemplace "YOUR_OPENAI_API_KEY_HERE"
con su clave API de OpenAI real.
2. Ejecución desde un repositorio clonado
Nota: este método requiere que primero clones el repositorio.
Clonar el repositorio, instalar las dependencias y compilar el servidor:
Luego, configure su cliente MCP para ejecutar el script creado directamente usando node
:
Notas importantes:
- Reemplace
/absolute/path/to/mem0-mcp/
con la ruta absoluta real a su repositorio clonado - Utilice el archivo
build/index.js
, no el archivosrc/index.ts
- El servidor MCP requiere una salida estándar limpia para la comunicación del protocolo: cualquier biblioteca o código que escriba en la salida estándar puede interferir con el protocolo.
ID de usuario predeterminado (respaldo opcional)
Tanto las herramientas add_memory
como search_memory
requieren un argumento userId
para asociar memorias con un usuario específico.
Para mayor comodidad durante las pruebas o en escenarios de un solo usuario, puede configurar opcionalmente la variable de entorno DEFAULT_USER_ID
al iniciar el servidor. Si esta variable está configurada y se omite el argumento userId
al llamar a la herramienta search_memory
, el servidor usará el valor de DEFAULT_USER_ID
para la búsqueda.
Nota: Si bien existe esta alternativa, generalmente se recomienda que el agente que llama (LLM) proporcione explícitamente el userId
correcto tanto para agregar como para buscar memorias para evitar ambigüedades.
Ejemplo de configuración utilizando DEFAULT_USER_ID
:
O cuando se ejecuta directamente con node
:
Almacenamiento en la nube vs. almacenamiento local 🔄
Almacenamiento en la nube (API Mem0)
- Persistente de forma predeterminada : sus recuerdos permanecen disponibles en todas las sesiones y reinicios del servidor.
- No se requiere base de datos local : todos los datos se almacenan en los servidores de Mem0
- Mayor calidad de recuperación : utiliza los algoritmos de búsqueda optimizados de Mem0
- Campos adicionales : admite parámetros
agent_id
ythreshold
- Requiere : una clave API Mem0
Almacenamiento local (API de OpenAI)
- En memoria por defecto : los datos se almacenan únicamente en la RAM y no son persistentes a largo plazo . Si bien puede haber almacenamiento en caché, no debe confiar en él para el almacenamiento permanente.
- Riesgo de pérdida de datos : los datos de la memoria se perderán al reiniciar el servidor, el sistema o si se finaliza el proceso.
- Recomendado para : desarrollo, pruebas o uso temporal únicamente
- Para almacenamiento persistente : utilice la opción de almacenamiento en la nube con API Mem0 si necesita una memoria a largo plazo confiable
- Utiliza incrustaciones de OpenAI : para la funcionalidad de búsqueda de vectores
- Autónomo : todos los datos permanecen en su máquina
- Requiere : una clave API de OpenAI
Desarrollo 💻
Clonar el repositorio e instalar las dependencias:
Construir el servidor:
Para el desarrollo con reconstrucción automática ante cambios de archivos:
Depuración 🐞
Dado que los servidores MCP se comunican a través de stdio, la depuración puede ser complicada. Aquí hay algunos enfoques:
- Utilice el Inspector MCP : esta herramienta puede supervisar la comunicación del protocolo MCP:
- Registro de la consola : al agregar registros de la consola, utilice siempre
console.error()
en lugar deconsole.log()
para evitar interferir con el protocolo MCP - Archivos de entorno : utilice un archivo
.env
para el desarrollo local para simplificar la configuración de claves API y otras opciones de configuración
Notas técnicas de implementación 🔧
Parámetros avanzados de la API Mem0
Al usar el modo de almacenamiento en la nube con la API Mem0, puede aprovechar parámetros adicionales para una gestión de memoria más sofisticada. Aunque no se exponen explícitamente en el esquema de la herramienta, estos pueden incluirse en el objeto metadata
al agregar memorias:
Parámetros avanzados para add_memory
:
Parámetro | Tipo | Descripción |
---|---|---|
metadata | objeto | Almacena contexto adicional sobre la memoria (p. ej., ubicación, hora, identificadores). Esto puede usarse para filtrar durante la recuperación. |
includes | cadena | Preferencias específicas para incluir en la memoria. |
excludes | cadena | Preferencias específicas para excluir de la memoria. |
infer | booleano | Si inferir recuerdos o almacenar mensajes directamente (predeterminado: verdadero). |
output_format | cadena | Versión de formato, ya sea v1.0 (predeterminada, obsoleta) o v1.1 (recomendada). |
custom_categories | objeto | Lista de categorías con nombres y descripciones. |
custom_instructions | cadena | Pautas específicas del proyecto para el manejo y la organización de los recuerdos. |
immutable | booleano | Si la memoria es inmutable (predeterminado: falso). |
expiration_date | cadena | Cuando caducará la memoria (formato: AAAA-MM-DD). |
org_id | cadena | ID de organización asociada a esta memoria. |
project_id | cadena | ID del proyecto asociado a esta memoria. |
version | cadena | Versión de memoria (v1 está obsoleta, se recomienda v2 para nuevas aplicaciones). |
Para usar estos parámetros con el servidor MCP, inclúyalos en su objeto de metadatos al llamar a la herramienta add_memory
. Por ejemplo:
Parámetros avanzados para search_memory
:
La API de búsqueda Mem0 v2 ofrece potentes capacidades de filtrado que se pueden utilizar a través del parámetro filters
:
Parámetro | Tipo | Descripción |
---|---|---|
filters | objeto | Filtros complejos con operadores lógicos y condiciones de comparación |
top_k | entero | Número de resultados principales a devolver (predeterminado: 10) |
fields | cadena[] | Campos específicos a incluir en la respuesta |
rerank | booleano | Si desea reordenar los recuerdos (predeterminado: falso) |
keyword_search | booleano | Si se debe buscar según palabras clave (predeterminado: falso) |
filter_memories | booleano | Si desea filtrar los recuerdos (predeterminado: falso) |
threshold | número | Umbral mínimo de similitud para los resultados (predeterminado: 0,3) |
org_id | cadena | ID de organización para filtrar recuerdos |
project_id | cadena | ID de proyecto para filtrar recuerdos |
El parámetro filters
admite operaciones lógicas complejas (AND, OR) y varios operadores de comparación:
Operador | Descripción |
---|---|
in | Coincide con cualquiera de los valores especificados |
gte | Mayor o igual que |
lte | Menor o igual a |
gt | Más que |
lt | Menos que |
ne | No es igual a |
icontains | Comprobación de contención sin distinción entre mayúsculas y minúsculas |
Ejemplo de uso de filtros complejos con la herramienta search_memory
:
Esto buscaría recuerdos relacionados con los pasatiempos de Alice donde el user_id es "alice" Y el agent_id es "travel-agent" O "sports-agent", devolviendo como máximo 5 resultados con un puntaje de similitud de al menos 0,5.
Para obtener información más detallada sobre estos parámetros, consulte la documentación de la API de Mem0 .
SafeLogger
El servidor MCP implementa una clase SafeLogger
que redirige selectivamente las llamadas console.log desde la biblioteca mem0ai a stderr sin interrumpir el protocolo MCP:
- Intercepta llamadas de console.log y examina los seguimientos de la pila para determinar la fuente
- Solo redirecciona llamadas de registro desde la biblioteca mem0ai o nuestro propio código
- Conserva la salida estándar limpia para la comunicación del protocolo MCP
- Limpia automáticamente los recursos al salir del proceso
Esto permite el funcionamiento adecuado dentro de los clientes MCP manteniendo información de depuración útil.
Variables de entorno
El servidor reconoce varias variables de entorno que controlan su comportamiento:
MEM0_API_KEY
: Clave API para el modo de almacenamiento en la nubeOPENAI_API_KEY
: Clave API para el modo de almacenamiento local (incrustaciones)DEFAULT_USER_ID
: ID de usuario predeterminado para operaciones de memoria
Hecho con ❤️ por Pink Pixel
You must be authenticated.
Un sistema de memoria flexible para aplicaciones de IA que admite múltiples proveedores de LLM y puede usarse como un servidor MCP o como una integración de biblioteca directa, lo que permite la gestión de memoria autónoma sin comandos explícitos.
- Features 🧠
- Prerequisites 🔑
- Installation & Configuration ⚙️
- Cloud vs. Local Storage 🔄
- Development 💻
- Debugging 🐞
- Technical Implementation Notes 🔧