Provides efficient code navigation without reading full files: symbol lookup (ctags-based), cross-references (ripgrep-based), git integration (blame, show), multi-repo support
Server provides 6 tools with basic schemas and descriptions, but significant gaps limit production readiness. Tool names follow verb_noun convention (add_repo, find_symbol, git_blame) which is good. However, descriptions are inconsistent in depth, some are adequate (find_symbol: 115 chars), others lack actionable context (list_repos: 28 chars, below 20-char floor). Parameter descriptions exist but are sparse; many lack format/constraint details. Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; most failures return generic strings without recovery guidance. No input validation visible; tools accept untrusted paths and symbols without sanitization, creating injection risks. Overall, this is a functional but immature implementation typical of community servers (C-grade territory).
Add and index a code repository for navigation. Supports any git repo (linux kernel, libcamera, etc.)
Find all references to a symbol across the codebase. Uses ripgrep for fast searching.
Find where a symbol (function, struct, define, variable) is defined. Returns file:line without reading full files.
Get git blame information for a specific function. Shows who changed what and when.
Show recent commits that affected a specific symbol. Uses git pickaxe search.
List all indexed repositories
list_repos has trivial description (28 chars, below 20-char floor). LLMs cannot determine when to call it vs other discovery tools. Needs: 'List all indexed repositories with their paths and branches. Call this first to see available repos before searching symbols.'
No output schemas documented for any tool. LLMs cannot predict response structure (e.g., does find_symbol return an array? object? what fields?). Responses are inferred from code (SymbolResult, ReferenceResult dataclasses) but not exposed in tool definitions.
Path and symbol parameters accept untrusted input without validation. add_repo accepts arbitrary 'path' strings; find_symbol accepts 'symbol' without sanitization. Vulnerable to path traversal and command injection via ripgrep/ctags. Needs input validation and error messages.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Error handling returns generic strings ('Error: ctags not found...', 'Error indexing...') without recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal. Needs categorization and actionable next steps.
Parameter descriptions lack format/constraint details. 'branch' in add_repo has no guidance on valid format. 'context' in find_references lacks min/max bounds (code defaults to 2, but no schema constraint). 'kind' in find_symbol has no enum of valid values (function, struct, define, variable).