An MCP server that provides RAG (Retrieval-Augmented Generation) capabilities using IBM Watsonx.ai for querying PDF documents. It extracts text from PDFs, chunks the content, stores it in ChromaDB for vector search, and uses Watsonx foundation models to generate contextual answers.
This MCP server has a single tool (chat_with_manual) with critical definition gaps. The tool has a minimal description (82 characters) that explains basic functionality but lacks LLM-optimization guidelines. The input schema shows only a query parameter with basic type and description, but lacks constraints, examples of expected format, or handling guidance. No output schema is documented anywhere in the visible code, the tool returns unstructured results from a RAG pipeline. Error handling is absent; no recovery guidance for failed queries, vector DB issues, or model failures. The tool is exposed via fastmcp but the implementation is incomplete in the provided source snippet. Naming (chat_with_manual) is acceptable but could be more verb-specific (query_documents or search_documents would be clearer).
Chat interface for querying PDF documents using RAG. Takes a user query, retrieves relevant chunks from the vector database, and uses Watsonx foundation model to generate an answer based on the retrieved context.
No output schema documented. LLMs cannot plan downstream operations or extract result fields without knowing what the tool returns.
No error handling or recovery guidance. Tool will fail silently on vector DB misses, empty results, or model errors, agent gets no signal to retry or pivot.
Tool description is 82 characters, below the LLM-friendly range of 150-250 chars. Lacks WHEN to use, WHAT it does in full detail, and prereqs (are PDFs required to be loaded first?).
Query parameter description is vague ('The user's question'). Does not specify: max length, expected format, how partial/ambiguous queries are handled, whether queries are case-sensitive, or accepted query language (natural language vs SQL-like).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 33 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 23 | - | v1 |
No pagination or result limit documented. RAG queries could return massive context from vector DB, tool description must cap results and explain limits.
Naming 'chat_with_manual' is ambiguous. Does it query manuals? Chat with a model about manuals? 'query_documents' or 'search_documents' would be clearer.
Tool description does not state whether results are always present, sometimes partial, or can be empty. If no relevant chunks found, does agent get an empty list or error?