Cloud Memory MCP
A minimal, tag-free personal memory system that syncs across all Claude interfaces (mobile, web, desktop, Claude Code). Built on Cloudflare's edge stack for zero-maintenance serverless operation.
Features
- Semantic Search: Store memories with automatic embeddings, search by meaning
- Cross-Platform: Works with Claude Desktop, Claude Code, claude.ai, and mobile
- Zero Maintenance: Runs entirely on Cloudflare's edge infrastructure
- Privacy-First: Your memories stay in your Cloudflare account
- Simple Design: No tags, no categories - just store and search
Quick Start
Installation
npm install -g cloud-memory-mcp
# or
npx cloud-memory-mcp init
Setup
Run the interactive setup wizard:
cloud-memory-mcp init
This will:
- Prompt for your Cloudflare API token
- Create a D1 database for memory storage
- Create a Vectorize index for semantic search
- Deploy a Cloudflare Worker
- Generate a secure API token
- Output configuration for Claude Desktop, Claude Code, and claude.ai
Configuration
After setup, add the MCP server to your Claude apps:
Claude.ai (Web)
- Go to Settings → Connectors → Add MCP Server
- Enter the server URL:
https://cloud-memory-mcp.YOUR_SUBDOMAIN.workers.dev/mcp - Leave OAuth Client ID and Secret empty
- Click Connect
- An authorization page will open - enter your API token (starts with
cmm_) - Click Authorize to complete the connection
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"memory": {
"url": "https://cloud-memory-mcp.YOUR_SUBDOMAIN.workers.dev/mcp",
"transport": "sse",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}
Claude Code
Add to ~/.claude/settings.json:
{
"mcpServers": {
"memory": {
"url": "https://cloud-memory-mcp.YOUR_SUBDOMAIN.workers.dev/mcp",
"transport": "sse",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}
## MCP Tools
### `remember`
Store a new memory with automatic embedding generation.
```json
{
"content": "The security consultancy charges $2k for quick scan, $5k for full audit",
"source": "web"
}
recall
Semantic search with optional filters.
{
"query": "security pricing",
"limit": 10,
"after": "2025-01-01T00:00:00Z",
"source": "web",
"threshold": 0.3
}
forget
Delete memories by ID or time range.
{
"id": "01HXK5V2XQZJ8N4M3R7P6T9Y2W"
}
Or bulk delete:
{
"before": "2024-01-01T00:00:00Z",
"confirm": true
}
list
List recent memories without semantic search.
{
"limit": 20,
"offset": 0,
"source": "claude-code",
"order": "newest"
}
stats
Get memory statistics.
{}
Returns:
{
"total_memories": 1523,
"by_source": {
"mobile": 234,
"web": 890,
"claude-code": 399
},
"oldest": "2025-01-15T08:00:00Z",
"newest": "2025-06-20T14:30:00Z"
}
CLI Commands
cloud-memory-mcp init
Interactive setup wizard that creates all necessary Cloudflare resources.
cloud-memory-mcp status
Check deployment status and memory statistics.
cloud-memory-mcp deploy
Redeploy the worker after making local changes.
cloud-memory-mcp destroy
Tear down all Cloudflare resources. Requires typing "delete my memories" to confirm.
cloud-memory-mcp token show
Display your current API token (for copying to new devices).
cloud-memory-mcp token rotate
Generate a new token and invalidate the old one.
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Cloudflare Edge │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │
│ │ Worker │ │ D1 │ │ Vectorize │ │
│ │ (MCP API) │◄──►│ (SQLite) │◄──►│ (Embeddings) │ │
│ └─────────────┘ └─────────────┘ └──────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Workers AI │ │
│ │ (bge-m3 embed) │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
MCP over HTTP (SSE)
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
Claude Mobile Claude.ai Web Claude Code
Cloudflare Free Tier Limits
| Resource | Free Limit | Notes |
|---|---|---|
| Workers | 100k req/day | Plenty for personal use |
| D1 | 5GB storage, 5M rows read/day | ~500k memories at 10KB each |
| Vectorize | 200k vectors, 30M queried/month | Ample for personal use |
| Workers AI | 10k neurons/day | ~300 embeddings/day |
Development
Prerequisites
- Node.js 18+
- npm or yarn
- Cloudflare account
Local Development
# Install dependencies
npm install
# Build
npm run build
# Run locally with wrangler
npm run dev
Project Structure
cloud-memory-mcp/
├── src/
│ ├── index.ts # Worker entry point, MCP handler
│ ├── tools/
│ │ ├── remember.ts # remember tool
│ │ ├── recall.ts # recall tool
│ │ ├── forget.ts # forget tool
│ │ ├── list.ts # list tool
│ │ └── stats.ts # stats tool
│ ├── lib/
│ │ ├── embeddings.ts # Workers AI embeddings
│ │ ├── vectorize.ts # Vectorize operations
│ │ ├── db.ts # D1 database operations
│ │ └── ulid.ts # ULID generation
│ └── types.ts # TypeScript interfaces
├── cli/
│ ├── index.ts # CLI entry point
│ ├── commands/
│ │ ├── init.ts # Setup wizard
│ │ ├── deploy.ts # Deploy worker
│ │ ├── status.ts # Check status
│ │ ├── destroy.ts # Tear down
│ │ └── token.ts # Token management
│ └── lib/
│ ├── cloudflare-api.ts # Cloudflare API client
│ ├── prompts.ts # Interactive prompts
│ ├── config.ts # Config management
│ └── crypto.ts # Token generation
├── migrations/
│ └── 0001_initial.sql # D1 schema
├── wrangler.toml # Cloudflare Worker config
├── package.json
└── tsconfig.json
Security
- All requests (except
/health) require bearer token authentication - Tokens use the format
cmm_+ 32 random alphanumeric characters - Tokens are stored as encrypted Cloudflare Worker secrets
- Local credentials are stored in
~/.config/cloud-memory-mcp/credentials.json
License
MIT