A lightweight MCP server for session memory management with persistent storage
Server has 7 tools with complete Zod schemas and descriptions. Naming follows verb_noun convention (upsertSummary, getSummary, listSummaries, etc.). Descriptions are present and moderately detailed (100-250 chars typical). However, several tools have overlapping responsibilities (getSummaryTool and listSummariesTool both list summaries; upsertSummary and appendSummary both write), violating single-responsibility principle. Parameter descriptions are thorough but some are verbose (sessionId description exceeds 300 chars). Output schemas are not explicitly documented, responses are JSON strings, not structured objects. Error handling returns JSON in text fields but lacks recovery guidance or error classification. No tool annotations (readOnlyHint, destructiveHint) despite clear read/write semantics.
Simple reliable tool to append content to a session summary. Creates a new version that includes previous content plus new content.
Retrieves all historical versions of a session in chronological order.
Retrieves a specific summary by sessionId or lists all available summaries if no ID is provided.
Simple tool to list all available summaries.
Lists available summaries with support for filtering, sorting, and pagination.
Updates only the metadata (title and/or tags) without changing the summary content or timestamp.
Create or update a detailed session summary with metadata
Overlapping tool responsibilities: getSummaryTool, listSummariesTool, and listAllSummariesTool all retrieve summaries with different filtering/pagination logic. LLMs will struggle to choose between them.
Duplicate write semantics: upsertSummary and appendSummary both modify session state. upsertSummary creates a new version; appendSummary appends and creates a new version. Distinction is unclear to LLMs.
No tool annotations: tools lack readOnlyHint and destructiveHint metadata. LLMs cannot infer which tools are safe to retry or have side effects without reading descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Output schemas not documented: tools return JSON strings wrapped in text fields. No structured schema definition for response fields (success, error, sessionId, versionCount, history, etc.). LLMs must parse unstructured text.
Error handling lacks recovery guidance: error responses return JSON with 'success: false' and 'error' string, but do not suggest next steps or classify errors as retryable/user-fixable/fatal.