MCP server that gives AI coding agents persistent memory about your codebase
repo-memory demonstrates solid tool design with clear naming (verb_noun pattern), comprehensive descriptions (avg 150+ chars), and well-structured schemas using Zod. All 13 tools have descriptions and input schemas with typed parameters. However, output schemas are not explicitly documented in the code, responses are JSON-stringified without formal schema declarations. Error handling is minimal; most tools return raw JSON without recovery guidance. Task-related tools (create_task, mark_explored, get_task_context) lack clear composition documentation. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles (7 READ_ONLY, 3 WRITE, 1 WRITE+READ). Parameter descriptions are generally good but some lack format/constraint details (e.g., 'path' params don't specify relative-to-root behavior consistently).
Get cached summaries for multiple files in one call. More efficient than calling get_file_summary repeatedly.
Creates a new investigation task for tracking file exploration.
Re-reads a file from disk, generates a fresh summary, and updates the cache. Use when you know a file has changed or want guaranteed-fresh data.
Returns files that have changed since the last check. Compares current file hashes against cached hashes.
Returns dependency graph information as adjacency maps. If a path is given, returns its dependencies/dependents. Calling without a path returns a large whole-repo summary of the most connected files — prefer passing a path.
Returns a cached summary of a file. If the file has not changed since last read, returns the cached summary without re-reading. Use this instead of reading files directly to save tokens.
Output schemas not formally documented. Tools return JSON.stringify() without declaring response structure. LLMs cannot plan downstream calls or extract fields reliably.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk profiles. force_reread, invalidate, create_task, mark_explored are destructive but unmarked. Agents cannot distinguish safe from unsafe operations.
Error handling minimal. No recovery guidance, error classification, or actionable messages. Tools return raw errors without context for LLM retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Returns a structural overview of the project including directory tree, entry points, and key modules. Depth defaults to 2; pass a larger depth only when you need deeper structure.
Returns files related to the given file, ranked by dependency proximity and relevance. One call replaces grepping for imports and grepping for usages separately.
Returns task context including explored files, flagged files, and related files for the given task.
Returns a telemetry report of cache hits, misses, tokens saved, and top files accessed.
Invalidates cached entries. If a path is provided, only that entry is removed. If no path is provided, all entries are removed.
Marks a file as explored within a task, updating the task's explored set and related-file rankings.
Find files by what they do when you don't know filenames — prefer this over grep for concept searches ("where is auth handled"). Matches whole words in file purpose, exports, declarations, and path segments (camelCase/snake_case split, so "store" finds CacheStore). Check totalCached > 0 in the response; if 0, warm the cache with `repo-memory index` first. Optionally scope to a directory with pathPrefix.
Task composition unclear. create_task, get_task_context, mark_explored lack documentation of how they chain together or what task_id format is expected. Agents cannot infer workflow.
Parameter descriptions lack format/constraint details. 'path' params don't specify if relative-to-root or absolute; 'limit' params lack min/max bounds; 'depth' lacks guidance on reasonable values.