Skip to main content
Glama
Cloudflare Memory MCP

Cloudflare Memory MCP

by ady133t

Cloudflare Memory MCP

Un servidor MCP de memoria por proyecto para opencode, alojado por completo en el plan gratuito de Cloudflare:

  • Notas: memorias simples con clave, etiquetas y tipos

  • Vector: recuperación semántica mediante Vectorize (embeddings de Workers AI @cf/baai/bge-m3, 1024 dimensiones, multilingüe)

  • Grafo: entidades + relaciones en D1 (SQLite) con recorrido recursivo

  • Panel web: abre / en un navegador para ver todos los proyectos con sus memorias. Cada tarjeta de proyecto abre una vista de detalle con un grafo interactivo dirigido por fuerzas de sus entidades y relaciones (rueda = zoom, arrastre = desplazamiento, doble clic o botones = restablecer, cursor encima = resaltar vecinos) y un botón Eliminar proyecto que borra el proyecto, sus notas, el grafo, las filas de FTS, las cachés y los embeddings vectoriales

opencode ── MCP (streamable HTTP + Bearer auth) ──> Worker
                                                     ├─ Vectorize   memory-vectors (namespace per project)
                                                     ├─ D1          projects / notes / nodes / edges / FTS5
                                                     ├─ Workers AI  bge-m3 embeddings
                                                     └─ KV          recent-memories cache

Capturas de pantalla

Lista de proyectos

El panel de control muestra todos los proyectos conocidos por la cuenta, incluidos los recuentos de memorias, entidades, relaciones y última actividad.

Grafo de conocimiento

Abre un proyecto para inspeccionar sus memorias y su grafo. El grafo admite aristas curvas y direccionales, resaltado al pasar el cursor, zoom con la rueda, desplazamiento arrastrando y controles de restablecer.

Related MCP server: second-brain-cloudflare

Cómo funciona el aislamiento de carperas

El servidor ejecuta sus sesiones MCP dentro de un Durable Object (plan gratuito, backend SQLite), lo que fija cada mensaje de una sesión a un único isolate. La identidad del proyecto se resuelve en este orden:

  1. El argumento project_root (recomendado) — pasas tu carpeta de trabajo a cualquier herramienta, por ejemplo remember({ project_root: "D:/Projects/foo", content: ... }). El servidor calcula un hash de la forma normalizada de la ruta para obtener un id de proyecto estable y lo recuerda durante el resto de la sesión, así que las llamadas posteriores pueden omitirlo. La herramienta identify_project permite fijarlo explícitamente.

  2. El argumento project_id — un identificador explícito (también se guarda en caché durante la sesión).

  3. Las cabeceras x-project-root / x-project-id — para los clientes que las definan.

  4. MCP roots — detección automática de carpetas cuando el cliente lo soporte.

Cómo la identidad es solo un hash de la ruta normalizada, la misma carpeta abierta desde una ruta absoluta distinta siempre resuelve al mismo proyecto. Cada lectura y escritura está limitada a ese id — Vectorize usa un namespace por proyecto y cada consulta D1 filtra por project_id, por lo que dos carpetas nunca pueden ver la memoria de la otra.

Cómo se usa desde opencode

opencode conoce su directorio de trabajo (tu bash actual). El agente debe pasarlo una vez por sesión. Este repositorio incluye una estrategia lista para copiar en AGENTS.md: cópiala en cualquier proyecto donde quieras memoria, define PROJECT_ROOT con el directorio de ese proyecto y el agente será el que gestione la identidad automáticamente:

When using the memory MCP tools, pass project_root (your bash cwd) on the first
memory call of the session.

Configuración

Requisitos previos: Node.js 18+, una cuenta de Cloudflare y un npx wrangler login hecho una vez.

npm install
npm run setup        # creates D1 db, KV namespace, Vectorize index; patches wrangler.toml
npm run db:migrate:remote
npx wrangler secret put MEMORY_AUTH_TOKEN   # optional but strongly recommended
npm run deploy

Tus puntos de conexión:

  • MCP: https://cloudflare-memory-mcp.<your-subdomain>.workers.dev/mcp

  • Panel: https://cloudflare-memory-mcp.<your-subdomain>.workers.dev/

Desarrollo local:

npm run dev              # wrangler dev --local  (AI + Vectorize are remote-only)
npm run db:migrate:local

Integración con opencode

