MCP server that exposes 8 deterministic tools for navigating a code repository without reading entire files. Builds a code graph from tree-sitter parsing and provides symbol lookup, grep, references, and dependency analysis.
repo-map provides 8 well-named, read-only tools with clear verb-noun naming (index, outline, where_is, grep_code, get_symbol, who_references, what_it_uses, refresh). All tools have descriptions (avg ~120 chars, within 10-1024 range). Input schemas are present with typed parameters and descriptions. However, output schemas are NOT documented, the code shows tools return results but no schema definitions are visible in the source. Error handling exists (TargetError class) but lacks recovery guidance. Parameter descriptions are adequate but could be more prescriptive about formats and constraints. No tool annotations (readOnlyHint, etc.) despite all being read-only operations.
Retrieve the full body of a single symbol (function, class, or method) from a file.
Search code by content pattern. Returns matches located within their enclosing symbol (function/class/method).
Retarget the server to a different folder. Changes the default target for subsequent calls that don't pass `repo`. Triggers lazy build of the code graph for that target.
Return the signatures (table of contents) of a file: all definitions (functions, classes, methods) with their line ranges and kinds.
Rebuild the code graph for a target repository without changing the default target. Useful for picking up recent code changes.
Find all symbols that a given symbol depends on (calls). Shows the dependencies of a symbol.
Output schemas not documented. Tools return results (code_graph.json, symbol bodies, references) but no schema definitions visible in source. LLMs cannot plan downstream operations or extract fields reliably.
No tool annotations despite all tools being read-only. Missing readOnlyHint would help LLMs understand these are safe to call without side effects.
Error handling returns TargetError with messages but no recovery guidance. 'la cible courante n'existe plus' tells the agent the problem but not what to do next (e.g., 'Call index() with a valid path').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Find where a symbol is defined. Returns top 5 matches sorted by contextual PageRank (boosted by recent file access and explicit mentions in the session).
Find all symbols that reference (call) a given symbol. Shows the impact of changing that symbol.
Parameter descriptions lack format constraints. 'path' in index() says 'Absolute or relative path' but does not specify: must exist? must be directory? what if symlink? Similar gaps in 'file', 'pattern', 'name' across tools.
No pagination or result limits documented. grep_code and who_references could return hundreds of matches; no limit, offset, or total_count visible in schema. Large results risk context window exhaustion.