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/developersNew 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: Clark MCP Server

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.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

  • Cross-AI personal memory. Save once in ChatGPT, recall in Claude, Mistral, Grok, or any MCP client.

  • Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/miguelvictor/personal-memory-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server