What's New in v8.28.0
Added
-
Cloudflare Tag Filtering - AND/OR operations for tag searches with unified API contracts (#228)
- Added
search_by_tags(tags, operation, time_start, time_end)to the storage base class and implemented it across SQLite, Cloudflare, Hybrid, and HTTP client backends - Normalized Cloudflare SQL to use
GROUP BY+HAVING COUNT(DISTINCT ...)for AND semantics while supporting optional time ranges - Introduced
get_all_tags_with_counts()for Cloudflare to power analytics dashboards without extra queries
- Added
-
Hybrid Storage Sync Performance Optimization - Dramatic initial sync speed improvement (3-5x faster)
- Performance Metrics:
- Before: ~5.5 memories/second (8 minutes for 2,619 memories)
- After: ~15-30 memories/second (1.5-3 minutes for 2,619 memories)
- 3-5x faster initial sync from Cloudflare to local SQLite
- Optimizations:
- Bulk Existence Check:
get_all_content_hashes()method eliminates 2,619 individual DB queries - Parallel Processing:
asyncio.gather()with Semaphore(15) for concurrent memory processing - Larger Batch Sizes: Increased from 100 to 500 memories per Cloudflare API call (5x fewer requests)
- Bulk Existence Check:
- Performance Metrics:
Changed
- Unified Tag Search API - All backends now support consistent
search_by_tags()interface with time filtering - Cloudflare Analytics -
get_all_tags_with_counts()replaces multiple queries for dashboard tag statistics
Migration Guide
No breaking changes - all updates are backward compatible. Existing tag search code continues to work.
Full Changelog: https://github.com/doobidoo/mcp-memory-service/blob/main/CHANGELOG.md#8280---2025-11-21