Memlord

oficial

Servidor de memoria MCP autoalojado para uso personal y equipos

¿Qué puedes hacer con Memlord MCP?

  • Almacenar un recuerdo con tipo y etiquetas — Usa store_memory para guardar un hecho, preferencia, instrucción, comentario, decisión o idea, opcionalmente estableciendo una expiración.
  • Buscar recuerdos con recuperación híbrida — Pide a retrieve_memory que encuentre recuerdos relevantes usando la búsqueda combinada BM25 de texto completo y semántica vectorial, devolviendo fragmentos compactos.
  • Recordar recuerdos por expresión temporal — Usa recall_memory para encontrar recuerdos que coincidan con consultas de tiempo en lenguaje natural como "la semana pasada" o "ayer".
  • Navegar y filtrar todos los recuerdos — Llama a list_memories con filtros de tipo y etiqueta para paginar entre los recuerdos almacenados.
  • Consolidar recuerdos mediante sueños — Ejecuta el prompt dream para que el asistente revise los candidatos de dream_report, fusione casi duplicados en ideas y retire recuerdos reemplazados de forma no destructiva.

Documentación

Servidor MCP de memoria autohospedado con búsqueda híbrida BM25 + semántica, respaldado por PostgreSQL +
pgvector

Servidor MCP de memoria autohospedado para uso personal y equipos

License Python Version MCP Ruff MCP score

Inicio rápidoCómo funcionaHerramientas MCPConfiguraciónRequisitosLicencia


✨ Características

  • 🔍 Búsqueda híbrida — BM25 (texto completo) + KNN vectorial (pgvector) fusionados mediante Fusión de Rango Recíproco
  • 📂 Multiusuario — cada usuario ve solo sus propias memorias; espacios de trabajo para conocimiento compartido en equipo
  • 🛠️ 11 herramientas MCP — almacenar, recuperar, recordar, listar, buscar por etiqueta, obtener, actualizar, eliminar, mover, listar espacios de trabajo, informe de sueños
  • 💤 Soñar — un pase de consolidación guiado (prompt MCP dream + herramienta dream_report): encuentra memorias casi duplicadas y conflictivas, las fusiona en ideas de forma no destructiva, impulsado por el LLM del cliente
  • 🌐 Interfaz web — navegar, buscar, editar y eliminar memorias en el navegador; exportar/importar JSON
  • 🔒 OAuth 2.1 — servidor de autorización completo en proceso, siempre habilitado
  • 🐘 PostgreSQL — pgvector para incrustaciones, tsvector para búsqueda de texto completo
  • 📊 Divulgación progresiva — la búsqueda devuelve fragmentos compactos por defecto; llama a get_memory(name) solo para lo que necesitas, reduciendo el uso de tokens
  • 🔁 Deduplicación — detecta automáticamente memorias casi idénticas antes de guardar, evitando la acumulación de ruido

🆚 Cómo se compara Memlord

MemlordOpenMemorymcp-memory-servicebasic-memory
BúsquedaBM25 + vectorial + RRFSolo vectorial (Qdrant)BM25 + vectorial + RRFBM25 + vectorial
IncrustacionesONNX local, configuración ceroOpenAI por defecto; Ollama opcionalONNX local, configuración ceroFastEmbed local
AlmacenamientoPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + archivos Markdown
Multiusuario❌ un solo usuario en la práctica⚠️ ámbito por ID de agente, sin aislamiento
Espacios de trabajo✅ compartidos + personales, enlaces de invitación⚠️ espacio de nombres "Apps"⚠️ etiquetas + conversation_id✅ bandera por proyecto
Autenticación✅ OAuth 2.1❌ ninguna (autohospedado)✅ OAuth 2.0 + PKCE
Interfaz web✅ navegar, editar, exportar✅ panel de Next.js✅ interfaz rica, visualización de grafos, puntuaciones de calidad❌ local; solo en la nube
Herramientas MCP11515+~20
Autohospedado✅ proceso único✅ Docker (3 contenedores)
Entrada de memoriaManual (almacenamiento explícito)Extracción automática por LLMManualManual (notas Markdown)
Tipos de memoriahecho / preferencia / instrucción / retroalimentación / decisión / ideahechos extraídos automáticamenteobservaciones + enlaces wiki
Búsqueda con conciencia temporal✅ fechas en lenguaje natural⚠️ solo REST, no en herramientas MCP✅ recent_activity
Eficiencia de tokens✅ divulgación progresiva✅ recorrido build_context
Importar / Exportar✅ JSON✅ ZIP (JSON + JSONL)✅ Markdown (legible por humanos)
LicenciaAGPL-3.0 / ComercialApache 2.0Apache 2.0AGPL-3.0

