MCP server providing code search and symbol lookup tools for indexing and querying codebases
Memtrace MCP server has 9 tools with basic definitions but significant quality gaps. All tools have names starting with action verbs (find, search, shortlist, symbol, cochange, history, rank, verify, list) and descriptions present. However, descriptions are extremely brief (10-50 chars), parameter documentation is minimal, and output schemas are completely absent from the visible source. Parameters have type information but lack detailed descriptions explaining format, range, or constraints. No error handling guidance is documented. The server appears designed for code indexing and retrieval tasks, but the implementation details are sparse, tool definitions appear to be inferred from Python client code rather than explicitly registered with full MCP schemas. This is a common pattern in research/benchmark projects but falls short of production-grade MCP servers.
Find files that co-change with a target file within a specified time window
Find a symbol by name in the indexed codebase
Query historical changes to files or symbols
List all repositories currently indexed in the Memtrace server
Rank context spans for relevance to a query
Search for code snippets by query text, optionally filtered by file path
Generate a prioritized shortlist from specified files
Output schemas completely undocumented. No visible documentation of what fields each tool returns, data types, or structure. LLMs cannot determine downstream tool compatibility or plan multi-step operations.
Parameter descriptions are minimal or absent. 'name' in find_symbol is described as 'The symbol name to search for' but lacks guidance on format, length limits, or case sensitivity. Parameters like 'file' in cochange lack context on whether it should be a relative or absolute path.
Tool descriptions under 50 characters lack sufficient context for LLM selection. 'Find a symbol by name in the indexed codebase' (47 chars) does not explain when to use find_symbol vs symbol, or what 'indexed codebase' implies about preconditions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Look up a symbol by name, optionally filtered by file
Verify the integrity of the Memtrace index
No error handling documentation. Tools like search, cochange, history accept optional filters (file, days, from_time) but provide no guidance on what happens if parameters are invalid (negative days, malformed time strings, non-existent files).
Ambiguous tool distinctions. Both 'find_symbol' and 'symbol' claim to look up symbols by name. The description 'Find a symbol by name in the indexed codebase' vs 'Look up a symbol by name, optionally filtered by file' is unclear, LLMs cannot reliably distinguish when to use each. This violates the single-responsibility principle.
No pagination or result limit enforcement documented. Tools like 'search' default to limit=20 but description does not explain why, what happens when results exceed the limit, or how to retrieve additional pages.
Parameter 'file' and 'target' naming inconsistent. 'search' uses 'file' as optional filter, 'cochange' uses 'target' for the same concept, 'symbol' uses 'file'. LLMs must reason about semantic equivalence across tools instead of recognizing identical parameters.
Generic parameter 'from' in history tool is a Python keyword and requires shell escaping (--from). This creates UX friction and suggests the tool was not designed with agent-friendly parameter naming in mind.