MCP server for Rust codebase analysis with semantic embeddings, hypergraph indexing, and hybrid search capabilities
The server exposes a single tool 'index_codebase' with a clear, action-oriented name and reasonably detailed description. The tool has a well-structured JSON Schema with four parameters, each with type declarations and descriptions. However, there are significant gaps: (1) the output schema is NOT documented, we cannot see what index_codebase returns, forcing LLMs to guess the response structure; (2) parameter descriptions lack detail on formats, constraints, and expected behavior; (3) no error handling guidance is visible, if indexing fails or a version mismatch occurs, the LLM has no recovery path; (4) the embedding_profile parameter description mentions specific profiles ('local-cpu-small', 'local-gpu-small', etc.) but does not formally constrain them as an enum, leaving room for hallucinated values. The tool is a single-operation design with no composition concerns, but the lack of output documentation and error handling guidance significantly limits its utility in agentic workflows.
Index a codebase directory with automatic change detection
Output schema is NOT documented. The tool description and source do not specify what index_codebase returns (e.g., indexed_chunks_count, index_location, metadata). LLMs cannot plan downstream operations or extract required fields without seeing the response structure.
embedding_profile parameter lacks enum constraint. The description lists specific values ('local-cpu-small', 'local-gpu-small', 'local-qwen3-4b', 'local-qwen3-8b', 'openrouter-qwen3-8b') but does not declare them as an enum. This invites LLMs to hallucinate invalid values. A proper enum constraint makes valid options explicit and machine-parseable.
Error handling guidance is absent. The source mentions 'version-mismatch error pointing to clear_cache' but the tool description does not explain what error conditions exist, when they occur, or how the LLM should respond. An LLM encountering a 'version mismatch' error has no guidance on whether to retry, call a different tool, or prompt the user.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 8 | 2024-11-05+ | v1 |
Parameter descriptions lack constraint details. The 'directory' parameter states it is an 'Absolute path' but does not specify validation (must exist, must be readable, path length limits, symlink handling). The 'model' parameter description is verbose but vague on when to use each model or what dimension values mean ('1024-dim', '2560-dim', '4096-dim'). Concrete constraints and examples help LLMs provide valid input.
No idempotency or side-effect documentation. The tool description does not state whether repeated calls with the same parameters are safe (idempotent) or whether calling it twice creates duplicate work. Agents retry on ambiguous failures, idempotency guarantees prevent duplicate indexing or data corruption.