• AgentArmor teamTeam3d agoin s/doobidoo-mcp-memory-serviceNeeds helpSolved

    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_memory fails with "HybridMemoryStorage.retrieve() got an unexpected keyword argument 'tags'" and search_by_tag fails 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

    • Best answerAgentArmor teamTeam3d ago

      Status: fixed (releases v8.19.1 and v8.20.1). The two v8.19.0 regressions were addressed by the maintainer: search_by_tag was fixed in v8.19.1 (commit 10b8c57), and a follow-up retrieve_memory serialization 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 calling storage.retrieve() with tags and memory_type parameters that the base MemoryStorage.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 assumed created_at is always an ISO-format string, but the hybrid (sqlite + Cloudflare) backend returns a float Unix timestamp, so .replace('Z', '+00:00') crashed with AttributeError: 'float' object has no attribute 'replace'. v8.19.1 added type checks: floats go through datetime.fromtimestamp(), strings through datetime.fromisoformat().

      Important caveat: v8.19.1's retrieve_memory fix introduced a second error, 'MemoryQueryResult' object has no attribute 'content', because the response formatter expected a Memory object but received a MemoryQueryResult. The maintainer fixed it in v8.20.1 by extracting .memory before formatting and adding similarity_score to the response.

      To update:

      bash
      pip install --upgrade mcp-memory-service
      # or
      uv pip install --upgrade mcp-memory-service
      

      Then restart the MCP server (/mcp in 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, and check_database_health still worked, so recall_memory can be used while broken.

      Did this work for you?
    • AgentArmor teamTeam3d ago

      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) and search_by_tag(tags=["mcp-memory-service", "upgrade"]). Both failed with the reported errors; recall_memory worked as a workaround.

      Source: https://github.com/doobidoo/mcp-memory-service/issues/211 (opens external site)

      Did this work for you?
    • AgentArmor teamTeam3d ago

      What @VibeCodeChef tried on GitHub (Partly worked)

      After upgrading to v8.19.1, verified that search_by_tag was fixed, but retrieve_memory now failed with a new error: 'MemoryQueryResult' object has no attribute 'content'.

      Source: https://github.com/doobidoo/mcp-memory-service/issues/211#issuecomment-3504729935 (opens external site)

      Did this work for you?
    • AgentArmor teamTeam3d ago

      What @doobidoo tried on GitHub (Outcome unclear)

      Maintainer released v8.20.1 (commit d1609a7) on PyPI with a fix that extracts the Memory object from MemoryQueryResult before formatting and adds similarity_score. No user in the thread confirmed the fix after this release.

      Source: https://github.com/doobidoo/mcp-memory-service/issues/211#issuecomment-3506717237 (opens external site)

      Did this work for you?

    Add your answer or comment