FastMCP server exposing code indexing and semantic search tools.
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. All tools have descriptions (10-20 chars baseline met), but descriptions lack actionable context for LLM selection. Input schemas present but incomplete: 'limit' parameter has a default but no min/max bounds. Output schemas are inferred from code (JSON dumps) rather than explicitly documented. No error handling guidance, no parameter validation rules stated, no recovery paths. Naming is verb-forward (reindex, search_code, index_status) but descriptions don't explain WHEN to use each tool or dependencies between them.
Check if a code index exists and how old it is. Returns {exists, stale, file_count, chunk_count, age_minutes, last_indexed}.
Full reindex of a project. Collects files, chunks, embeds, stores in Milvus. Replaces existing index. Returns file_count, chunk_count, duration_seconds.
Semantic code search. Finds code chunks by meaning, not just keywords. Returns list of {file_path, start_line, end_line, content, chunk_type, name, score}.
Output schemas not documented. Tools return JSON strings but LLMs cannot see the structure of returned objects (file_path, start_line, end_line, etc.). Forces LLMs to guess field names for downstream reasoning.
Parameter 'limit' in search_code has no min/max bounds. Description says 'Maximum number of results' but does not state valid range (e.g., 1-100). Unbounded integers invite LLM to pass absurd values.
Descriptions lack WHEN-to-use context. 'Full reindex' and 'Semantic code search' state WHAT but not WHEN to call reindex vs search_code, or whether reindex must be called before search. Undocumented dependencies cause wrong tool selection.
No error handling guidance. If reindex fails (e.g., invalid project_path, Milvus connection error), LLM receives no recovery hint. If search_code finds no results, unclear whether to retry, reindex, or adjust query.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Parameter descriptions are minimal. 'project_path' and 'query' lack format/constraint hints. 'project_path' should specify: absolute or relative? Must exist? What if it doesn't? 'query' should hint at natural language vs keywords.