🐛 Critical Bug Fix
Document Ingestion Tag Parsing
Fixed critical data corruption bug where tags were stored character-by-character instead of as complete strings
Problem
- When
chunk.metadata['tags']contained a comma-separated string (e.g.,"claude-code-hooks,update-investigation"), theextend()method treated it as an iterable and added each character individually - Tags like
"claude-code-hooks,update-investigation,configuration,breaking-changes"became['c','l','a','u','d','e','-','c','o','d','e','-','h','o','o','k','s',',','u','p','d','a','t','e',...](80+ character tags per memory) - Impact: Memories were unsearchable by tags, tag filtering broken, tag display cluttered with single characters
Solution
- Added
isinstance()type check to detect string vs list formats - Properly split comma-separated strings before extending tag list
- Fixed in two locations: single file upload (lines 424-430) and batch upload (lines 536-542)
Database Repair
- 13 affected memories automatically repaired using metadata field backup
- All character-split tags reconstructed from correctly-stored metadata
Files Modified: src/mcp_memory_service/web/api/documents.py
Full CHANGELOG: https://github.com/doobidoo/mcp-memory-service/blob/main/CHANGELOG.md#8221---2025-11-09