Skip to main content
Glama
miguelvictor

personal-memory-mcp

by miguelvictor

Personal Memory MCP Server

Ein verlustfreier, strukturierter, abfragbarer Speicher für Fakten über dein Leben, aus dem Claude in jedem Gespräch liest und in den es schreibt. Eine Bereitstellung dient einer Person. Läuft vollständig auf Cloudflares kostenlosem Tarif (Workers + D1 + KV). Die vollständige Spezifikation findest du in requirements.md.

  • Fakten, keine Dokumente. Jeder Fakt ist eine datierte Aussage mit Herkunftsnachweis.

  • Nur Anhängen. Korrekturen fügen einen neuen Fakt ein und ziehen den alten mit einem Verweis zurück; nichts wird gelöscht.

  • Auth: OAuth 2.1 mit Dynamic Client Registration; Identität über GitHub, gebunden an ein einzelnes GitHub-Konto.

  • Transport: Streamable HTTP unter /mcp (zustandsloser createMcpHandler, keine Durable Objects).

Einrichtung

1. Cloudflare-Ressourcen erstellen

npm install
npx wrangler d1 create memory
npx wrangler kv namespace create OAUTH_KV

Trage die zurückgegebene D1-database_id und die KV-Namespace-id in wrangler.jsonc ein und wende dann die Migrationen an:

npx wrangler d1 migrations apply memory --remote

2. GitHub-OAuth-App erstellen

Unter https://github.com/settings/developers → New OAuth App:

  • Homepage-URL: https://personal-memory-mcp.<your-subdomain>.workers.dev

  • Autorisierungs-Callback-URL: https://personal-memory-mcp.<your-subdomain>.workers.dev/callback

Finde deine numerische GitHub-ID unter https://api.github.com/users/<your-login> (Feld id).

3. Geheimnisse festlegen

npx wrangler secret put GITHUB_CLIENT_ID
npx wrangler secret put GITHUB_CLIENT_SECRET
npx wrangler secret put COOKIE_ENCRYPTION_KEY   # e.g. openssl rand -hex 32
npx wrangler secret put OWNER_GITHUB_ID         # numeric id, not login

(Beim Bereitstellen über Workers Builds CI/CD setze diese einmal im Cloudflare-Dashboard unter Einstellungen des Workers → Variablen und Geheimnisse; sie überleben Bereitstellungen.)

4. Bereitstellen

npm run deploy

Oder verbinde das GitHub-Repository im Cloudflare-Dashboard (Workers Builds), sodass jeder Push bereitstellt. Migrationen werden bei der Bereitstellung nicht automatisch ausgeführt; wende sie entweder weiterhin manuell an oder setze den Workers-Builds-Bereitstellungsbefehl auf:

npx wrangler d1 migrations apply memory --remote && npx wrangler deploy

5. Von Claude.ai verbinden

Einstellungen → Connectors → Custom Connector hinzufügen → URL https://personal-memory-mcp.<your-subdomain>.workers.dev/mcp, Client-ID/Geheimnis leer lassen (Dynamic Client Registration). Du wirst durch den GitHub-Login geführt; jedes Konto außer OWNER_GITHUB_ID erhält 403. Der Connector funktioniert dann über Claude Web, Desktop und iOS.

Füge deinen Claude.ai-Profilpräferenzen hinzu:

Ich betreibe einen persönlichen MCP-Server für Memory namens "memory". Er ist die Quelle der Wahrheit über mein Leben und überschreibt dein integriertes Gedächtnis. Wenn wir über etwas Persönliches sprechen, nutze ihn gemäß den Tool-Beschreibungen. Wenn er nicht erreichbar ist, sag es mir und weise darauf hin, dass deine Antwort möglicherweise veraltet ist.

6. Initiale Daten (optional)

  1. Bitte Claude, seed.json aus seinem integrierten Gedächtnis zu entwerfen: [{topic, content, fact_date?, tags?}], ein Fakt pro Eintrag.

  2. Prüfe es und führe dann aus:

npm run seed              # validates seed.json, writes seed-import.sql
npx wrangler d1 execute memory --remote --file=seed-import.sql
  1. Bitte Claude in einem ersten Gespräch, anfängliche Themenzusammenfassungen zu schreiben (update_summary).

Related MCP server: chronomem

Entwicklung

cp .dev.vars.example .dev.vars   # separate GitHub OAuth app with callback http://localhost:8788/callback
npx wrangler d1 migrations apply memory --local
npm run dev                      # http://localhost:8788/mcp
npm test                         # vitest (workers runtime, real D1 + FTS5)
npm run typecheck

Teste mit dem MCP-Inspector: npx @modelcontextprotocol/inspector@latest → verbinde dich mit http://localhost:8788/mcp. Die localhost-OAuth-Weiterleitung des Inspectors funktioniert nur mit ALLOW_LOCALHOST_REDIRECTS=1 (in .dev.vars gesetzt, niemals in der Produktion — die Produktion akzeptiert nur die Callbacks des Claude-Connectors).

Hinweise

  • Backups: Verwende das export-Tool (Markdown oder JSON). Der native D1-Export funktioniert nicht, solange FTS5-virtuelle Tabellen existieren. D1 Time Travel bietet Point-in-Time-Wiederherstellung (30 Tage im kostenpflichtigen Plan, kürzer im kostenlosen — aktuelle Aufbewahrungsdauer prüfen).

  • Bewusst aufgeschoben (Entscheidung des Besitzers, kein Versehen): der wöchentliche Backup-Cron aus §11 in ein privates GitHub-Repository und der schreibgeschützte Viewer /view aus §12. Solange der Cron nicht existiert, führe regelmäßig export aus und bewahre die Ausgabe an einem sicheren Ort auf.

  • Der OAuth-Genehmigungsablauf akzeptiert nur die Connector-Callbacks von claude.ai/claude.com als Redirect-URIs (localhost erfordert das obige Nur-Entwicklungs-Flag).

  • Zeilen werden im normalen Betrieb nie gelöscht; der Besitzer korrigiert Fakten, indem er es Claude sagt.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents and MCP clients to store, retrieve, and manage bi-temporal, graph-aware facts in an embedded SQLite memory engine with token-budgeted recall and contradiction tracking.
    6
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables personal AI memory management through MCP tools for adding, searching, exporting, and deleting memories, with knowledge-graph retrieval and multi-hop association for clients like Claude Desktop and Cursor.
    6
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients such as Cursor, Claude, and Windsurf to store and recall user preferences, behaviors, and other text-based information across conversations, using vector similarity search so conceptually related items are found even when exact keywords differ.
    15 npm
    MIT