Skip to main content
Glama
miguelvictor

personal-memory-mcp

by miguelvictor

Personal Memory MCP Server

Un almacén de hechos sobre tu vida, sin pérdidas, estructurado y consultable, que Claude lee y escribe durante cualquier conversación. Un despliegue sirve a una sola persona. Se ejecuta por completo en el nivel gratuito de Cloudflare (Workers + D1 + KV). Consulta requirements.md para la especificación completa.

  • Hechos, no documentos. Cada hecho es una declaración fechada con procedencia.

  • Solo añadir. Las correcciones insertan un hecho nuevo y retiran el anterior con un puntero; nada se elimina.

  • Autenticación: OAuth 2.1 con registro dinámico de clientes; identidad mediante GitHub, vinculada a una única cuenta de GitHub.

  • Transporte: Streamable HTTP en /mcp (createMcpHandler sin estado, sin Durable Objects).

Configuración

1. Crear los recursos de Cloudflare

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

Coloca el database_id de D1 y el id del espacio de nombres KV devueltos en wrangler.jsonc y luego aplica las migraciones:

npx wrangler d1 migrations apply memory --remote

2. Crear la aplicación OAuth de GitHub

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

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

  • URL de devolución de llamada de autorización: https://personal-memory-mcp.<your-subdomain>.workers.dev/callback

Encuentra tu id numérico de GitHub en https://api.github.com/users/<your-login> (el campo id).

3. Establecer los secretos

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

(Al desplegar mediante Workers Builds CI/CD, establécelos una vez en el panel de Cloudflare en Configuración del Worker → Variables y secretos; sobreviven a los despliegues).

4. Desplegar

npm run deploy

O conecta el repositorio de GitHub en el panel de Cloudflare (Workers Builds) para que cada push se despliegue. Las migraciones no se ejecutan automáticamente en el despliegue; sigue aplicándolas manualmente o configura el comando de despliegue de Workers Builds como:

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

5. Conectar desde Claude.ai

Configuración → Conectores → Añadir conector personalizado → URL https://personal-memory-mcp.<your-subdomain>.workers.dev/mcp, deja en blanco el ID de cliente/Secreto (registro dinámico de clientes). Se te redirigirá al inicio de sesión de GitHub; cualquier cuenta que no sea OWNER_GITHUB_ID recibirá un 403. El conector funciona entonces desde la web de Claude, el escritorio e iOS.

Añade a las preferencias de tu perfil de Claude.ai:

Ejecuto un servidor MCP de memoria personal llamado "memory". Es la fuente de verdad sobre mi vida y anula tu memoria integrada. Cuando hablemos de algo personal, úsalo según las descripciones de las herramientas. Si no está disponible, dímelo y ten en cuenta que tu respuesta puede estar desactualizada.

6. Datos iniciales (opcional)

  1. Pide a Claude que redacte seed.json a partir de su memoria integrada: [{topic, content, fact_date?, tags?}], un hecho por entrada.

  2. Revísalo y luego:

npm run seed              # validates seed.json, writes seed-import.sql
npx wrangler d1 execute memory --remote --file=seed-import.sql
  1. En una primera conversación, pide a Claude que escriba los resúmenes iniciales de los temas (update_summary).

Related MCP server: chronomem

Desarrollo

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

Prueba con el inspector MCP: npx @modelcontextprotocol/inspector@latest → conéctate a http://localhost:8788/mcp. La redirección OAuth de localhost del inspector solo funciona con ALLOW_LOCALHOST_REDIRECTS=1 (configurado en .dev.vars, nunca en producción; producción solo acepta las devoluciones de llamada del conector de Claude).

Notas

  • Copias de seguridad: usa la herramienta export (markdown o json). La exportación nativa de D1 no funciona mientras existan tablas virtuales FTS5. D1 Time Travel permite restaurar a un punto en el tiempo (30 días en el plan de pago, menos en el gratuito; verifica la retención actual).

  • Diferido deliberadamente (decisión del propietario, no descuidos): el cron de copia de seguridad semanal del §11 a un repositorio privado de GitHub y el visor de solo lectura /view del §12. Hasta que exista el cron, ejecuta export periódicamente y guarda la salida en un lugar seguro.

  • El flujo de aprobación de OAuth solo acepta las devoluciones de llamada del conector claude.ai/claude.com como URI de redirección (localhost requiere la bandera de solo desarrollo anterior).

  • Las filas nunca se eliminan en el funcionamiento normal; el propietario corrige los hechos diciéndoselo a Claude.

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