MCP server for a modular Retrieval-Augmented Generation (RAG) platform with configurable retrievers, rerankers, and generators
Three tools with clear action verbs and basic schemas, but significant gaps in parameter descriptions and output documentation. All tools have descriptions (10-100 chars), but descriptions are generic and lack context for LLM selection. Input schemas present with types and defaults, but parameter descriptions are minimal (e.g., 'The search query string' lacks format/constraint guidance). No output schema documented. Error handling absent, no recovery guidance or categorization. Tools are read-only and well-scoped, but lack the depth expected for production use.
Answer a user query using RAG with document retrieval, reranking, and generation
Search documents with filtering by metadata fields like category and filetype
Search for documents in the RAG system using semantic or lexical retrieval
No output schema documented. LLMs cannot plan downstream calls or extract fields. Response structure inferred from code only.
Parameter descriptions lack actionable constraints. 'The search query string' does not specify format, length, or valid patterns. 'Number of top documents to return' lacks guidance on when to use different values.
Tool descriptions are generic and do not explain WHEN to use each tool or how they differ. 'Search for documents' vs 'Answer a user query', unclear when to call search_documents vs answer_query.
No error handling or recovery guidance. Code calls _post_json with timeout=300 but no try-catch or error categorization. LLM receives raw HTTP errors with no actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
search_by_metadata filters results client-side after retrieval, wasting API calls. Metadata filters should be passed to the backend /search endpoint to reduce payload and latency.