Manages project-specific memory banks using SQLite. Initializes memory bank storage, reads/writes entries across sections (product context, decisions, progress, focus, system patterns).
Memory Bank MCP server has 4 tools with complete input schemas and descriptions, but significant gaps in output documentation and parameter clarity. All tools follow verb_noun naming (initialize_, get_, read_, update_). Input schemas are well-formed with enums for section selection. However, output schemas are either missing (initialize_memory_bank, get_memory_bank_status) or poorly documented (read_memory_bank_section returns 'array of strings' without field details). The update_memory_bank_entry tool has a complex conditional parameter structure (entry_data keys depend on section) that is documented in description text but not enforced in schema. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Error handling exists but lacks recovery guidance. Descriptions are adequate (100-200 chars) but could be more specific about when to use each tool vs. alternatives.
Checks the status of the memory bank for a given project path.
Initializes the memory bank storage for a given project path. Creates the necessary directory and database file if they do not exist.
Reads entries from a specific section of the memory bank.
Adds or updates an entry in a specific section of the memory bank. The structure of `entry_data` depends on the chosen `section`.
Output schemas incomplete or missing. initialize_memory_bank and get_memory_bank_status define outputSchema but lack field descriptions. read_memory_bank_section returns 'array of strings' (JSON-stringified objects) instead of structured objects, forces LLM to parse unstructured text.
update_memory_bank_entry has conditional parameter logic (entry_data keys depend on section enum value) documented only in description text, not enforced in schema. LLM cannot validate which keys are valid for each section without parsing prose.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. initialize_memory_bank and update_memory_bank_entry are destructive/write operations; get_memory_bank_status and read_memory_bank_section are read-only. Annotations enable agent safety policies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2025-06-18+ | v2 |
Error handling returns McpError with ErrorCode but no recovery guidance. E.g., 'Invalid project_path: contains ".."' does not suggest what to do next or how to fix it.
project_path parameter accepts any string; no validation of absolute vs. relative paths or filesystem permissions. Description says 'absolute path' but code uses path.resolve() which accepts relative paths. Inconsistency invites misuse.