MCP server for PDF processing and semantic search with ChromaDB
Server has 4 tools with complete input schemas and descriptions, but quality is inconsistent. Tool names follow verb_noun convention (load_pdf, search_text, get_metadata, give_page). Descriptions are present (avg ~90 chars) but lack depth on WHEN to use each tool and what happens on error. Parameters have types and descriptions, but lack constraints (enums, ranges, format specs). No output schemas documented. Error handling is absent, no guidance on retryability, user-fixable errors, or recovery paths. Schemas are visible and properly typed, but descriptions are generic and don't explain dependencies or side effects. This is a typical community server with functional but incomplete definitions.
Retrieve stored metadata for a loaded document
Get the full text content of a specific page from a PDF
Load a PDF from URL, chunk it, and insert into ChromaDB with metadata for later search
Search for related content in the vector database and return relevant fragments (RAG)
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing response structure.
Descriptions lack WHEN/WHY context. 'Load a PDF from URL, chunk it, and insert into ChromaDB' does not explain when to call this vs search_text, or what happens on network failure.
No error handling guidance. Tools do not indicate which errors are retryable, user-fixable, or fatal. No recovery hints (e.g., 'If PDF fails to load, check URL format').
Parameters lack constraints. 'top_k' has no min/max (could be 0 or 1000000). 'page_number' has no validation hint. 'url' has no format constraint.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Tool 'give_page' name is non-standard. 'get_page' or 'extract_page' would be clearer. 'give' is not a common action verb in tool naming.