Model Context Protocol server for CERN Document Server (CDS)
CDS MCP has well-structured tool definitions with complete JSON schemas and reasonable descriptions. All 6 tools have input schemas with typed parameters and descriptions. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool vs. alternatives. Parameter descriptions are minimal (e.g., 'Search query string (required)' lacks format/constraint details). Output schemas are not documented, LLMs cannot predict response structure. Error handling returns structured dicts but lacks recovery guidance. No tool annotations (readOnlyHint, destructiveHint). Tool composition is sound (single responsibility, clear naming), but descriptions average ~80 chars vs. production baseline of 194 chars.
Get detailed information about a specific CDS document
Get file information for a specific CDS document
Get a list of common CDS document types for filtering
Get a list of common CERN experiments for filtering
List available CDS collections to help users browse instead of search
Search CDS documents with various filters including experiment, document type, and date range
Output schemas not documented. LLMs cannot predict response structure or plan downstream calls. search_cds_documents returns 'returned_count', 'total_results', 'documents', 'search_parameters' but this is inferred from code, not declared in tool definition.
Descriptions lack LLM-optimized guidance. 'Get detailed information about a specific CDS document' (60 chars) does not explain WHEN to call this vs. search_cds_documents, what fields are returned, or prerequisites. Production baseline: 194 chars avg.
Parameter descriptions are minimal and lack constraints. 'Search query string (required)' does not specify format, length limits, or example patterns. 'Filter by experiment' does not explain that valid values are ATLAS, CMS, LHCb, ALICE, forcing LLM to guess or call get_cds_experiments first.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
No tool annotations. All tools are read-only but lack readOnlyHint annotation. This prevents agents from understanding which tools are safe to retry and which have side effects.
Error handling returns structured dicts but lacks recovery guidance. CDSClientError exceptions are caught and returned as {'error': str(e)} with no actionable next steps. E.g., 'Invalid MCP ID format' should suggest 'Call search_cds_documents first to get valid IDs.'