Filesystem-backed persistent memory for AI agents, exposed over the Model Context Protocol (MCP).
memory-mcp has clear, well-structured tool definitions with complete input schemas and descriptions for all 5 tools. Naming follows verb_noun convention (memory_write, memory_read, memory_search, memory_list, memory_delete). Descriptions are concise (40-80 chars) and explain what each tool does. All parameters have type definitions and descriptions. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal (no recovery guidance, no actionable error messages). No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles. Parameter descriptions lack format constraints and validation rules. Missing pagination guidance for memory_search despite 'limit' parameter.
Delete a memory entry by key. Reports whether anything was removed.
List all stored keys, optionally filtered by a tag.
Read a memory entry by its key. Returns the entry or a not-found message.
Keyword search across stored entries (content, tags and key). Returns ranked matches with a short snippet.
Store or update a memory entry under a key. Overwrites content if the key already exists (created_at is preserved).
Output schemas not documented. LLMs cannot predict response structure or plan downstream tool calls. memory_read returns formatted text with key/tags/timestamps; memory_search returns ranked matches with scores and snippets; memory_list returns entry count and key list. None of this is formally specified.
No tool annotations despite clear risk profiles. memory_write and memory_delete are destructive/write operations; memory_read, memory_search, memory_list are read-only. Annotations (destructiveHint, readOnlyHint) enable agents to reason about safety and retry logic.
Error handling lacks recovery guidance. When memory_read or memory_delete fail (key not found), responses are bare messages ('No entry found for key...'). No suggestion to call memory_search or memory_list to discover valid keys. Agents cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Parameter descriptions lack format constraints. 'key' is described as 'Unique identifier' but no length limits, character restrictions, or format rules stated. 'query' in memory_search has no guidance on syntax (exact match vs substring vs regex). LLMs may pass invalid values.
memory_search 'limit' parameter lacks bounds. Default is 10, but no min/max specified. LLMs could pass 0, negative, or huge values. Should document: 'limit: integer, 1 - 100, default 10'.