Donde los competidores tienen una ventaja real:

  • OpenMemory — extrae memorias automáticamente del texto de conversación en bruto; no es necesario decidir qué almacenar manualmente; buena importación/exportación
  • mcp-memory-service — interfaz web más rica (visualización de grafos, puntuación de calidad, 8 pestañas); licencia más permisiva (Apache 2.0); múltiples opciones de transporte (stdio, SSE, HTTP)
  • basic-memory — las memorias son archivos Markdown legibles por humanos que puedes editar, controlar versiones y leer sin ningún servidor; los enlaces de entidad estilo wiki forman un grafo de conocimiento local; ~20 herramientas MCP

Cuándo elegir Memlord:

  • Quieres incrustaciones locales sin configuración — el modelo ONNX se incluye con el servidor, no se necesita Ollama ni API externa
  • Ejecutas un servidor de equipo multiusuario con autenticación OAuth 2.1 adecuada y espacios de trabajo basados en invitaciones
  • Quieres una base de datos de grado de producción (PostgreSQL) que escale más allá del SQLite de una sola máquina
  • Gestionas memorias explícitamente — almacenas exactamente lo que importa, tipado y etiquetado, no todo lo que el LLM decide extraer
  • Quieres una interfaz web autohospedada con CRUD completo y exportación JSON, sin suscripción a la nube

🚀 Inicio rápido

🐳 Docker

cp .env.example .env
docker compose up

Servidor HTTP (multiusuario, interfaz web, OAuth)

# Install dependencies
uv sync --dev

# Download ONNX model (~23 MB)
uv run python scripts/download_model.py

# Run migrations
alembic upgrade head

# Start the server
memlord

Abre http://localhost:8000 para la interfaz web. El endpoint MCP está en /mcp.


🔍 Cómo funciona

Cada solicitud de búsqueda ejecuta BM25 y KNN vectorial en paralelo, luego fusiona los resultados mediante Fusión de Rango Recíproco:

flowchart TD
    Q([query]) --> BM25["BM25\nsearch_vector @@ websearch_to_tsquery"]
    Q --> EMB["ONNX embed\nparaphrase-multilingual-MiniLM-L12-v2 · 384d · local"]
    EMB --> KNN["KNN\nembedding <=> query_vector\ncosine distance"]
    BM25 --> RRF["RRF fusion\nscore = 1/(k+rank_bm25) + 1/(k+rank_vec)\nk=60"]
    KNN --> RRF
    RRF --> R([top-N results])

⚙️ Configuración

Todos los ajustes usan el prefijo MEMLORD_. Consulta .env.example para la lista completa.

VariableValor predeterminadoDescripción
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordURL de conexión a PostgreSQL
MEMLORD_PORT8000Puerto del servidor
MEMLORD_BASE_URLhttp://localhost:8000URL pública para OAuth (modo HTTP)
MEMLORD_OAUTH_JWT_SECRETmemlord-dev-secret-please-changeSecreto de firma JWT (modo HTTP)

Establece MEMLORD_BASE_URL a tu URL pública y cambia MEMLORD_OAUTH_JWT_SECRET antes de desplegar.


🛠️ Herramientas MCP

HerramientaDescripción
store_memoryGuarda una memoria (idempotente por contenido); alerta sobre casi duplicados; expires_at opcional
retrieve_memoryBúsqueda híbrida semántica + texto completo; devuelve fragmentos por defecto
recall_memoryBusca por expresión de tiempo en lenguaje natural; devuelve fragmentos por defecto
list_memoriesLista paginada con filtros de tipo/etiqueta
search_by_tagBúsqueda de etiquetas AND/OR
get_memoryObtiene una sola memoria por nombre con contenido completo (incluye expiradas)
update_memoryActualiza contenido, tipo, etiquetas, metadatos o expiración por nombre (y opcionalmente renombra)
delete_memoryElimina por nombre
move_memoryMueve una memoria a un espacio de trabajo diferente
list_workspacesLista los espacios de trabajo de los que eres miembro (incluyendo personales)
dream_reportCandidatos de consolidación de solo lectura: pares de memorias similares, memorias expiradas y por expirar pronto

El prompt MCP dream guía al LLM del cliente a través de un pase de consolidación completo sobre la salida de dream_report: clasifica pares similares (duplicado / complementario / conflicto), fusiona en memorias insight, retira las reemplazadas mediante expires_at — nunca de forma destructiva.

La gestión del espacio de trabajo (crear, invitar, unirse, salir) se maneja a través de la interfaz web.


💻 Requisitos del sistema

  • Python 3.12
  • PostgreSQL ≥ 15 con extensión pgvector
  • uv — gestor de paquetes de Python

👨‍💻 Desarrollo

pyright src/           # type check
ruff format .          # format
pytest                 # run tests
alembic-autogen-check  # verify migrations are up to date

📄 Licencia

Memlord tiene doble licencia: