Enhanced RAG Knowledge Management System with multi-modal capabilities, intelligent token management, and advanced search
The server defines 7 tools with schemas and descriptions present, but quality is inconsistent. Tool naming follows verb_noun conventions (search, get, list, chat) which is good. However, descriptions vary widely in quality, some are detailed and action-oriented (kms_chat with emoji and token management details), while others are generic (kms_get_stats, kms_list_documents). Most critical gaps: output schemas are NOT documented anywhere in the source code. The kms_chat tool's description mentions 'automatically optimizes for token limits' but no output structure is specified for LLMs to parse. Parameter descriptions are present but sparse (e.g., kms_get_stats has only one parameter with a 50-char description). Error handling exists at the HTTP layer (McpError thrown on failed KMS requests) but provides minimal recovery guidance, errors like 'KMS API request failed: 500 Internal Server Error' give the LLM no actionable next step. The code shows enrichSearchResultsWithFullContent logic that fetches full document content, but no documentation of this behavior in the tool descriptions themselves. Average tool description length is ~180 chars (within baseline 194), but descriptions lack specificity about WHEN to use each tool vs. another (e.g., kms_search vs kms_intelligent_search vs kms_multimodal_search are confusing without clear differentiation). Baseline violation: ~40% of tools lack parameter count documentation; kms_multimodal_search has 4 parameters with only 3 documented in full detail.
🚀 Primary tool for comprehensive knowledge queries. RAG-powered conversational queries with multi-modal context, intelligent token management, and full document content access. Automatically optimizes for token limits while providing comprehensive responses.
Retrieve detailed information about a specific document by ID, including full content, transcriptions, and metadata.
Get comprehensive analytics and statistics about the KMS system
Advanced RAG search with intelligent query analysis, routing, and full content access. Uses enhanced middleware for optimal search strategy selection.
List documents with filtering and pagination support
Enhanced multi-modal search with full content retrieval. Search across text, audio, video content and video frames with technical content detection (code, diagrams, UI elements).
Output schemas are completely undocumented. No tool describes what fields, data types, or structure the response contains. LLMs cannot parse multi-field responses or chain tools without guessing at field names.
Three search tools (kms_search, kms_intelligent_search, kms_multimodal_search) lack clear differentiation. The descriptions do not explain WHEN to use each one. An LLM selecting between them will guess and waste reasoning cycles. These three are similarly ambiguous.
Error responses provide no recovery guidance. Code throws McpError with raw HTTP status and error text from KMS API (e.g., 'KMS API request failed: 500 Internal Server Error - <errorText>'). LLMs cannot infer actionable next steps from status codes alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Semantic search across documents using vector similarity. Searches through text documents, audio transcriptions, and video content with full document content retrieval.
kms_get_stats and kms_list_documents have weak descriptions (under 60 chars).
No pagination or result limits documented. kms_list_documents and search tools return results but cap/cursoring behavior is undocumented. Code shows enrichSearchResultsWithFullContent limits to 10 documents max, but this constraint is invisible to the LLM.
kms_chat parameter 'maxResults' (15 default) and enrichment logic (10 doc limit) are hidden. Description claims 'automatically optimizes for token limits' but no output shows token usage, overflow handling, or which documents were selected. LLMs cannot reason about trade-offs.
kms_intelligent_search and kms_multimodal_search filters parameter uses nested object structure (type: string, tags: array, documentTypes: array, hasVisualContent: bool) without specifying valid enum values. LLMs will hallucinate invalid documentTypes or tags.