MCP server for generating slides using mkslides
The server has a single tool 'generate_slides' with reasonably good naming, comprehensive description, and well-defined input schema. The tool name correctly starts with an action verb (generate). The description is detailed (380+ chars) and explains WHAT the tool does, WHEN to use it, and what it returns. All input parameters have type definitions and descriptions. However, the return type is documented only as a string in the description (not as a structured schema), and there is no documented output structure for error cases. The tool lacks error handling guidance for LLMs (e.g., what to do if mkslides build fails). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present despite the tool being idempotent (multiple calls with same input should produce same result). The parameter 'revealjs_options' is typed as 'object' without describing its internal structure or constraints.
Generates HTML presentation slides from Markdown content using the mkslides library. This tool converts raw Markdown text into a complete HTML presentation using Reveal.js and serves it via a local HTTP server.
Return type not formally documented in schema. Tool returns a string URL, but LLMs need to know the exact format (http://localhost:8080/latest/index.html). Document return type as structured schema with url and status fields.
Error handling lacks recovery guidance. When mkslides fails (RuntimeError raised), the error message is minimal. Provide actionable error messages: 'Build failed: invalid markdown syntax. Check slide separators (---)' or 'theme not found: available themes are black, white, league...'
Parameter 'revealjs_options' is typed as generic 'object' with no schema for its internal structure. Document allowed keys and value types (e.g., transition: string, controls: boolean, progress: boolean). This forces LLMs to guess valid Reveal.js options.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 53 | - | v1 |
No tool annotations present. The tool is idempotent (multiple calls with identical inputs yield identical slides) and has write side effects (creates files, starts HTTP server). Add idempotentHint and destructiveHint annotations to guide agent behavior.
No pagination or limits on output. While this specific tool only generates one HTML file, the implementation cleans up old output and overwrites 'latest'. Document this behavior explicitly and clarify that repeated calls will overwrite previous slides.