mem0 Memory System

hybrid server

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

Integrations

  • Supports Google's AI models for memory functionality and context management

  • Draws inspiration from LangChain for memory management capabilities

  • Provides integration with Ollama for local LLM support and embedding generation

@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 un userId 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.
  • search_memory : busca memorias almacenadas basándose en una consulta en lenguaje natural para un userId 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.
  • 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.

Prerrequisitos 🔑

Este servidor admite dos modos de almacenamiento:

  1. 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
  2. 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

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:

npm install -g @pinkpixel/mem0-mcp

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)

{ "mcpServers": { "mem0-mcp": { "command": "npx", "args": [ "-y", "@pinkpixel/mem0-mcp" ], "env": { "MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, "disabled": false, "alwaysAllow": [ "add_memory", "search_memory" ] } } }

Nota: Reemplace "YOUR_MEM0_API_KEY_HERE" con su clave API Mem0 real.

Configuración de almacenamiento local (alternativa)

{ "mcpServers": { "mem0-mcp": { "command": "npx", "args": [ "-y", "@pinkpixel/mem0-mcp" ], "env": { "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, "disabled": false, "alwaysAllow": [ "add_memory", "search_memory" ] } } }

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:

git clone https://github.com/pinkpixel-dev/mem0-mcp cd mem0-mcp npm install npm run build

Luego, configure su cliente MCP para ejecutar el script creado directamente usando node :

{ "mcpServers": { "mem0-mcp": { "command": "node", "args": [ "/absolute/path/to/mem0-mcp/build/index.js" ], "env": { "MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE", "DEFAULT_USER_ID": "user123" // OR use "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE" for local storage }, "disabled": false, "alwaysAllow": [ "add_memory", "search_memory" ] } } }

Notas importantes:

  1. Reemplace /absolute/path/to/mem0-mcp/ con la ruta absoluta real a su repositorio clonado
  2. Utilice el archivo build/index.js , no el archivo src/index.ts
  3. 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 :

{ "mcpServers": { "mem0-mcp": { "command": "npx", "args": [ "-y", "@pinkpixel/mem0-mcp" ], "env": { "MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, } } }

O cuando se ejecuta directamente con node :

git clone https://github.com/pinkpixel-dev/mem0-mcp cd mem0-mcp npm install npm run build
{ "mcpServers": { "mem0-mcp": { "command": "node", "args": [ "path/to/mem0-mcp/build/index.js" ], "env": { "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, } } }

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 y threshold
  • 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:

git clone https://github.com/pinkpixel-dev/mem0-mcp cd mem0-mcp npm install

Construir el servidor:

npm run build

Para el desarrollo con reconstrucción automática ante cambios de archivos:

npm run watch

Depuración 🐞

Dado que los servidores MCP se comunican a través de stdio, la depuración puede ser complicada. Aquí hay algunos enfoques:

  1. Utilice el Inspector MCP : esta herramienta puede supervisar la comunicación del protocolo MCP:
npm run inspector
  1. Registro de la consola : al agregar registros de la consola, utilice siempre console.error() en lugar de console.log() para evitar interferir con el protocolo MCP
  2. 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ámetroTipoDescripción
metadataobjetoAlmacena contexto adicional sobre la memoria (p. ej., ubicación, hora, identificadores). Esto puede usarse para filtrar durante la recuperación.
includescadenaPreferencias específicas para incluir en la memoria.
excludescadenaPreferencias específicas para excluir de la memoria.
inferbooleanoSi inferir recuerdos o almacenar mensajes directamente (predeterminado: verdadero).
output_formatcadenaVersión de formato, ya sea v1.0 (predeterminada, obsoleta) o v1.1 (recomendada).
custom_categoriesobjetoLista de categorías con nombres y descripciones.
custom_instructionscadenaPautas específicas del proyecto para el manejo y la organización de los recuerdos.
immutablebooleanoSi la memoria es inmutable (predeterminado: falso).
expiration_datecadenaCuando caducará la memoria (formato: AAAA-MM-DD).
org_idcadenaID de organización asociada a esta memoria.
project_idcadenaID del proyecto asociado a esta memoria.
versioncadenaVersió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:

{ "content": "Important information to remember", "userId": "user123", "sessionId": "project-abc", "metadata": { "includes": "important context", "excludes": "sensitive data", "immutable": true, "expiration_date": "2025-12-31", "custom_instructions": "Prioritize this memory for financial questions", "version": "v2" } }

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ámetroTipoDescripción
filtersobjetoFiltros complejos con operadores lógicos y condiciones de comparación
top_kenteroNúmero de resultados principales a devolver (predeterminado: 10)
fieldscadena[]Campos específicos a incluir en la respuesta
rerankbooleanoSi desea reordenar los recuerdos (predeterminado: falso)
keyword_searchbooleanoSi se debe buscar según palabras clave (predeterminado: falso)
filter_memoriesbooleanoSi desea filtrar los recuerdos (predeterminado: falso)
thresholdnúmeroUmbral mínimo de similitud para los resultados (predeterminado: 0,3)
org_idcadenaID de organización para filtrar recuerdos
project_idcadenaID de proyecto para filtrar recuerdos

El parámetro filters admite operaciones lógicas complejas (AND, OR) y varios operadores de comparación:

OperadorDescripción
inCoincide con cualquiera de los valores especificados
gteMayor o igual que
lteMenor o igual a
gtMás que
ltMenos que
neNo es igual a
icontainsComprobación de contención sin distinción entre mayúsculas y minúsculas

Ejemplo de uso de filtros complejos con la herramienta search_memory :

{ "query": "What are Alice's hobbies?", "userId": "user123", "filters": { "AND": [ { "user_id": "alice" }, { "agent_id": {"in": ["travel-agent", "sports-agent"]} } ] }, "threshold": 0.5, "top_k": 5 }

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 nube
  • OPENAI_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.

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

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.

  1. Features 🧠
    1. Tools
  2. Prerequisites 🔑
    1. Installation & Configuration ⚙️
      1. 1. Using npx (Recommended for quick use)
      2. 2. Running from Cloned Repository
      3. Default User ID (Optional Fallback)
    2. Cloud vs. Local Storage 🔄
      1. Cloud Storage (Mem0 API)
      2. Local Storage (OpenAI API)
    3. Development 💻
      1. Debugging 🐞
        1. Technical Implementation Notes 🔧
          1. Advanced Mem0 API Parameters
          2. SafeLogger
          3. Environment Variables
        ID: fd4ya2uyoa