Memlord

oficial

Servidor de memória MCP auto-hospedado para uso pessoal e equipes

O que você pode fazer com Memlord MCP?

  • Armazenar uma memória com tipo e tags — Use store_memory para salvar um fato, preferência, instrução, feedback, decisão ou insight, definindo opcionalmente uma expiração.
  • Pesquisar memórias com recuperação híbrida — Peça ao retrieve_memory para encontrar memórias relevantes usando busca combinada BM25 de texto completo e busca semântica vetorial, retornando trechos compactos.
  • Recuperar memórias por expressão de tempo — Use recall_memory para encontrar memórias que correspondam a consultas de tempo em linguagem natural, como "semana passada" ou "ontem".
  • Navegar e filtrar todas as memórias — Chame list_memories com filtros de tipo e tag para paginar pelas memórias armazenadas.
  • Consolidar memórias através do sonho — Execute o prompt dream para que o assistente revise os candidatos de dream_report, mescle quase-duplicatas em insights e retire memórias substituídas de forma não destrutiva.

Documentação

Servidor de memória MCP auto-hospedado com busca híbrida BM25 + semântica, apoiado por PostgreSQL +
pgvector

Servidor de memória MCP auto-hospedado para uso pessoal e equipes

License Python Version MCP Ruff MCP score

Início RápidoComo FuncionaFerramentas MCPConfiguraçãoRequisitosLicença


✨ Funcionalidades

  • 🔍 Busca híbrida — BM25 (texto completo) + KNN vetorial (pgvector) fundidos via Reciprocal Rank Fusion
  • 📂 Multiusuário — cada usuário vê apenas suas próprias memórias; espaços de trabalho para conhecimento compartilhado da equipe
  • 🛠️ 11 ferramentas MCP — armazenar, recuperar, recordar, listar, buscar por tag, obter, atualizar, excluir, mover, listar espaços de trabalho, relatório de sonho
  • 💤 Sonho — uma passagem de consolidação guiada (prompt MCP dream + ferramenta dream_report): encontra memórias quase duplicadas e conflitantes, mescla-as em insights de forma não destrutiva, conduzida pelo LLM cliente
  • 🌐 Interface Web — navegue, busque, edite e exclua memórias no navegador; exporte/importe JSON
  • 🔒 OAuth 2.1 — servidor de autorização completo em processo, sempre ativado
  • 🐘 PostgreSQL — pgvector para embeddings, tsvector para busca de texto completo
  • 📊 Divulgação progressiva — a busca retorna trechos compactos por padrão; chame get_memory(name) apenas para o que você precisa, reduzindo o uso de tokens
  • 🔁 Deduplicação — detecta automaticamente memórias quase idênticas antes de salvar, prevenindo acúmulo de ruído

🆚 Como o Memlord se compara

MemlordOpenMemorymcp-memory-servicebasic-memory
BuscaBM25 + vetorial + RRFApenas vetorial (Qdrant)BM25 + vetorial + RRFBM25 + vetorial
EmbeddingsONNX local, configuração zeroOpenAI padrão; Ollama opcionalONNX local, configuração zeroFastEmbed local
ArmazenamentoPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + arquivos Markdown
Multiusuário❌ usuário único na prática⚠️ escopo por agent-ID, sem isolamento
Espaços de trabalho✅ compartilhado + pessoal, links de convite⚠️ namespace "Apps"⚠️ tags + conversation_id✅ flag por projeto
Autenticação✅ OAuth 2.1❌ nenhuma (auto-hospedado)✅ OAuth 2.0 + PKCE
Interface Web✅ navegar, editar, exportar✅ painel Next.js✅ interface rica, visualização de grafo, pontuações de qualidade❌ local; apenas nuvem
Ferramentas MCP11515+~20
Auto-hospedado✅ processo único✅ Docker (3 contêineres)
Entrada de memóriaManual (armazenamento explícito)Extração automática por LLMManualManual (notas Markdown)
Tipos de memóriafato / preferência / instrução / feedback / decisão / insightfatos extraídos automaticamenteobservações + links wiki
Busca temporal✅ datas em linguagem natural⚠️ apenas REST, não nas ferramentas MCP✅ recent_activity
Eficiência de tokens✅ divulgação progressiva✅ travessia build_context
Importação / Exportação✅ JSON✅ ZIP (JSON + JSONL)✅ Markdown (legível por humanos)
LicençaAGPL-3.0 / ComercialApache 2.0Apache 2.0AGPL-3.0

