MCP server for accessing Directmedia Publishing Digitale Bibliothek - 1990s German literature collection
DirectmediaMCP has 8 tools with basic structure but significant quality gaps. All tools have descriptions (good), but most descriptions are generic and lack actionable context. Parameter descriptions are minimal or absent. No output schemas are documented. Error handling is present but returns unstructured error objects. Tool naming follows verb_noun convention (list_volumes, get_volume_info, search_text) which is correct. However, parameter documentation is sparse, e.g., search_text's 'query' param lacks format/constraint guidance. The convert_volume_to_epub_file tool mixes concerns (conversion + file I/O). No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Overall, this is a pre-alpha server with functional tool definitions but insufficient LLM-optimization for production use.
Analyze the file structure and format of a volume
Convert a Directmedia volume to EPUB format for e-book readers
Get the navigation tree/structure for a volume
Extract text content from a volume
Get detailed information about a specific volume
List all available Directmedia volumes/bände Returns a list of all volumes in the Digitale Bibliothek collection with metadata about each volume.
Search for text across volumes
No output schemas documented. Tools return lists or objects but LLMs cannot infer field names, types, or structure. E.g., list_volumes returns list[dict[str, Any]], what fields does each dict contain? search_text returns SearchResult objects but the schema is not visible in tool registration.
Parameter descriptions are minimal or missing. 'query' in search_text lacks format guidance (free text? regex? phrase search?). 'limit' defaults to 20 but no min/max bounds stated. 'start_pos' and 'length' in get_text_content lack units or constraints. LLMs cannot infer valid ranges.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications. set_library_path and convert_volume_to_epub_file are marked WRITE but lack destructiveHint annotation. Agents cannot distinguish safe reads from state-modifying calls.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2025-06-18+ | v2 |
Set the path to the Digitale Bibliothek collection
Error handling returns unstructured error dicts (e.g., {'error': 'Library not initialized...'}) instead of actionable recovery guidance. No error classification (retryable vs user-fixable vs fatal). LLMs receive raw errors with no next-step guidance.
Tool descriptions lack context on when to use each tool. E.g., get_volume_info vs list_volumes distinction is unclear. No dependency hints (e.g., 'Call list_volumes first to discover available volume IDs'). Agents must guess the discovery order.