MCP server for theses.cz. Search Czech university theses, metadata and full texts.
Server has 4 tools with basic descriptions and some parameter documentation, but significant gaps in schema completeness, parameter descriptions, and error handling. Tool names are action-oriented (search, detail, fulltext, login) which is good. However, parameter descriptions are minimal or missing for critical fields. Output schemas are not formally documented. Error handling is absent, no guidance on retries, user-fixable errors, or recovery paths. The search tool has a detailed description (>200 chars) but others are terse. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles.
Read a thesis record: title, authors, abstract, keywords, and links to the files.
Resolve the files of a thesis: download links, access restrictions, and archive URLs.
Log in to a school's repository and save the session for later use.
Search theses.cz (Czech national thesis registry) — full text and metadata. Returns two kinds of hits: kind="record" — a thesis record; `url` points to the detail page (see `detail`) kind="fulltext" — a match inside the thesis PDF; `pdf_url` links to the file Neither URL is checked here, because checking would cost one request per hit. `pdf_url` in particular can point at a file the registry will not serve. Call `fulltext` to get links that were confirmed by reading the first bytes.
Parameter descriptions missing or trivial. 'code' param in detail/fulltext lacks format guidance (is it a URL slug? numeric ID? UUID?). 'host' in login has no validation hints (domain format, required TLD?). LLMs cannot infer valid input formats.
Output schemas not documented. search() returns dict with 'kind', 'title', 'author', 'meta', 'snippet', 'pdf_url', 'url', but no formal schema. detail() and fulltext() return types are completely undocumented. LLMs cannot plan downstream tool calls without knowing response structure.
No error handling or recovery guidance. Tools can fail (network timeout, 404 thesis not found, login CAPTCHA, rate limit) but provide no actionable error messages. LLMs have no guidance on retry strategy, fallback tools, or user-fixable issues.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Tool annotations missing. login() is destructive (modifies session state) and search/detail/fulltext are read-only, but no readOnlyHint or destructiveHint annotations present. Agents cannot distinguish safe-to-retry tools from stateful ones.
Pagination not fully specified. search() accepts 'limit' but does not document max value enforcement (code shows min(limit, 50)) or return total count. Agents cannot reliably paginate large result sets.