FastMCP 3.2 xkcd server — official JSON API only (current / by number / random), no HTML scraping.
xkcd-mcp has 6 tools with clear, action-oriented names (xkcd_latest, xkcd_get, xkcd_search, xkcd_random, show_comic_prefab_card, xkcd_help). All tools have descriptions (10 - 200 chars, within baseline 10 - 1024 range). Input schemas are present and typed for most tools. However, parameter descriptions are sparse or missing entirely. xkcd_latest and xkcd_random have empty input objects with no documentation. xkcd_get's 'comic_number' param lacks guidance on valid ranges or error cases. xkcd_search's 'query' param has minimal description. Output schemas are not documented, LLMs cannot predict the structure of returned comic objects. Error handling is basic (generic 'Unexpected error' messages). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Composition is sound: tools are single-purpose and chainable (e.g., xkcd_search returns comic numbers that xkcd_get can fetch). Naming follows verb_noun convention well.
Show a rich prefab card for an xkcd comic. Fetches random if no number given. This tool renders an interactive UI in the chat. Prefer it over text output when displaying data from other xkcd-mcp tools.
Fetch a specific xkcd comic by its number.
Get help and usage information for xkcd-mcp tools and configuration.
Fetch the latest comic from xkcd.com.
Fetch a random comic from the entire xkcd collection.
Search for xkcd comics by topic (e.g., 'aliens', 'global warming'). Uses explainxkcd semantic indexing to find relevant comic numbers.
Output schemas not documented. LLMs cannot predict the structure of comic objects returned by xkcd_latest, xkcd_get, xkcd_search, xkcd_random, or show_comic_prefab_card. Responses include 'num', 'title', 'img', 'alt', 'xkcd_url', 'explainxkcd_url' but this is inferred from code, not declared in tool definitions.
Parameter descriptions missing or minimal. xkcd_latest and xkcd_random have empty input schemas with no guidance. xkcd_get's 'comic_number' lacks range documentation (valid 1 - N?). xkcd_search's 'query' param has no guidance on format, length, or example queries.
No tool annotations despite all tools being read-only. Missing readOnlyHint annotations would help LLMs understand these tools are safe to call without side effects and can be retried.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2025-06-18+ | v2 |
Error messages are generic ('Unexpected error: {e}') and do not guide recovery. When xkcd_get fails with an invalid comic_number, the LLM receives no hint to try xkcd_search or xkcd_latest instead.
show_comic_prefab_card parameter 'comic_number' is optional but lacks guidance on behavior when omitted. Description says 'fetches random if not provided' but does not clarify this is the only fallback or if there are other defaults.