MCP server for code search, indexing, and analysis across multiple repositories. Provides tools for full-text search, symbol lookup, reference finding, git history, and dependency tracing.
Relith provides 21 well-named, read-only code analysis tools with consistent verb-noun naming (search_code, get_file_content, find_symbol, etc.). All tools have descriptions (avg ~120 chars) and input schemas with typed parameters. However, output schemas are not documented in the source, responses are constructed as text or JSON structs without formal schema declarations. Parameter descriptions are present but often minimal (10-30 chars). No tool annotations (readOnlyHint, idempotentHint) despite all being read-only. Error handling returns text messages but lacks structured recovery guidance. The tools are well-composed for code exploration workflows, but lack the polish expected of production-grade agent tools.
Find likely callees used inside the definition file for a symbol, useful for following execution flow.
Find all functions that call a given symbol, useful for understanding impact and dependencies.
Find all references to a function or symbol name across all indexed repositories. Shows every call site with file, line, and surrounding context.
Search for symbols (functions, classes, structs, methods, interfaces) across indexed repositories by name prefix.
Get high-level architecture overview of a repository based on graph structure and file organization.
Get git blame information for a file or line range.
Output schemas not documented. Tools return text or JSON structs but no formal response schema is declared. LLMs cannot plan downstream calls or extract structured data reliably.
No tool annotations. All 21 tools are read-only and idempotent, but lack readOnlyHint and idempotentHint annotations. Agents cannot infer safety properties without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Get diff between two git revisions.
Retrieve the full content of a file from an indexed repository by repo name and file path.
Get commit history for a specific file.
Get a compact outline of a file: metadata, symbols, chunks, and nearby references.
Get a tree view of files in a repository or subdirectory.
Get recent commits from a repository's git history.
Find files related to a given file by import/dependency graph analysis.
Get a summary of a repository including language breakdown, file count, chunk count, and indexing status.
Find the exact definition of a symbol and return its repo, file, kind, and snippet.
List hub files (central/important files) in a repository based on graph centrality.
List all tracked repositories with their status, file count, and last indexed time.
Query the dependency graph with a custom graph query language.
Full-text search across all indexed repositories. Returns matching code snippets with file paths, repo names, and relevance scores.
Trace what leads to a behavior by combining full-text search, AST symbol matches, references, and graph-linked files into one reasoning bundle.
Trace dependency paths between two files or symbols.
Parameter descriptions are minimal (10-30 chars). Examples: 'Repository name', 'File path relative to repository root', 'Symbol name prefix to search for'. Lack context on format, constraints, or when to use each parameter.
Error handling returns plain text messages without structured recovery guidance. Example: 'search failed: <error>' does not tell the LLM whether to retry, ask the user, or try an alternative tool.
No pagination support visible. Tools like search_code and find_references accept max_results but do not return total_count, next_cursor, or offset. Large result sets may be truncated silently.