Cloudflare Memory MCP
Cloudflare Memory MCP
Ein projektspezifischer Memory-MCP-Server für opencode, vollständig auf Cloudflares kostenlosem Tarif gehostet:
Notizen – einfache schlüsselbasierte Speichereinträge mit Tags und Typen
Vektor – semantischer Abruf über Vectorize (Embeddings von Workers AI
@cf/baai/bge-m3, 1024-dimensional, mehrsprachig)Graph – Entitäten + Relationen in D1 (SQLite) mit rekursiver Traversierung
Web-Dashboard – öffne
/in einem Browser, um jedes Projekt mit seinen Memories zu sehen. Jede Projektkarte öffnet eine Detailansicht mit einem interaktiven kraftbasierten Graphen seiner Entitäten und Relationen (Mausrad = Zoomen, Ziehen = Verschieben, Doppelklick oder Buttons = Zurücksetzen, Hover = Nachbarn hervorheben) sowie einen Projekt löschen-Button, der das Projekt, seine Notizen, den Graphen, FTS-Zeilen, Caches und Vektor-Embeddings entfernt
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 cacheScreenshots
Projektliste
Das Dashboard listet jedes dem Konto bekannte Projekt auf, darunter die Anzahl der Notizen, Entitäten, Relationen und der letzten Aktivität.
Wissensgraph
Öffne ein Projekt, um seine Memories und seinen Graphen zu inspizieren. Der Graph unterstützt gekrümmte, gerichtete Kanten, Hervorhebung bei „Hover“, Mausrad-Zoom, Paning per Ziehen und Z urücksetzen.
Related MCP server: second-brain-cloudflare
Wie die Ordnerisolierung funktioniert
Der Server führt seine MCP-Sitzungen in einem Durable Object aus (kostenloser Tarif, SQLite-Backend) und heftet jede Nachricht einer Sitzung an genau ein isoliertes Isolate. Die Projektidentität wird in dieser Reihenfolge aufgelöst:
project_root-Toolargument (empfohlen) – du übergibst deinen Arbeitsordner an jedes Tool, z. B.remember({ project_root: "D:/Projects/foo", content: ... }). Der Server bildet einen Hash aus einer normalisierten Form des Pfads auf eine stabile Projekt-ID und behält sie für den Rest der Sitzung in Erinnerung, sodass spätere Aufrufe sie weglassen können. Das Toolexist_projectexistiert, um sie explizit festzulegen.project_id-Toolargument – eine explizite ID (ebenfalls für die Sitzung zwischengespeichert).x-project-root/x-project-id-Header – für Clients, die diese konfigurieren.MCP roots – automatische Ordnererkennung, wenn der Client das unterstützt.
Da die Identität nur ein Hash des normalisierten Pfads ist, führt derselbe Ordner, auch wenn er über einen anderen absoluten Pfad geöffnet wird, weiterhin auf dasselbe Projekt. Jeder Lese- und Schreibvorgang ist auf diese ID beschränkt – Vectorize-Abfragen verwenden einen Namespace pro Projekt, und jede D1-Abfrage filtert nach project_id, sodass zwei Ordner sich niemals gegenseitig sehen können.
Verwendung aus opencode
opencodes offen habe ich mich in Treibsand begeben – das ist nicht gut.
When using the memory MCP tools, pass project_root (your bash cwd) on the first
memory call of the session.Setup
Voraussetzungen: Node 18+, ein Cloudflare-Konto und ein einmaliges npx wrangler login.
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 deployDeine Endpunkte:
MCP:
https://cloudflare-memory-mcp.<your-subdomain>.workers.dev/mcpDashboard:
https://cloudflare-memory-mcp.<your-subdomain>.workers.dev/
Lokale Entwicklung:
npm run dev # wrangler dev --local (AI + Vectorize are remote-only)
npm run db:migrate:localEinbindung in opencode
Ein einziger Eintrag – dieselbe Konfiguration funktioniert in jedem Projekt. Keine projektspezifischen Werte nötig:
// ~/.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}"
}
}
}
}Die Projektidentität wird dann vom Agenten selbst bestimmt: sie übergibt ihr Arbeitsverzeichnis als project_root beim ersten Memory-Aufruf jeder Sitzung (siehe den AGENTS.md-Hinweis oben), und der Server bindet von da an alles an diesen Ordner.
Das Dashboard (/) fragt einmal nach demselben MEMORY_AUTH_TOKEN und hört es in localStorage. Wenn du MEMORY_AUTH_TOKEN leer lässt, ist alles öffentlich – das nur für private/wiederverwendbare Experimente sinnvoll.
MCP-Tools
Tool | Zweck |
| Fixiert die Projektidentität für die Sitzung über |
| Speichert eine Notiz (bettet sie für den semantischen Abruf ein); fügt optional |
| Semantische / Vektor-Suche – Abruf nach Bedeutung. Hinweis: Mutationen in Vectorize sind asynchron, eine Notiz ist wenige Sekunden nach |
| Exakte Stichwortsuche (D1 FTS5) |
| Neueste Notizen für das Projekt |
| Bündelt Statistik, neueste Memories, Top-Entitäten und aktuelle Relationen (explizit aufrufen) |
| Erweitere den Wissensgraphen gezielt |
| Nachbarn einer Entität (Tiefe 1–3) oder am stärksten verbundene Entitäten |
| Löscht eine Notiz samt zugehörigem Embedding |
Alle Tools akzeptieren ein optionales project_root (Ordnerpfad oder file://-URI) und project_id; sobald eines von beiden in einer Sitzung angegeben wurde, wird es gespeichert.
Budget für den kostenlosen Tarif
Ressource | Kostenloses Kontingent | Anmerkungen |
Durable Object | 100k Anfragen/Tag, ca. 28 Std. aktiv/Tag | Hostes MCP-Sitzungen; ca. 1 Anfrage pro MCP-Nachricht |
Vectorize | 5 M gespeicherte Dimensionen | ca. 4.800 eingebettete Notizen bei 1024-dimensionalen; aufräumen mit |
Workers AI | 10k Neuronen/Tag | bge-m3-Embedding einer 1k-Token-Notiz ≈ 1 Neuron → Tausende/Tag |
D1 | 5 GB / 500 MB pro Datenbank | Notizen + Graph + FTS sind bei privater Nutzung praktisch unbegrenzt |
KV / Worker | 1 GB / 100k Anfragen/Tag | Caches + Premiere; einige Anfragen pro opencode-Sitzung |
Wenn du einmal an die Vektor-Obergrenze stößt, gibt es Design-Hebel: Bette die nur die dauerhaften Memories ein (remember mit type: "decision" | "fact" ) und überlasse search_memory (FTS5, ungedeckelt) den Long Tail; oder baue den Index mit bge-small (384-dimensional, nur Englisch) neu auf, für die ca. 3-fache Kapazität.
Projektstruktur
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 serverThis server cannot be deployed
Maintenance
Related MCP Connectors
Persistent memory and vector search for AI agents. Hosted, OAuth-protected via Google sign-in.
Hosted shared memory for AI apps: project decisions, to-dos and learnings. Beta.
Hosted persistent memory with semantic search, importance and TTL for AI agents.
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides 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.-
- AlicenseNot gradedqualityAmaintenanceSelf-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 AI2 npm854MIT
- AlicenseNot gradedqualityNot gradedmaintenanceGives AI coding assistants persistent memory by storing, semantically searching, and organizing notes on Cloudflare's free tier.21 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceA minimal, tag-free personal memory system that syncs across all Claude interfaces. Built on Cloudflare's edge stack for zero-maintenance serverless operation.17 npmMIT