MCP server for searching library catalogs via the SRU (Search/Retrieve via URL) protocol
Strong tool naming (verb_noun pattern), comprehensive parameter descriptions, and good schema definitions. All 6 tools have clear descriptions (100-300 chars) and properly typed input schemas with constraints. Tool annotations (readOnlyHint, openWorldHint) are present. However, output schemas are not formally documented, responses are markdown strings without structured field definitions. Error handling returns plain text error messages without recovery guidance or categorization. Parameter descriptions could be more explicit about format constraints (e.g., CQL syntax examples, ISBN validation rules).
Get capabilities of an SRU server: title, supported record schemas, server defaults, and a summary of available indexes. Use this before searching to discover what indexes and schemas the server supports. Follow up with sru_list_indexes for a detailed index table.
List all search indexes available on an SRU server. Returns a markdown table with context set, index name, and title. Use filter_text to narrow results (e.g., 'title', 'author', 'subject'). Index names from this table can be used directly in CQL queries passed to sru_search (e.g., 'dc.title = "Hamlet"').
List all known SRU library catalog servers. Returns a table with ID, name, URL, default schema, and notes for each server. Pass the ID or URL to other sru_* tools.
Browse index terms on an SRU server. Scanning is useful for discovering what terms are indexed and how many records match each term, without retrieving full records. Returns a markdown table with terms and record counts.
Execute a raw CQL query against an SRU server and return matching records. Returns a markdown summary of results including title, author, publisher, year, ISBN, subjects, and language for each record. For pagination, increment start_record by max_records on each call. The response includes the total number of matching records.
Output schemas not formally documented. All tools return markdown strings; no structured field definitions provided for LLM parsing downstream results.
Error handling returns plain text error messages without recovery guidance. Errors like 'SRUError' are wrapped in markdown but do not indicate whether the error is retryable, user-fixable, or fatal.
Parameter descriptions lack explicit format constraints. CQL query syntax, ISBN format (10 vs 13 digits), and record schema options are mentioned but not formally constrained (no enums, patterns, or validation rules).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Search an SRU library catalog by common bibliographic fields. Provide any combination of title, author, isbn, subject, publisher, year, or keyword. Multiple fields are AND-combined. At least one field is required. Returns a markdown summary of matching records. Example using the Library of Congress: server = "loc" title = "Moby Dick" author = "Melville"
sru_search_books has 8 optional parameters with no validation that at least one is provided. Description states 'At least one field is required' but no schema constraint enforces this.
No pagination metadata returned. sru_search and sru_search_books accept start_record and max_records but responses do not include total_count, has_more, or next_cursor for LLM-driven pagination.