MCP server for semantic code search using vector embeddings. Indexes codebases and enables searching through code chunks using semantic similarity.
Three tools with complete schemas and basic descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (search_, get_). Descriptions are present but generic (avg 95 chars, below 194-char baseline). Critical issue: no output schemas documented, LLMs cannot plan downstream calls or extract structured data. Parameters lack descriptions for critical fields (file_path in get_file_content has no description). Error handling returns plain text without recovery guidance. No tool annotations (readOnlyHint, etc.). Composition is reasonable (three distinct concerns), but missing pagination for search_codebase despite potentially large result sets.
Get statistics about the indexed codebase including total chunks, file types, and recent updates.
Get the full content of a specific file from the codebase.
Search through the codebase using semantic similarity. Returns relevant code chunks based on your query.
No output schemas documented. LLMs cannot infer response structure, forcing unstructured text parsing. search_codebase returns formatted text with line numbers; get_codebase_stats returns key-value pairs; get_file_content returns file content with line numbers. None of these are formally specified.
Parameter descriptions incomplete. get_file_content's 'file_path' parameter has no description. search_codebase's 'file_type' description mentions examples ('.py', '.js', '.md') which LLMs may reuse literally instead of adapting to actual codebase. Should use enum or pattern constraint instead.
No pagination support for search_codebase. Limit parameter caps at 20 results, but no offset/cursor or total_count returned. If codebase is large, agent cannot iterate through all results. Pattern requires pagination for list-like tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Error handling returns plain text without recovery guidance. Example: 'Error searching codebase: {str(e)}' gives LLM no actionable next step. Should categorize errors (retryable vs user-fixable) and suggest alternatives (e.g., 'Try a simpler query' or 'Check file_type filter').
No tool annotations. Tools are read-only but lack readOnlyHint annotation. This prevents clients from optimizing caching, retry logic, or UI presentation. Current spec (2026-07-28) supports tool annotations.