Una única entrada: la misma configuración funciona en todos los proyectos. No hace falta de por proyecto:

// ~/.config/opencode/opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "memory": {
      "type": "remote",
      "url": "https://cloudflare-memory-mcp.<your-subdomain>.workers.dev/mcp",
      "oauth": false,
      "headers": {
        "Authorization": "Bearer {env:MEMORY_AUTH_TOKEN}"
      }
    }
  }
}

La identidad del proyecto queda entonces en mano del propio agente: pasa su directorio de trabajo como project_root en la primera llamada de memoria de cada sesión (ver el consejo de AGENTS.md antes) y el servidor lo incluye todo dentro de la carpeta.

El panel (/) pide el valor del MEMORY_AUTH_TOKEN una vez y lo guarda en localStorage. Si no defines MEMORY_AUTH_TOKEN, todo es público — solo hagas experimentos personales o para una sola prueba.

Herramientas MCP

Herramienta

Função

identify_project

Fija la identidad de la sesión a partir de project_root / project_id (devuelve el id resuelto)

remember

Guarda una nota (la incrusta para recuperación semántica); opcionalmente hace upsert de entities + relations al grafo

query_memory

Búsqueda semántica/vectorial — recupera por significado. Nota: las mutaciones de Vectorize son asíncronas, por lo que una nota se puede consultar semánticamente unos segundos después del remember; usa search_memory para recuperación instantánea

search_memory

Búsqueda exacta de palabras clave (D1 FTS5)

get_recent_memories

Últimas notas del proyecto

get_project_context

Paquete con estadísticas + memorias recientes + entidades principales + relaciones recientes (llamada explícita)

add_entity / add_relation

Construir el grafo de conocimiento de forma deliberada

query_graph

Vecinos de una entidad (profundidad 1–3) o entidades más conectadas

forget

Borra una nota y su embedding

Todas las herramientas aceptan un project_root opcional (ruta de carpeta o URI file://) y un project_id; una vez se indica cualquiera de los dos, el resto de la sesión se recuerda.

Presupuesto del plan gratuito

Recurso

Cuota gratuita

Notas

Durable Object

100 000 solicitudes/día, ~28 h/día de compute activo

Aloja las sesiones MCP; ~1 solicitud por mensaje MCP

Vectorize

5 millones de dimensiones almacenadas por cuenta

~4 800 notas incrustadas @1024-dim; recortables con forget. Consultas ~29 000/mes

Workers AI

10 k neuronas/día

El embedding bge-m3 de una nota de 1 k tokens ≈1 neurona más o similar → miles por día

D1

5 GB / 500 MB por base de datos

Notas + grafo + FTS prácticamente ilimitados para uso personal

KV / Worker

1 GB / 100k solicitudes al día

Cachés + servidor; pocas solicitudes por sesión de opencode

Puedes aplicar palancas si estás cerca del techo vectorial: guarda solo en memoria lo esencial (remember con type: "decision" | "fact"), usa search_memory (FTS5, sin límite) para el resto; o recrea el índice con bge-small (384 dimensiones, solo en inglés) para multiplicar por ~3 la capacidad.

Estructura del proyecto

src/index.ts      fetch router: dashboard, /api/*, /mcp -> Durable Object
src/session-do.ts MCP session host (Durable Object): sessions, SSE, roots, identity
src/tools.ts      the 10 tool definitions (zod schemas + implementations)
src/store.ts      D1 / Vectorize / KV data layer
src/identity.ts   project-id derivation from folder roots
src/embed.ts      Workers AI bge-m3 embeddings
src/api.ts        dashboard API (projects, detail, graph, delete)
src/web.ts        dashboard page (token-gated)
migrations/       D1 schema
scripts/setup.mjs  creates Cloudflare resources and patches wrangler.toml
AGENTS.md          template to copy into projects that use this memory server

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides cross-device access to a persistent knowledge graph via Cloudflare Workers, enabling memory storage and retrieval through both MCP protocol and REST API with full-text search capabilities.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Self-hosted semantic memory layer for Claude and MCP-compatible AI clients. Store notes, search by meaning not keywords, and recall relevant context automatically across sessions. Runs free on Cloudflare Workers, D1, Vectorize, and Workers AI
    5 npm
    840
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A minimal, tag-free personal memory system that syncs across all Claude interfaces. Built on Cloudflare's edge stack for zero-maintenance serverless operation.
    9 npm
    MIT