Skip to main content
Glama

MCP Memory Service

quick-setup-cloudflare-dual-environment.md9.49 kB
# Quick Setup: Cloudflare Backend for Claude Desktop + Claude Code This guide provides streamlined instructions to configure Cloudflare backend for both Claude Desktop and Claude Code simultaneously. ## 🎯 Overview This setup ensures both environments use the same Cloudflare backend for consistent memory storage across Claude Desktop and Claude Code. **Expected Result:** - Claude Desktop: ✅ Cloudflare backend with 1000+ memories - Claude Code: ✅ Cloudflare backend with same memories - Health checks show: `"backend": "cloudflare"` and `"storage_type": "CloudflareStorage"` ## ⚡ Quick Setup (5 minutes) ### Step 1: Prepare Cloudflare Resources If you don't have Cloudflare resources yet: ```bash # Install wrangler CLI npm install -g wrangler # Login and create resources wrangler login wrangler vectorize create mcp-memory-index --dimensions=768 --metric=cosine wrangler d1 create mcp-memory-db # Note the database ID from output ``` ### Step 2: Create Environment Configuration Create `.env` file in the project root: ```bash cd C:/REPOSITORIES/mcp-memory-service # Create .env file with your Cloudflare credentials cat > .env << 'EOF' # MCP Memory Service Environment Configuration MCP_MEMORY_STORAGE_BACKEND=cloudflare # Cloudflare D1 Database Configuration CLOUDFLARE_API_TOKEN=your-api-token-here CLOUDFLARE_ACCOUNT_ID=your-account-id-here CLOUDFLARE_D1_DATABASE_ID=your-d1-database-id-here CLOUDFLARE_VECTORIZE_INDEX=mcp-memory-index # Backup paths (for fallback) MCP_MEMORY_BACKUPS_PATH=C:\Users\your-username\AppData\Local\mcp-memory\backups MCP_MEMORY_SQLITE_PATH=C:\Users\your-username\AppData\Local\mcp-memory\backups\sqlite_vec.db EOF ``` ### Step 3: Configure Claude Desktop Update `~/.claude.json` (or `%APPDATA%\Claude\claude_desktop_config.json` on Windows): ```json { "mcpServers": { "memory": { "command": "python", "args": ["-m", "mcp_memory_service.server"], "cwd": "C:/REPOSITORIES/mcp-memory-service", "env": { "MCP_MEMORY_STORAGE_BACKEND": "cloudflare", "CLOUDFLARE_API_TOKEN": "your-api-token-here", "CLOUDFLARE_ACCOUNT_ID": "your-account-id-here", "CLOUDFLARE_D1_DATABASE_ID": "your-d1-database-id-here", "CLOUDFLARE_VECTORIZE_INDEX": "mcp-memory-index", "MCP_MEMORY_BACKUPS_PATH": "C:\\Users\\your-username\\AppData\\Local\\mcp-memory\\backups", "MCP_MEMORY_SQLITE_PATH": "C:\\Users\\your-username\\AppData\\Local\\mcp-memory\\backups\\sqlite_vec.db" } } } } ``` ### Step 4: Configure Claude Code ```bash # Navigate to project directory cd C:/REPOSITORIES/mcp-memory-service # Add memory server with explicit environment variables claude mcp add memory python \ -e MCP_MEMORY_STORAGE_BACKEND=cloudflare \ -e CLOUDFLARE_API_TOKEN=your-api-token-here \ -e CLOUDFLARE_ACCOUNT_ID=your-account-id-here \ -e CLOUDFLARE_D1_DATABASE_ID=your-d1-database-id-here \ -e CLOUDFLARE_VECTORIZE_INDEX=mcp-memory-index \ -e MCP_MEMORY_BACKUPS_PATH="C:\Users\your-username\AppData\Local\mcp-memory\backups" \ -e MCP_MEMORY_SQLITE_PATH="C:\Users\your-username\AppData\Local\mcp-memory\backups\sqlite_vec.db" \ -- -m mcp_memory_service.server ``` ### Step 5: Verify Configuration **Test Claude Desktop:** 1. Restart Claude Desktop 2. Open a new conversation 3. Ask: "Check memory health" 4. Should show: `"backend": "cloudflare"` and `"storage_type": "CloudflareStorage"` **Test Claude Code:** ```bash # Check MCP server status claude mcp list # Should show: memory: python -m mcp_memory_service.server - ✓ Connected ``` ## 🔧 Configuration Templates ### Claude Desktop Template (`claude_desktop_config.json`) ```json { "mcpServers": { "memory": { "command": "python", "args": ["-m", "mcp_memory_service.server"], "cwd": "C:/REPOSITORIES/mcp-memory-service", "env": { "MCP_MEMORY_STORAGE_BACKEND": "cloudflare", "CLOUDFLARE_API_TOKEN": "YOUR_TOKEN_HERE", "CLOUDFLARE_ACCOUNT_ID": "YOUR_ACCOUNT_ID_HERE", "CLOUDFLARE_D1_DATABASE_ID": "YOUR_D1_DATABASE_ID_HERE", "CLOUDFLARE_VECTORIZE_INDEX": "mcp-memory-index", "MCP_MEMORY_BACKUPS_PATH": "C:\\Users\\USERNAME\\AppData\\Local\\mcp-memory\\backups", "MCP_MEMORY_SQLITE_PATH": "C:\\Users\\USERNAME\\AppData\\Local\\mcp-memory\\backups\\sqlite_vec.db" } } } } ``` ### Project Environment Template (`.env`) ```bash # Storage Backend Configuration MCP_MEMORY_STORAGE_BACKEND=cloudflare # Required Cloudflare Settings CLOUDFLARE_API_TOKEN=YOUR_TOKEN_HERE CLOUDFLARE_ACCOUNT_ID=YOUR_ACCOUNT_ID_HERE CLOUDFLARE_D1_DATABASE_ID=YOUR_D1_DATABASE_ID_HERE CLOUDFLARE_VECTORIZE_INDEX=mcp-memory-index # Optional Settings CLOUDFLARE_R2_BUCKET=mcp-memory-content CLOUDFLARE_EMBEDDING_MODEL=@cf/baai/bge-base-en-v1.5 CLOUDFLARE_LARGE_CONTENT_THRESHOLD=1048576 CLOUDFLARE_MAX_RETRIES=3 CLOUDFLARE_BASE_DELAY=1.0 # Backup Configuration MCP_MEMORY_BACKUPS_PATH=C:\Users\USERNAME\AppData\Local\mcp-memory\backups MCP_MEMORY_SQLITE_PATH=C:\Users\USERNAME\AppData\Local\mcp-memory\backups\sqlite_vec.db # Logging LOG_LEVEL=INFO ``` ## ✅ Validation Commands ### Quick Health Check ```bash # Test configuration loading cd C:/REPOSITORIES/mcp-memory-service python -c " from src.mcp_memory_service.config import STORAGE_BACKEND, CLOUDFLARE_API_TOKEN print(f'Backend: {STORAGE_BACKEND}') print(f'Token set: {bool(CLOUDFLARE_API_TOKEN)}') " # Test server initialization python scripts/validation/diagnose_backend_config.py ``` ### Expected Health Check Results **Cloudflare Backend (Correct):** ```json { "validation": { "status": "healthy", "message": "Cloudflare storage validation successful" }, "statistics": { "backend": "cloudflare", "storage_backend": "cloudflare", "total_memories": 1073, "vectorize_index": "mcp-memory-index", "d1_database_id": "f745e9b4-ba8e-4d47-b38f-12af91060d5a" }, "performance": { "server": { "storage_type": "CloudflareStorage" } } } ``` **SQLite-vec Fallback (Incorrect):** ```json { "statistics": { "backend": "sqlite-vec", "storage_backend": "sqlite-vec" }, "performance": { "server": { "storage_type": "SqliteVecMemoryStorage" } } } ``` ## 🚨 Troubleshooting ### Issue: Health Check Shows SQLite-vec Instead of Cloudflare **Root Cause:** Environment variables not loading properly in execution context. **Solutions:** 1. **Claude Desktop:** - Ensure `cwd` is set to project directory - Use explicit `env` variables in MCP configuration - Restart Claude Desktop after config changes 2. **Claude Code:** - Use explicit `-e` environment variables in `claude mcp add` - Ensure command runs from project directory - Remove and re-add memory server to pick up changes 3. **Both Environments:** - Verify `.env` file exists and contains correct values - Check API token permissions (Vectorize:Edit, D1:Edit, Workers AI:Read) - Test Cloudflare connectivity manually ### Issue: "Missing required environment variables" ```bash # Check if variables are being loaded cd C:/REPOSITORIES/mcp-memory-service python -c " import os from dotenv import load_dotenv load_dotenv('.env') print('CLOUDFLARE_API_TOKEN:', 'SET' if os.getenv('CLOUDFLARE_API_TOKEN') else 'NOT SET') print('CLOUDFLARE_ACCOUNT_ID:', os.getenv('CLOUDFLARE_ACCOUNT_ID', 'NOT SET')) " ``` ### Issue: Different Memory Counts Between Environments This indicates environments are using different backends: - **Same count (e.g., 1073):** Both using Cloudflare ✅ - **Different counts:** One using SQLite-vec fallback ❌ **Fix:** Follow troubleshooting steps above to ensure both use Cloudflare. ### Issue: Connection Failed or Authentication Errors 1. **Verify API Token:** ```bash curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \ -H "Authorization: Bearer YOUR_API_TOKEN" ``` 2. **Check Resource IDs:** ```bash # List Vectorize indexes curl -X GET "https://api.cloudflare.com/client/v4/accounts/YOUR_ACCOUNT_ID/vectorize/v2/indexes" \ -H "Authorization: Bearer YOUR_API_TOKEN" # List D1 databases curl -X GET "https://api.cloudflare.com/client/v4/accounts/YOUR_ACCOUNT_ID/d1/database" \ -H "Authorization: Bearer YOUR_API_TOKEN" ``` ## 🔄 Migration from SQLite-vec If you have existing memories in SQLite-vec: ```bash # Export existing memories python scripts/export_sqlite_vec.py --output cloudflare_export.json # Switch to Cloudflare (follow setup above) # Import to Cloudflare python scripts/import_to_cloudflare.py --input cloudflare_export.json ``` ## 📝 Configuration Management ### Single Source of Truth - **Global Config:** `~/.claude.json` (Claude Desktop) - authoritative - **Project Config:** `.env` file (development) - for local development - **Avoid:** Multiple conflicting configurations ### Environment Variable Precedence 1. Explicit MCP server `env` variables (highest priority) 2. System environment variables 3. `.env` file variables 4. Default values (lowest priority) ## 🎯 Success Criteria Both Claude Desktop and Claude Code should show: ✅ **Health Check:** `"backend": "cloudflare"` ✅ **Storage Type:** `"CloudflareStorage"` ✅ **Memory Count:** Same number across environments ✅ **Database ID:** Same Cloudflare D1 database ID ✅ **Index:** Same Vectorize index name When successful, memories will be synchronized across both environments automatically!

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/doobidoo/mcp-memory-service'

If you have feedback or need assistance with the MCP directory API, please join our Discord server