MCP server for RAG-based documentation search using vector embeddings, document chunking, and LLM-powered response generation
Single tool (search_docs) with well-formed schema and reasonable parameter structure. Tool naming follows verb_noun convention (search_docs). Description is present and action-oriented but relatively brief (116 chars). Input schema is properly typed with object properties, required fields, and enum constraints. However, output schema is not documented in source code, only described in prose ('Returns relevant documentation chunks with AI-generated summary'). Parameter descriptions are present and specific. No error handling guidance visible in source. Tool is READ_ONLY which is positive for safety. Overall demonstrates competent baseline definition quality but lacks output schema documentation and error recovery patterns that would elevate to 70+.
Search documentation for relevant information. Returns relevant documentation chunks with AI-generated summary.
Output schema not documented. Tool description states 'Returns relevant documentation chunks with AI-generated summary' but does not specify the structure of returned objects, field names, types, or pagination behavior.
No error handling guidance. Source code does not show recovery instructions for common failure modes (e.g., empty query, invalid category, embedding service failure, index not found). LLMs lack direction on what to do if the tool fails.
Tool description is brief (116 chars) and lacks context on when to use this tool vs. other potential tools, prerequisites, and dependency hints. Description should clarify: What is the search scope? Are documents pre-indexed? Does category filter work if not provided?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 46 | - | v1 |
Parameter 'category' has enum constraint but description says 'Optional: Filter by category', does not explain what happens if category is omitted or what each enum value represents (e.g., what is 'eng-style' vs 'task-management'?).
Parameter 'top_k' has default value (5) but description does not state the valid range (min/max). If limit is enforced (e.g., max 50), this constraint should be visible in description for LLM reasoning.