Skip to main content
Glama

MCP Memory Service

memory_service_manager.sh4.35 kB
#!/bin/bash # Memory Service Manager for Claude Code on Linux # Manages dual backend setup with Cloudflare primary and SQLite-vec backup SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" # Service configuration CLOUDFLARE_ENV="$PROJECT_DIR/.env" SQLITE_ENV="$PROJECT_DIR/.env.sqlite" # Create SQLite-vec environment file if it doesn't exist if [ ! -f "$SQLITE_ENV" ]; then cat > "$SQLITE_ENV" << EOF # SQLite-vec Configuration for MCP Memory Service (Backup) MCP_MEMORY_STORAGE_BACKEND=sqlite_vec MCP_MEMORY_SQLITE_PATH="$HOME/.local/share/mcp-memory/primary_sqlite_vec.db" EOF echo "Created SQLite-vec environment configuration: $SQLITE_ENV" fi usage() { echo "Memory Service Manager for Claude Code" echo "" echo "Usage: $0 <command>" echo "" echo "Commands:" echo " start-cloudflare Start memory server with Cloudflare backend" echo " start-sqlite Start memory server with SQLite-vec backend" echo " status Show current backend and sync status" echo " sync-backup Backup Cloudflare → SQLite-vec" echo " sync-restore Restore SQLite-vec → Cloudflare" echo " sync-both Bidirectional sync" echo " stop Stop any running memory server" echo "" } start_memory_service() { local backend="$1" local env_file="$2" echo "Starting memory service with $backend backend..." # Stop any existing service pkill -f "memory server" 2>/dev/null || true sleep 2 # Start new service cd "$PROJECT_DIR" if [ -f "$env_file" ]; then echo "Loading environment from: $env_file" set -a source "$env_file" set +a fi echo "Starting: uv run memory server" nohup uv run memory server > /tmp/memory-service-$backend.log 2>&1 & # Wait a moment and check if it started sleep 3 if pgrep -f "memory server" > /dev/null; then echo "Memory service started successfully with $backend backend" echo "Logs: /tmp/memory-service-$backend.log" # Save active backend to state file for reliable detection echo "$backend" > /tmp/memory-service-backend.state else echo "Failed to start memory service" echo "Check logs: /tmp/memory-service-$backend.log" return 1 fi } show_status() { echo "=== Memory Service Status ===" # Check if service is running if pgrep -f "memory server" > /dev/null; then echo "Service: Running" # Check which backend is active using state file if [ -f "/tmp/memory-service-backend.state" ]; then local active_backend=$(cat /tmp/memory-service-backend.state) echo "Active Backend: $active_backend (from state file)" else echo "Active Backend: Unknown (no state file found)" fi else echo "Service: Not running" # Clean up state file if service is not running [ -f "/tmp/memory-service-backend.state" ] && rm -f /tmp/memory-service-backend.state fi echo "" echo "=== Sync Status ===" cd "$PROJECT_DIR" uv run python scripts/claude_sync_commands.py status } sync_memories() { local direction="$1" echo "Syncing memories: $direction" cd "$PROJECT_DIR" uv run python scripts/claude_sync_commands.py "$direction" } stop_service() { echo "Stopping memory service..." pkill -f "memory server" 2>/dev/null || true sleep 2 if ! pgrep -f "memory server" > /dev/null; then echo "Memory service stopped" # Clean up state file when service is stopped [ -f "/tmp/memory-service-backend.state" ] && rm -f /tmp/memory-service-backend.state else echo "Failed to stop memory service" return 1 fi } # Main command handling case "$1" in start-cloudflare) start_memory_service "cloudflare" "$CLOUDFLARE_ENV" ;; start-sqlite) start_memory_service "sqlite" "$SQLITE_ENV" ;; status) show_status ;; sync-backup) sync_memories "backup" ;; sync-restore) sync_memories "restore" ;; sync-both) sync_memories "sync" ;; stop) stop_service ;; *) usage exit 1 ;; esac

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