MCP server for Localmem, a private AI memory vault that persists facts, preferences, decisions, and pointers across conversations and sessions
Localmem MCP demonstrates solid naming conventions (verb_noun pattern: memory_store, memory_get, memory_search, memory_recent, memory_update) and comprehensive parameter schemas with type definitions and descriptions. Tool descriptions are present and contextual, ranging 150-400 chars. However, output schemas are not documented in the visible code, critical for LLM planning. Parameter descriptions are detailed but some lack explicit constraints (e.g., memory_store's 'content' field has guidance but no length limits). Error handling is mentioned (errorReporting=true) but recovery guidance is not visible in the tool definitions. The memory_store tool includes helpful USE WHEN/DO NOT USE guidance, setting a good pattern, but this is inconsistent across tools.
Retrieve the full verbatim body content for one or more memories by their UUIDs.
Retrieve the most recently stored or updated memories, newest-first.
Full-text search over Localmem, ranked by relevance (FTS5 BM25). Cheap — call it whenever you need context, do not try to "remember" from prior turns.
Persist a single fact, preference, decision, or pointer in Localmem so it outlives the current conversation and is available in every future session with this user, across every project.
Update an existing memory's content, title, type, tags, or headline by its UUID.
Output schemas not documented. LLMs cannot plan downstream operations or extract required fields (e.g., memory UUIDs for chaining). memory_search, memory_get, memory_recent lack visible return type specifications.
memory_recent description is minimal (65 chars) and lacks guidance on when to call it vs memory_search. Does not explain what 'recently stored or updated' means (seconds? hours?) or typical use cases.
memory_store 'content' parameter lacks explicit length constraints or format guidance. Description says 'full sentence with terminal punctuation' but no max length, encoding, or validation rules are stated.
Error handling and recovery guidance not visible in tool definitions. errorReporting=true but no examples of error responses or how LLMs should interpret failures (retryable vs fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
memory_update description does not clarify idempotency or partial update semantics. If called twice with same id and content, is it safe to retry? What happens if id does not exist?