Onde os concorrentes têm uma vantagem real:

  • OpenMemory — extrai memórias automaticamente de texto de conversa bruto; sem necessidade de decidir o que armazenar manualmente; boa importação/exportação
  • mcp-memory-service — interface web mais rica (visualização de grafo, pontuação de qualidade, 8 abas); licença mais permissiva (Apache 2.0); múltiplas opções de transporte (stdio, SSE, HTTP)
  • basic-memory — memórias são arquivos Markdown legíveis por humanos que você pode editar, versionar e ler sem nenhum servidor; links de entidade estilo wiki formam um grafo de conhecimento local; ~20 ferramentas MCP

Quando escolher o Memlord:

  • Você quer embeddings locais com configuração zero — o modelo ONNX vem com o servidor, sem necessidade de Ollama ou API externa
  • Você executa um servidor de equipe multiusuário com autenticação OAuth 2.1 adequada e espaços de trabalho baseados em convite
  • Você quer um banco de dados de nível de produção (PostgreSQL) que escala além do SQLite de uma única máquina
  • Você gerencia memórias explicitamente — armazena exatamente o que importa, tipado e etiquetado, não tudo o que o LLM decide extrair
  • Você quer uma Interface Web auto-hospedada com CRUD completo e exportação JSON, sem assinatura na nuvem

🚀 Início Rápido

🐳 Docker

cp .env.example .env
docker compose up

Servidor HTTP (multiusuário, Interface 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

Abra http://localhost:8000 para a Interface Web. O endpoint MCP está em /mcp.


🔍 Como Funciona

Cada solicitação de busca executa BM25 e KNN vetorial em paralelo, depois mescla os resultados via Reciprocal Rank Fusion:

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])

⚙️ Configuração

Todas as configurações usam o prefixo MEMLORD_. Veja .env.example para a lista completa.

VariávelPadrãoDescrição
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordURL de conexão PostgreSQL
MEMLORD_PORT8000Porta do servidor
MEMLORD_BASE_URLhttp://localhost:8000URL pública para OAuth (modo HTTP)
MEMLORD_OAUTH_JWT_SECRETmemlord-dev-secret-please-changeSegredo de assinatura JWT (modo HTTP)

Defina MEMLORD_BASE_URL para sua URL pública e altere MEMLORD_OAUTH_JWT_SECRET antes de implantar.


🛠️ Ferramentas MCP

FerramentaDescrição
store_memorySalva uma memória (idempotente por conteúdo); gera erro em quase duplicatas; expires_at opcional
retrieve_memoryBusca híbrida semântica + texto completo; retorna trechos por padrão
recall_memoryBusca por expressão de tempo em linguagem natural; retorna trechos por padrão
list_memoriesLista paginada com filtros de tipo/tag
search_by_tagBusca de tags AND/OR
get_memoryObtém uma única memória por nome com conteúdo completo (incluindo expiradas)
update_memoryAtualiza conteúdo, tipo, tags, metadados ou expiração por nome (e opcionalmente renomeia)
delete_memoryExclui por nome
move_memoryMove uma memória para um espaço de trabalho diferente
list_workspacesLista espaços de trabalho dos quais você é membro (incluindo pessoais)
dream_reportCandidatos a consolidação somente leitura: pares de memórias similares, memórias expiradas e prestes a expirar

O prompt MCP dream guia o LLM cliente através de uma passagem de consolidação completa sobre a saída de dream_report: classifica pares similares (duplicado / complementar / conflito), mescla em memórias insight, aposenta as substituídas via expires_at — nunca de forma destrutiva.

O gerenciamento de espaço de trabalho (criar, convidar, entrar, sair) é feito via Interface Web.


💻 Requisitos do Sistema

  • Python 3.12
  • PostgreSQL ≥ 15 com extensão pgvector
  • uv — Gerenciador de pacotes Python

👨‍💻 Desenvolvimento

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

📄 Licença

Memlord é licenciado duplamente: