MCP Server for ETH Library Zurich — Access 30M+ resources (books, maps, images, archives) via the Discovery API
The ETH Library MCP server demonstrates solid definition quality with complete JSON Schema validation, clear verb-noun naming conventions, and extensive parameter documentation. All 6 tools are properly registered with explicit schemas and descriptions. However, descriptions are somewhat verbose (exceeding the 10-1024 character baseline in places), and output schemas lack explicit documentation of what fields are returned. Error handling is present but could be more prescriptive about recovery steps. Tool naming is consistently strong (search_*, get_*, list_*) and parameter constraints use proper enums and bounds.
Rufen Sie detaillierte Metadaten für eine bestimmte Ressource ab.
Listet bekannte Archive in der ETH-Bibliothek auf.
Listet alle verfügbaren Ressourcentypen auf.
Suchen Sie nach Ressourcen nach Ersteller (Autor, Künstler, Verlag).
Suchen Sie nach Ressourcen nach Thema oder Sacherschließung.
Suchen Sie nach Ressourcen in der ETH-Bibliothek. Unterstützt Filter nach Ressourcentyp, Sprache, Open Access und Sortierung.
Output schemas not explicitly documented in tool definitions. The tools call _format_resource_summary() and _format_resource_detail() (visible in formatting.py imports), but the actual structure of returned fields is not visible in the tool registration itself. LLMs cannot plan downstream operations without knowing what fields will be present in responses.
Tool descriptions are verbose and exceed the practical optimum (194 chars baseline; examples here reach 250-350 chars). The search_resources description includes detailed format specifications and operator examples that would be better moved to parameter descriptions or inline help. Verbose descriptions waste token budget during LLM selection reasoning.
Error handling is present (ToolError imports and _handle_error visible in imports) but the tool definitions themselves show no explicit error response documentation. LLMs need to know: what errors are possible? What should I do if the API returns a 404 or rate limit? Are errors retryable?
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 71 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
list_resource_types and list_archives return no parameters, but their response structure is undocumented. A list_ tool should ideally indicate what fields each item in the list contains. Without this, an LLM cannot confidently use the returned data.