MCP wrapper around Apache Tika for document parsing and metadata extraction.
Five tools with clear verb-noun naming (extract_*, detect_*) and consistent descriptions (50-90 chars each). All tools have input schemas with typed 'source' parameter and descriptions. Output schemas are documented via TypedDict classes (ExtractTextResult, ExtractMetadataResult, etc.). Error handling converts TikaClientError to ToolExecutionError with messages. However, parameter descriptions are generic and do not explain format constraints, valid ranges, or when to use each tool variant. No enum constraints, no dependency hints between tools, and no guidance on output limits or recursive extraction behavior. Tool descriptions lack WHEN/WHY context that LLMs need for selection.
Detect a document's MIME/content type from its bytes, without full parsing.
Parse a container, archive, or compound document and return every embedded document's content (XHTML) and metadata.
Extract structured XHTML (headings, tables, and links preserved) from a document.
Extract document metadata (author, title, content type, page count, and other Tika fields) without the body text.
Extract plain text from a document (PDF, Office file, HTML, and other Tika-supported formats).
Parameter descriptions lack format constraints and usage guidance. 'source' parameter description is identical across all tools and does not explain when to use local paths vs URLs, file size limits, or supported formats.
Tool descriptions lack WHEN/WHY context. 'Extract plain text from a document' does not explain when to choose extract_text vs extract_html vs extract_documents, or what formats are supported.
No documentation of output limits or recursive extraction constraints. extract_documents enforces tika_recursive_max_files and tika_recursive_max_depth but tool description does not mention these limits or how to handle them.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Error messages are generic. ToolExecutionError wraps TikaClientError but does not provide recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal.
No input validation or constraint documentation. Parameters accept free-form strings with no enum, regex, or length constraints. LLM cannot self-correct invalid inputs.