Labsco
MCP SERVER

MemoraEu

by pquattro

Encrypted persistent memory for assistants, hosted in the EU or self-hosted with Docker — the client encrypts before anything is stored, and two tools do the remembering.

Agent Memory
Summary
Zero-knowledge means the recall quality has to come from somewhere else.

Encrypting on the client before storage is the strong claim here, and it constrains the design honestly: embeddings are computed locally before encryption, so semantic search still works while the server holds only ciphertext. The other well-judged piece is that the tool descriptions themselves instruct the assistant when to call them — memory that depends on a user remembering to say 'remember this' does not get used. Self-hosting is a real deployment with a vector database attached, not a single binary.

What it is

A self-hostable memory server for AI assistants, with a managed EU-hosted option. Memories are searched semantically through a vector database, scoped per user and organisation behind JWT auth, and encrypted client-side so the server holds ciphertext. It speaks both legacy SSE and HTTP Streamable, so it reaches desktop clients and browser-based ones alike.

What you get
  • Two tools the model is told to use on its own: `recall` on the first message of each session, and `remember` whenever something is worth retaining — on the first recall, the behaviour prompt is injected into the assistant's context
  • Semantic search over stored memories, backed by Qdrant with embeddings from Ollama or Mistral
  • Client-side AES-256-GCM encryption with a key derived locally through PBKDF2-SHA256, so the plaintext never reaches the server
  • Multi-user and multi-organisation separation behind JWT authentication
  • Temporal facts carrying validity periods, and LLM-assisted merging of similar memories rather than duplicates piling up
  • Built-in GDPR endpoints for export, deletion and history
  • Two transports over the same store: legacy SSE for desktop clients, HTTP Streamable for browser and hosted clients, plus OAuth 2.0 PKCE
Requirements

For the managed option: an API key from the Memoraeu app, `uvx memoraeu-mcp` for the client, and the hosted SSE URL in your config. To self-host: Docker Compose, with `.env` carrying at minimum a JWT secret of 32 characters or more, plus the encryption secret and salt and — if you embed through Mistral rather than local Ollama — a Mistral API key. The API comes up on port 8000 with docs at `/docs` and MCP at `/mcp/sse`. One setting will otherwise bite you: if you expose the server on a domain, add it to the allowed-hosts list or requests are rejected with a 421. Since version 1.4.0, HTTP Streamable no longer accepts the token in the query string — use the `Authorization: Bearer` header. Python 3.11+, AGPL v3.

Setup effort

One command plus a key — uvx memoraeu-mcp, then supply credentials