Skip to main content
Glama

mcp-mem0

Un servidor MCP para mem0 (autohospedado / código abierto) respaldado por Qdrant. Cada solicitud apunta a una colección de Qdrant nombrada por un encabezado HTTP, de modo que los clientes que envían el mismo nombre comparten memorias y los nombres diferentes permanecen aislados.

Herramientas

Herramienta

Propósito

add_memory

Almacenar memorias (extracción de hechos con LLM, o en bruto con infer=false)

search_memory

Búsqueda semántica dentro de la colección de la solicitud

update_memory

Reemplazar el contenido de una memoria por id

delete_memory

Eliminar una memoria por id

get_memory

Obtener una memoria por id

list_memories

Listar memorias para un ámbito

memory_history

Historial de cambios de una memoria

delete_all_memories

Eliminar todas las memorias para un ámbito

Related MCP server: mem0-open-mcp

Cómo funciona el enrutamiento de colecciones

  • El nombre de la colección se lee de un encabezado HTTP (X-Collection por defecto) y se asigna a la colección de Qdrant mem0_<name> (prefijo configurable; establézcalo vacío para usar el valor tal cual). El valor del encabezado se valida contra ^[A-Za-z0-9_-]{1,64}$.

  • Compartir: cualquier cliente que envíe el mismo nombre de colección comparte las mismas memorias. Los nombres diferentes están aislados.

  • Se crea y se almacena en caché una instancia de AsyncMemory por colección.

  • La colección se elige únicamente por el encabezado — user_id / agent_id / run_id nunca afectan a qué colección se usa; solo acotan dentro de una colección y son opcionales. Buscar / listar sin ninguno de ellos abarca toda la colección.

  • add_memory aún necesita un id para almacenar (requisito de mem0); se aplica un user_id por defecto (MEM0_DEFAULT_USER_ID) cuando el llamador omite los tres en una escritura.

Inicio rápido

# 1. Start Qdrant
docker compose up -d qdrant

# 2. Configure
cp .env.example .env
# edit .env: set OPENAI_API_KEY (or switch to the Ollama block for a key-free setup)

# 3. Run the server (streamable-HTTP on :8080/mcp)
uv run -m mcp_mem0

Comprobación de salud: curl localhost:8080/health

Docker

El Dockerfile es de múltiples etapas con dos objetivos: runtime (el servidor) y test (la suite).

Con docker compose (recomendado)

cp .env.example .env          # set OPENAI_API_KEY (or the Ollama block)

# Qdrant + server together
docker compose up -d --build qdrant server
curl localhost:8080/health

# Run unit tests (no Qdrant / keys needed)
docker compose run --rm tests

# End-to-end smoke against the running server (needs an embedder key)
docker compose run --rm tests python tests/smoke.py

Dentro de la red de compose, el servidor alcanza a Qdrant en QDRANT_HOST=qdrant (configurado automáticamente); las pruebas alcanzan al servidor en MCP_URL=http://server:8080/mcp.

Con docker simple

# Service image
docker build --target runtime -t mcp-mem0 .
docker run --rm -p 8080:8080 --env-file .env -e QDRANT_HOST=host.docker.internal mcp-mem0

# Test image
docker build --target test -t mcp-mem0-test .
docker run --rm mcp-mem0-test            # pytest -q

Verificar

# Unit tests (no Qdrant needed)
uv run pytest -q

# End-to-end smoke test (server + Qdrant + embedder must be running)
uv run python tests/smoke.py

# Confirm per-client collections were created
curl localhost:6333/collections

Configuración

Todos los ajustes provienen de variables de entorno / .env — consulte .env.example. Los principales: MEM0_COLLECTION_HEADER, MEM0_COLLECTION_PREFIX, QDRANT_HOST/QDRANT_PORT (o QDRANT_URL+QDRANT_API_KEY), MEM0_EMBEDDING_DIMS (debe coincidir con el incrustador), y los bloques de proveedor MEM0_LLM_* / MEM0_EMBEDDER_* (openai / ollama / …).

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers