edgenote-ai

A shared knowledge base on Cloudflare Workers that both humans and LLMs can read/write via MCP (Model Context Protocol), using the Streamable HTTP transport.

An edge-deployed MCP knowledge base — most MCP memory servers run locally (stdio). edgenote-ai runs on Cloudflare Workers so Claude Desktop, Cursor, or any MCP client can connect natively from anywhere, no proxy needed.

LLMs are stateless — they forget everything between conversations. edgenote-ai gives them persistent, shared memory.

The Problem

Every LLM conversation starts from zero. You explain context, share background, re-establish what you discussed yesterday. Your AI assistant has no long-term memory.

edgenote-ai fixes this:

  • LLM-to-LLM continuity — one session saves research notes, another picks them up
  • Human + AI collaboration — write in the browser, ask your LLM "what did I write about X last week?"
  • Team knowledge sharing (planned) — shared spaces for multiple people and their AI assistants

How it works

Human (browser)  ─── Google OAuth ───→  edgenote-ai  ←─── API key ───  LLM (MCP)
                                            │
                                    Cloudflare Workers + D1
                                            │
                                   MCP Streamable HTTP
                                  (9 tools, spec-compliant)

Three interfaces, same data:

Interface Auth Use case
MCP API key LLMs create, read, search notes as tool calls
REST API API key Scripts, CI, integrations
Web UI Google OAuth Humans browse, edit, and organize notes

Claude Desktop → edgenote-ai → Web UI (full round-trip)

Claude Desktop calls MCP tools Note appears in Web UI
Claude Desktop briefing Web UI shows MCP-created note

Quick Start

1. Sign up

Visit edgenote.0xkaz.com and sign in with Google.

2. Get your API key

Your dashboard shows your API key and a ready-to-copy MCP configuration.

3. Connect your LLM

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "edgenote": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://edgenote.0xkaz.com/mcp",
        "--header",
        "Authorization: Bearer YOUR_API_KEY"
      ]
    }
  }
}

Restart Claude Desktop after saving.

4. Use it

Ask Claude: "Give me a briefing of my knowledge base" or "Search my notes for deployment plans"

MCP Tools

9 tools available via the Streamable HTTP MCP endpoint:

Tool Description
note_create Create a new note with title and Markdown content
note_read Read a note by ID or title
note_update Update content or append to an existing note
note_search Search across all notes (currently LIKE-based, Rust/WASM tantivy planned)
note_list List notes with optional filters
note_delete Delete a note
note_export Bulk export all notes for loading full context into a conversation
context_briefing Get a comprehensive overview of your knowledge base — call first in a new conversation
note_summarize Basic summary/preview of one or more notes (heading extraction, word count, content preview)

When a new MCP session starts, the server returns dynamic instructions describing the user's knowledge base (note count, recent titles, suggested tools).

REST API

# Create a note
curl -X POST https://edgenote.0xkaz.com/api/notes \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "Meeting notes", "content": "## Decisions\n- Ship v2 by Friday"}'

# Search notes
curl "https://edgenote.0xkaz.com/api/notes/search?q=deployment" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Bulk export (markdown)
curl https://edgenote.0xkaz.com/api/notes/export \
  -H "Authorization: Bearer YOUR_API_KEY"

Security note: API keys are for server-side and CLI use only. Do not embed them in client-side JavaScript or browser code.

Architecture

┌─────────────────────────────────────────────────┐
│           Cloudflare Workers                     │
│                                                  │
│  MCP Streamable HTTP ←→ Hono Router              │
│       ↓                    ↓                     │
│  Tool Handlers         REST API / Web UI         │
│       ↓                    ↓                     │
│             D1 (SQL storage)                     │
│                                                  │
│  Rust/WASM core (built, not yet integrated):     │
│  - pulldown-cmark (Markdown parsing)             │
│  - In-memory search index                        │
│  → tantivy full-text search planned              │
└──────────────────────────────────────────────────┘

Current stack

Component Status Detail
Cloudflare Workers ✅ Deployed Hono framework, Streamable HTTP MCP
D1 ✅ In use Note storage, user auth, search (LIKE-based)
Google OAuth ✅ Working With CSRF state validation
MCP SDK ✅ Spec-compliant @modelcontextprotocol/sdk, protocol version 2025-11-25
Rust/WASM core ✅ Built pulldown-cmark + in-memory search (not yet called from Workers)
R2 Bound Not yet used (planned for search index persistence)

Planned (roadmap)

Component Purpose
tantivy (Rust/WASM) Ranked full-text search with CJK support, replacing D1 LIKE
Automerge (Rust/WASM) CRDT-based real-time collaborative editing
Durable Objects Per-document state, WebSocket connections
Vectorize + Workers AI Semantic search (vector + keyword hybrid)

Development

Prerequisites

  • Rust (stable) + wasm-pack
  • Node.js 18+
  • pnpm
  • Wrangler CLI (npm install -g wrangler)

Setup

git clone https://github.com/0xkaz/edgenote-ai.git
cd edgenote-ai
cp .dev.vars.example .dev.vars  # Add your Google OAuth credentials
pnpm install
pnpm db:migrate:local

Build WASM

pnpm build:wasm

Run locally

pnpm dev

Run tests

make test

Roadmap

  • Project scaffolding
  • Workers + D1 note CRUD
  • Auth (API key + Google OAuth + CSRF state)
  • MCP server (9 tools, Streamable HTTP)
  • REST API
  • Web editor UI with Markdown preview
  • Public note sharing with TOC
  • Context briefing and basic summary/preview tools
  • Integrate Rust/WASM into Workers (tantivy search, Markdown rendering)
  • CRDT real-time sync (Automerge)
  • Shared spaces
  • Semantic search (Vectorize + Workers AI)

License

MIT