mcp-memory-service v8.19.0: retrieve_memory and search_by_tag broken with 'tags' and 'float' errors
After upgrading mcp-memory-service from v8.18.2 to v8.19.0 on Windows (Python 3.12, hybrid sqlite + Cloudflare backend, Claude Desktop),
retrieve_memoryfails with "HybridMemoryStorage.retrieve() got an unexpected keyword argument 'tags'" andsearch_by_tagfails with "'float' object has no attribute 'replace'". How do I fix or work around these regressions?Originally asked on GitHub: https://github.com/doobidoo/mcp-memory-service/issues/211
4 answers
Status: fixed (releases v8.19.1 and v8.20.1). The two v8.19.0 regressions were addressed by the maintainer:
search_by_tagwas fixed in v8.19.1 (commit 10b8c57), and a follow-upretrieve_memoryserialization bug introduced by that patch was addressed in v8.20.1 (commit d1609a7). The thread reports no user confirmation of v8.20.1, only the release announcement.Root causes:
retrieve_memory:MemoryService.retrieve_memories()was callingstorage.retrieve()withtagsandmemory_typeparameters that the baseMemoryStorage.retrieve(query, n_results)interface does not accept. v8.19.1 removed those unsupported arguments and moved tag/memory-type filtering into the service layer after retrieval.search_by_tag: the handler assumedcreated_atis always an ISO-format string, but the hybrid (sqlite + Cloudflare) backend returns a float Unix timestamp, so.replace('Z', '+00:00')crashed withAttributeError: 'float' object has no attribute 'replace'. v8.19.1 added type checks: floats go throughdatetime.fromtimestamp(), strings throughdatetime.fromisoformat().
Important caveat: v8.19.1's
retrieve_memoryfix introduced a second error,'MemoryQueryResult' object has no attribute 'content', because the response formatter expected aMemoryobject but received aMemoryQueryResult. The maintainer fixed it in v8.20.1 by extracting.memorybefore formatting and addingsimilarity_scoreto the response.To update:
bashpip install --upgrade mcp-memory-service # or uv pip install --upgrade mcp-memory-serviceThen restart the MCP server (
/mcpin Claude Code, or restart Claude Desktop).Workaround: on the reporter's v8.19.0 setup (Windows, Python 3.12, hybrid backend, Claude Desktop),
recall_memory,store_memory, andcheck_database_healthstill worked, sorecall_memorycan be used while broken.Did this work for you?What a GitHub user tried on GitHub (Didn't work)
Upgraded from v8.18.2 to v8.19.0 and called
retrieve_memory(query="upgrade protocol venv312", n_results=3)andsearch_by_tag(tags=["mcp-memory-service", "upgrade"]). Both failed with the reported errors;recall_memoryworked as a workaround.Source: https://github.com/doobidoo/mcp-memory-service/issues/211 (opens external site)
Did this work for you?What @VibeCodeChef tried on GitHub (Partly worked)
After upgrading to v8.19.1, verified that
search_by_tagwas fixed, butretrieve_memorynow failed with a new error:'MemoryQueryResult' object has no attribute 'content'.Did this work for you?What @doobidoo tried on GitHub (Outcome unclear)
Maintainer released v8.20.1 (commit d1609a7) on PyPI with a fix that extracts the
Memoryobject fromMemoryQueryResultbefore formatting and addssimilarity_score. No user in the thread confirmed the fix after this release.Did this work for you?
Related questions
- mcp-memory-service Docker boot loop: container restarts after exit code 0
- mcp-memory-service: exact text only scores 60-70%? Use hybrid BM25 + vector search (v10.8.0)
- How do I use project management or custom memory types in mcp-memory-service?
- Claude Code ignores readOnlyHint for mcp-memory-service: workarounds?
- UNIQUE constraint failed: memories.content_hash after delete_memory() in mcp-memory-service