Skip to main content
Glama
ady133t

Cloudflare Memory MCP

by ady133t

Cloudflare Memory MCP

MCP-сервер памяти для отдельных проектов, предназначенный для opencode и размещённый целиком на бесплатном тарифе Cloudflare:

  • Notes — простые записи с ключами, тегами и типами

  • Vector — семантический поиск через Vectorize (эмбеддинги от Workers AI @cf/bge-m3, 1024-мерные, мультиязычные)

  • Graph — сущности и связи в базе D1 (SQLite) с рекурсивным обходом

  • Web dashboard — откройте / в браузере, чтобы увидеть все проекты с заметками. Каждая карточка проекта открывает детальный вид с интерактивным силовым графом его сущностей и связей (колесо = масштаб, перетаскивание = панорамирование, двойной клик или кнопки = сброс, наведение = подсветка соседей) и кнопкой Delete project, которая удаляет проект вместе с его заметками, графом, строками FTS, кэшами и векторными эмбеддингами

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

Скриншоты

Список проектов

Дашборд показывает все проекты, известные аккаунту, включая количество заметок, сущностей, связей и время последней активности.

Граф знаний

Откройте проект, чтобы посмотреть его заметки и граф. Граф поддерживает изогнутые направленные рёбра, подсветку при наведении, масштаб колесом мыши, панорамирование перетаскиванием и кнопки сброса.

Related MCP server: second-brain-cloudflare

Как устроена изоляция папок

Сервер запускает свои MCP-сессии внутри Durable Object (бесплатный тариф, бэкенд SQLite), который привязывает каждое сообщение сессии к одному изоляту. Идентичность проекта определяется в следующем порядке:

  1. Аргумент инструмента project_root (рекомендуется) — вы передаёте рабочую папку в любой инструмент, например remember({ project_root: "D:/Projects/foo", content: ... }). Сервер хэширует нормализованную форму пути в стабильный id проекта и запоминает его на всю сессию, так что в последующих вызовах его можно не указывать. Инструмент identify_project существует для явной фиксации.

  2. Аргумент инструмента project_id — явный id (также кэшируется для сессии).

  3. Заголовки x-project-root / x-project-id — для клиентов, которые их настраивают.

  4. Корни MCP — автоматическое определение папки, если клиент это поддерживает.

Поскольку идентичность — это просто хеш нормализованного пути, одна и та же папка, открытая через другой абсолютный путь, всё равно будет соответствовать тому же проекту. Каждое чтение и каждая запись ограничены этим id: запросы Vectorize используют namespace на проект, а каждый запрос D1 фильтруется по project_id — поэтому две папки никогда не увидят память друг друга.

Использование в opencode

opencode знает свою рабочую папку (ваш bash cwd). Агент должен передавать её один раз за сессию. В этом репозитории есть готовый шаблон для копирования — AGENTS.md. Скопируйте его в любой проект, где нужна память, укажите в переменной PROJECT_ROOT директорию этого проекта — и агент сам разберётся с идентификацией:

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

Настройка

Предварительные требования: Node 18+, аккаунт Cloudflare и один раз выполненная команда 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 deploy

Ваши эндпоинты:

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

  • Дашборд: https://cloudflare-memory-mcp.<your-subdomain>.workers.dev/

Локальная разработка:

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

Подключение к opencode

Одна запись — одинаковая конфигурация работает во всех проектах. Никаких значений для отдельных проектов не нужно:

// ~/.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}"
      }
    }
  }
}

Дальше идентификацию проекта определяет сам агент: при первом обращении к памяти в каждой сессии он передаёт свою рабочую папку как project_root (см. совет в AGENTS.md выше), и сервер ограничивает все данные этой папкой.

Дашборд (/) один раз запрашивает тот же MEMORY_AUTH_TOKEN и хранит его в localStorage. Если оставить MEMORY_AUTH_TOKEN пустым, всё будет открыто — допускается это только для личных или одноразовых экспериментов.

Инструменты MCP

Инструмент

Назначение

identify_project

Зафиксировать идентичность проекта для сессии: по проектную директорию (project_root) или идентификатору (project_id); возвращает итоговый id

remember

Сохранить заметку (строит эмбеддинг для семантического поиска); при необходимости выполняет upsert сущностей и связей в графе

query_memory

Семантический/векторный поиск — извлечение по смыслу. Примечание: изменения Vectorize применяются асинхронно, поэтому заметка становится доступной по смыслу через несколько секунд после remember; для мгновенного поиска используйте search_memory

search_memory

Поиск по точным ключевым словам (D1 FTS5)

get_recent_memories

Последние заметки проекта

get_project_context

Собрать пакет: статистика + последние заметки + главные сущности + последние связи (вызывайте явно)

add_entity / add_relation

Намеренно строить граф знаний

query_graph

Соседи сущности (глубина 1–3) или наиболее связанные сущности

forget

Удалить заметку и её эмбеддинг

Все инструменты принимают опциональный project_root (путь к папке или URI file://) и project_id; при передаче одного из них в сессии он запоминается.

Бесплатные лимиты тарифа

Ресурс

Бесплатный лимит

Примечания

Durable Object

100 тыс. запросов/день, ~28 ч/день активного

Размещает MCP-сессии; ~1 запрос на сообщение MCP

Vectorize

5M сохранённых измерений на аккаунт

~1000 заметок с эмбеддингами @1024-мер; очистка — forget. Запросов ~29 тыс. в месяц

Workers AI

10 тыс. нейронов/день

Эмбеддинг bge-m3 для заметки из 1k токенов ≈ 1 нейрон → тысячи в день

D1

5 ГБ / 500 МБ на базу данных

Заметки + граф + FTS практически без ограничений для личного использования

KV / Worker

1 ГБ / 100 тыс. запросов/день

Кэши + отдача; несколько запросов за сессию opencode

Расчётные рычаги на случай приближения к потолку векторного хранилища: индексируйте только устойчивые заметки (remember с type: "decision" | "fact"), а длинный хвост отдайте search_memory (FTS5 без лимита); либо пересоздайте индекс с bge-small (384-мерный, только английский) — это даст примерно 3× прирост ёмкости.

Структура проекта

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

Maintenance

ActivityStale
ResponsivenessNo issues

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
    1 npm
    822
    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.
    4 npm
    MIT