Memlord MCP Server

oficial

Self-hosted MCP memory server for personal use and teams

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 Reciprocal Rank Fusion
  • 📂 Multiusuario — cada usuario ve solo sus propias memorias; espacios de trabajo para conocimiento compartido en equipo
  • 🛠️ 10 herramientas MCP — almacenar, recuperar, recordar, listar, buscar por etiqueta, obtener, actualizar, eliminar, mover, listar espacios de trabajo
  • 🌐 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 embeddings, 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 necesites, reduciendo el uso de tokens
  • 🔁 Deduplicación — detecta automáticamente memorias casi idénticas antes de guardar, evitando la acumulación de ruido

🆚 Comparativa de Memlord

MemlordOpenMemorymcp-memory-servicebasic-memory
BúsquedaBM25 + vectorial + RRFSolo vectorial (Qdrant)BM25 + vectorial + RRFBM25 + vectorial
EmbeddingsONNX local, sin configuraciónOpenAI por defecto; Ollama opcionalONNX local, sin configuraciónFastEmbed local
AlmacenamientoPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + archivos Markdown
Multiusuario❌ un solo usuario en la práctica⚠️ ámbito por agent-ID, 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 Next.js✅ IU rica, visualización de grafos, puntuaciones de calidad❌ local; solo en la nube
Herramientas MCP10515+~20
Autohospedado✅ proceso único✅ Docker (3 contenedores)
Entrada de memoriaManual (almacenamiento explícito)Autoextraída por LLMManualManual (notas Markdown)
Tipos de memoriahecho / preferencia / instrucción / retroalimentaciónhechos autoextraídosobservaciones + enlaces wiki
Búsqueda temporal✅ fechas en lenguaje natural⚠️ Solo REST, no en herramientas MCP✅ recent_activity
Eficiencia de tokens✅ divulgación progresiva✅ build_context traversal
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 — autoextrae memorias de 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 embeddings locales sin configuración — el modelo ONNX se incluye con el servidor, sin necesidad de Ollama o 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á de SQLite en una sola máquina
  • Gestionas las 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 Reciprocal Rank Fusion:

flowchart TD
    Q([query]) --> BM25["BM25\nsearch_vector @@ websearch_to_tsquery"]
    Q --> EMB["ONNX embed\nall-MiniLM-L6-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 por defectoDescripción
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordURL de conexión 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_memoryGuardar una memoria (idempotente por contenido); genera error en casi duplicados; expires_at opcional
retrieve_memoryBúsqueda híbrida semántica + texto completo; devuelve fragmentos por defecto
recall_memoryBuscar 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_memoryObtener una sola memoria por nombre con contenido completo
update_memoryActualizar contenido, tipo, etiquetas, metadatos o caducidad por nombre (y opcionalmente renombrar)
delete_memoryEliminar por nombre
move_memoryMover una memoria a un espacio de trabajo diferente
list_workspacesListar espacios de trabajo de los que eres miembro (incluyendo personales)

La gestión de espacios 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: