Z39.50 Library System MCP Server - Provides fast, efficient library search across multiple Z39.50 systems.
Server has 6 tools with basic descriptions and parameter schemas, but significant gaps limit production readiness. All tools are READ_ONLY and well-intentioned, but descriptions lack LLM-optimization guidance (e.g., 'when to use this vs similar tools'), parameter descriptions are minimal, and output schemas are entirely undocumented. No error handling guidance, no recovery paths, and no tool annotations. Naming is verb-forward (search_, check_, get_, browse_, list_, export_) which is good, but parameter descriptions are sparse and don't explain constraints or formats.
Browse available subjects/categories in a library.
Check if a book is available across multiple libraries.
Export a MARC bibliographic record in multiple formats.
Get complete bibliographic details for a specific book from a library.
List all available library systems.
Search multiple library systems in parallel. Use this tool to search for books across different library catalogs (Library of Congress, OCLC WorldCat, academic library networks, etc.).
No output schemas documented. Tools return strings (JSON) but LLMs cannot infer field structure, forcing manual parsing and increasing hallucination risk.
Parameter descriptions lack constraint details. 'query_type' lists options in description but should use enum. 'max_results' has no min/max bounds. 'export_format' lacks enum constraint.
No error handling guidance. Tools return strings but no documentation of error format, recovery paths, or what to do if a library is unreachable or ISBN not found.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
Tool descriptions lack 'when to use' guidance. search_libraries and browse_subjects both discover books but distinction is unclear. No guidance on which to call first or when each is appropriate.
No tool annotations (readOnlyHint, idempotentHint). All tools are READ_ONLY but this is not declared in schema, forcing LLMs to infer safety from descriptions.