Dashboard Quick Actions: Sync Controls & Automatic Backups
This release adds two major features to enhance the MCP Memory Service dashboard: real-time sync controls and an enterprise-grade automatic backup system.
Highlights
ποΈ Sync Controls Widget - Real-time pause/resume/force sync with visual status indicators for hybrid backend users
πΎ Automatic Scheduled Backups - Enterprise-grade backup system with SQLite native API and retention policies
β‘ Clean Dashboard Layout - Moved sync controls to Quick Actions sidebar for better UX
π Security Enhancements - OAuth-protected backup endpoints, no file path exposure
π Safari Compatibility - Improved event listener handling for reliable button interactions
What's New
Sync Controls Widget (Hybrid Backend)
Real-time sync management from the dashboard Quick Actions sidebar:
- Visual status indicators: Synced β / Syncing π / Pending β³ / Error β / Paused βΈοΈ
- Pause/Resume controls: Safely pause background sync for database maintenance or offline work
- Force sync button: Manual trigger for immediate synchronization
- Sync metrics: Last sync time and pending operations count
- Backend-aware: Widget automatically hides for sqlite-vec only users
New API Endpoints:
# Pause background sync
curl -X POST http://127.0.0.1:8000/api/sync/pause
# Resume background sync
curl -X POST http://127.0.0.1:8000/api/sync/resumeAutomatic Scheduled Backup System
Enterprise-grade backup with retention policies and scheduling:
- SQLite native backup API: Uses safe
sqlite3.backup()to prevent corruption (no file copying) - Async I/O: Non-blocking backup operations with
asyncio.to_thread - Flexible scheduling: Hourly, daily, or weekly automatic backups
- Retention policies: Configurable by days and max backup count
- Dashboard widget: Backup status, last backup time, manual trigger, backup count, next scheduled time
Configuration:
export MCP_BACKUP_ENABLED=true # Enable backups (default: true)
export MCP_BACKUP_INTERVAL=daily # hourly/daily/weekly (default: daily)
export MCP_BACKUP_RETENTION=7 # Days to keep backups (default: 7)
export MCP_BACKUP_MAX_COUNT=10 # Max backups to keep (default: 10)New API Endpoints:
# Trigger manual backup
curl -X POST http://127.0.0.1:8000/api/backup/now
# Get backup status and scheduler info
curl http://127.0.0.1:8000/api/backup/status
# List available backups
curl http://127.0.0.1:8000/api/backup/listDashboard Improvements
- Clean layout: Removed redundant sync status bar between header and body
- Quick Actions sidebar: Sync and backup widgets in easy-to-access location
- Toast notifications: User feedback for sync and backup operations
- Spinner animation: Visual feedback during syncing state
Technical Details
Added
- New backup module:
src/mcp_memory_service/backup/withBackupServiceandBackupScheduler - Hybrid backend methods:
pause_sync()andresume_sync() - API endpoints:
/api/sync/pause,/api/sync/resume,/api/backup/status,/api/backup/now,/api/backup/list - OAuth protection on backup endpoints
- Safari-compatible event listeners with lazy initialization
Changed
- Moved sync controls from top status bar to Quick Actions sidebar
- Sync pause state now preserved during force sync operations
- Added toast notifications for better user feedback
Fixed
- Sync button click events: Resolved DOM timing issues with lazy event listeners
- Spinner animation: Fixed syncing state visual feedback
- Security: Removed file path exposure from backup API responses (use backup IDs)
Installation & Upgrade
From PyPI:
pip install --upgrade mcp-memory-serviceFrom source:
cd mcp-memory-service
git pull origin main
pip install -e .Restart the HTTP server to enable the new features:
# Stop existing server
pkill -f "run_http_server.py"
# Start with backups enabled (default)
python scripts/server/run_http_server.pyRelated Issues
- Fixes #233 - Move sync controls to Quick Actions and add scheduled backups
- PR #234 - Implementation with 7 Gemini Code Assist reviews
Full Changelog
See CHANGELOG.md for complete details.
π€ Generated with Claude Code