Zero-knowledge persistent memory layer for Claude — MCP server
Project description
memoraeu-mcp
English
Zero-knowledge persistent memory layer for Claude — MCP server
MemoraEU gives Claude a persistent, encrypted memory. All content is encrypted client-side with AES-256-GCM before reaching the server — the server never sees your plaintext. Semantic search is powered by Mistral embeddings generated locally on your machine, before encryption.
Features
- 🔒 Zero-knowledge — AES-256-GCM encryption, key never leaves your machine
- 🧠 Semantic search — embeddings generated locally before encryption (Qdrant on server)
- 🔄 Auto memory — remembers and recalls context automatically
- 🚫 Deduplication — detects near-duplicate memories before storing
- 🇪🇺 EU hosted — GDPR compliant infrastructure
Installation
pip install memoraeu-mcp
Or with uvx (no install required, recommended):
uvx memoraeu-mcp
Claude Desktop configuration
Add to your claude_desktop_config.json, under mcpServers:
{
"mcpServers": {
"memoraeu": {
"command": "uvx",
"args": ["memoraeu-mcp"],
"env": {
"MEMORAEU_API_URL": "https://api.memoraeu.com",
"MEMORAEU_API_KEY": "meu-sk-...",
"MEMORAEU_SECRET": "your-memoraeu-password",
"MEMORAEU_SALT": "your-kdf-salt",
"MISTRAL_API_KEY": "your-mistral-key"
}
}
}
}
Understanding the variables
These five variables serve three distinct purposes — they are not interchangeable:
| Variable | Purpose | Where to get it |
|---|---|---|
MEMORAEU_API_KEY |
HTTP authentication (Bearer token sent with every request) | Dashboard → Settings → API Keys |
MEMORAEU_SECRET |
Your MemoraEU login password — used as the PBKDF2 input to derive the encryption key locally | Your account password |
MEMORAEU_SALT |
KDF salt generated by the server, unique to your account — combined with MEMORAEU_SECRET to produce the encryption key |
Dashboard → Settings → Encryption Keys |
MEMORAEU_API_URL |
API endpoint (use https://api.memoraeu.com for the hosted service) |
— |
MISTRAL_API_KEY |
Used to generate embeddings locally before encryption — required for zero-knowledge search (see below) | console.mistral.ai |
Why does the MCP need its own Mistral key?
Zero-knowledge means the server never sees your plaintext. To enable semantic search, embeddings must be computed before the content is encrypted — on your machine. The MCP calls Mistral directly with the plaintext, gets the embedding vector, encrypts the content, then sends both to the server. The server stores the opaque blob and the vector, but cannot reconstruct the original text. Without
MISTRAL_API_KEY, semantic search will not work.
Getting your keys
- Sign up at app.memoraeu.com
- Go to Settings → Encryption Keys → copy
MEMORAEU_SALT MEMORAEU_SECRETis your MemoraEU login password- Go to Settings → API Keys → create a key → copy
MEMORAEU_API_KEY - Get a Mistral API key at console.mistral.ai
Remote MCP via SSE (no local install)
You can connect directly from claude.ai web, Cursor, Windsurf or any remote MCP client without installing anything locally:
SSE endpoint: https://api.memoraeu.com/mcp/sse
Auth: Authorization: Bearer meu-sk-...
Example config for Cursor / Windsurf:
{
"mcpServers": {
"memoraeu": {
"type": "sse",
"url": "https://api.memoraeu.com/mcp/sse",
"headers": {
"Authorization": "Bearer meu-sk-..."
}
}
}
}
Note: In SSE remote mode, content is not zero-knowledge encrypted (the server handles plaintext). Use the local
stdioinstall for full zero-knowledge guarantees.
Available tools
| Tool | Description |
|---|---|
remember |
Memorizes important information automatically |
recall |
Semantic search across stored memories |
forget |
Deletes a memory by ID |
list_memories |
Lists recent memories with optional category filter |
list_categories |
Returns existing categories sorted by usage |
remember_fact |
Stores a structured fact (subject/predicate/object) with temporal validity |
recall_facts |
Retrieves active facts for a subject |
invalidate_fact |
Marks a fact as expired by its ID |
Self-hosting
The API is open source. Deploy your own instance with Docker:
git clone https://github.com/pquattro/memoraEu
cd memoraEu
docker compose up -d
Français
Couche mémoire persistante zero-knowledge pour Claude — serveur MCP
MemoraEU donne à Claude une mémoire persistante et chiffrée. Tout le contenu est chiffré côté client en AES-256-GCM avant d'atteindre le serveur — le serveur ne voit jamais le texte en clair. La recherche sémantique repose sur des embeddings Mistral générés localement, avant chiffrement.
Fonctionnalités
- 🔒 Zero-knowledge — chiffrement AES-256-GCM, la clé ne quitte jamais votre machine
- 🧠 Recherche sémantique — embeddings générés localement avant chiffrement (Qdrant côté serveur)
- 🔄 Mémoire automatique — mémorise et rappelle le contexte sans intervention
- 🚫 Déduplication — détecte les doublons avant stockage
- 🇪🇺 Hébergé en Europe — infrastructure conforme RGPD
Installation
pip install memoraeu-mcp
Ou avec uvx (sans installation, recommandé) :
uvx memoraeu-mcp
Configuration Claude Desktop
Ajoutez dans votre claude_desktop_config.json, section mcpServers :
{
"mcpServers": {
"memoraeu": {
"command": "uvx",
"args": ["memoraeu-mcp"],
"env": {
"MEMORAEU_API_URL": "https://api.memoraeu.com",
"MEMORAEU_API_KEY": "meu-sk-...",
"MEMORAEU_SECRET": "votre-mot-de-passe-memoraeu",
"MEMORAEU_SALT": "votre-kdf-salt",
"MISTRAL_API_KEY": "votre-clé-mistral"
}
}
}
}
Rôle de chaque variable
Ces cinq variables ont trois rôles distincts — elles ne sont pas interchangeables :
| Variable | Rôle | Où la trouver |
|---|---|---|
MEMORAEU_API_KEY |
Authentification HTTP (Bearer token envoyé à chaque requête) | Dashboard → Paramètres → Clés API |
MEMORAEU_SECRET |
Votre mot de passe MemoraEU — utilisé comme entrée PBKDF2 pour dériver la clé de chiffrement localement | Votre mot de passe de connexion |
MEMORAEU_SALT |
Salt KDF généré par le serveur, unique à votre compte — combiné avec MEMORAEU_SECRET pour produire la clé de chiffrement |
Dashboard → Paramètres → Clés de chiffrement |
MEMORAEU_API_URL |
Endpoint API (utilisez https://api.memoraeu.com pour le service hébergé) |
— |
MISTRAL_API_KEY |
Génération des embeddings localement avant chiffrement — requis pour la recherche zero-knowledge (voir ci-dessous) | console.mistral.ai |
Pourquoi le MCP a-t-il besoin d'une clé Mistral ?
Le zero-knowledge signifie que le serveur ne voit jamais votre texte en clair. Pour permettre la recherche sémantique, les embeddings doivent être calculés avant le chiffrement — sur votre machine. Le MCP appelle Mistral directement avec le texte clair, obtient le vecteur d'embedding, chiffre le contenu, puis envoie les deux au serveur. Le serveur stocke le blob opaque et le vecteur, mais ne peut pas reconstituer le texte original. Sans
MISTRAL_API_KEY, la recherche sémantique ne fonctionnera pas.
Obtenir vos clés
- Créez un compte sur app.memoraeu.com
- Allez dans Paramètres → Clés de chiffrement → copiez
MEMORAEU_SALT MEMORAEU_SECRETest votre mot de passe de connexion MemoraEU- Allez dans Paramètres → Clés API → créez une clé → copiez
MEMORAEU_API_KEY - Obtenez une clé Mistral sur console.mistral.ai
MCP Remote via SSE (sans installation locale)
Connectez-vous directement depuis claude.ai web, Cursor, Windsurf ou tout client MCP distant sans rien installer :
Endpoint SSE : https://api.memoraeu.com/mcp/sse
Auth : Authorization: Bearer meu-sk-...
Exemple de config Cursor / Windsurf :
{
"mcpServers": {
"memoraeu": {
"type": "sse",
"url": "https://api.memoraeu.com/mcp/sse",
"headers": {
"Authorization": "Bearer meu-sk-..."
}
}
}
}
Note : En mode SSE distant, le contenu n'est pas chiffré zero-knowledge (le serveur traite le texte en clair). Utilisez l'installation locale
stdiopour les garanties zero-knowledge complètes.
Outils disponibles
| Outil | Description |
|---|---|
remember |
Mémorise automatiquement les informations importantes |
recall |
Recherche sémantique dans les mémoires stockées |
forget |
Supprime une mémoire par son ID |
list_memories |
Liste les mémoires récentes avec filtre optionnel |
list_categories |
Retourne les catégories existantes triées par usage |
remember_fact |
Stocke un fait structuré (sujet/prédicat/objet) avec validité temporelle |
recall_facts |
Récupère les faits actifs pour un sujet |
invalidate_fact |
Marque un fait comme expiré par son ID |
Auto-hébergement
L'API est open source. Déployez votre propre instance avec Docker :
git clone https://github.com/pquattro/memoraEu
cd memoraEu
docker compose up -d
License
MIT © 2026 MemoraEU
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file memoraeu_mcp-0.1.9.tar.gz.
File metadata
- Download URL: memoraeu_mcp-0.1.9.tar.gz
- Upload date:
- Size: 15.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
429773b07213ecf62ddcfc6f5dcc317455f5bab3c7371d436e40a354d632023b
|
|
| MD5 |
417cb7a3d41d37fec0550272de23f128
|
|
| BLAKE2b-256 |
f583f18a91c674b6d43bf8881614dbcc933fa63d587c9b065a1c1f6ca99fb01d
|
File details
Details for the file memoraeu_mcp-0.1.9-py3-none-any.whl.
File metadata
- Download URL: memoraeu_mcp-0.1.9-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9763c64ab4f2f0221ce47f556dc243b7511c0df15b9b672093a88039b14a9b63
|
|
| MD5 |
0c8f7fd86625871e59d334f7d268a843
|
|
| BLAKE2b-256 |
6fee2425112dbf65024067898b898b7c491bc7301b665371c25a60d8a4070a34
|