MCP server for IMSLP, the Petrucci Music Library. Read works, scores and recordings. No API key required.
The server defines 7 tools with consistent naming patterns (verb_noun: search_works, search_people, get_work, list_work_files, etc.), which is good. All tools have basic descriptions and input schemas are present with type definitions. However, descriptions are quite short (typically 12-20 characters), falling below the 50-200 character optimum for LLM selection guidance. Parameter descriptions are minimal and lack important details like constraints, format expectations, or dependency hints. Output schemas are not explicitly documented in the visible code, tool implementations reference output shapes but these are not exported for agent visibility. Error handling is minimal with no recovery guidance. The schema definitions use proper JSON types (string, number) but lack constraints (no enums, no min/max ranges, no patterns). This is a competent but baseline implementation.
Browse a category
Read a person
Read a work
Read the works of a person
Read the editions of a work
Search the people
Search the works
Descriptions are too short (12-30 chars), below the 50-200 char optimum. LLMs cannot infer WHEN to use each tool or what distinguishes search_works from list_work_files. 'Search the works' does not explain use cases or prerequisites.
Parameter descriptions are missing or trivial. 'query' has description 'Search query' (13 chars), does not explain format, length limits, or examples. 'limit' and 'offset' lack descriptions entirely in some tools.
No numeric constraints on pagination parameters. 'limit' accepts any number with no min/max documented. An LLM could request limit=999999 or limit=-1. Rubric requires 'Specify minimum and maximum for numeric parameters.'
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2025-06-18+ | v2 |
Output schemas are not visible in tool definitions. Tools reference 'outputShape' objects (e.g., getWorkOutputShape, searchWorksOutputShape) but these are not exported or documented in the MCP tool registration. Rubric requires: 'Document the output schema. LLMs need to know what fields to expect.'
No error recovery guidance. Tools likely return HTTP errors or connection failures, but descriptions do not indicate what to do if a search returns no results or a page does not exist. Rubric: 'Error responses must tell the LLM what to do next.'
Parameter naming ambiguity: 'page' in get_work and 'category' in list_person_works and get_person are opaque identifiers. Do they accept human-readable names (e.g., 'Category:Chopin') or internal IDs? Rubric: 'Accept human-friendly identifiers (email, username) alongside system IDs.'
No composition documentation. What IDs do search_works return that list_work_files can accept? What does get_work return that enables calling list_work_files? Rubric: 'Ensure tool A's output contains the IDs and references tool B needs.'