MCP server exposing mdview rendering tools to Claude / other AI assistants.
mdview MCP has 5 well-defined tools with complete input schemas and clear descriptions. All tools are read-only and low-risk. Naming follows verb_noun convention (render, export, convert, list, extract). Descriptions are substantive (100-200 chars), explaining what each tool does and when to use it. Input schemas include proper types, enums, and defaults. However, output schemas are not documented, LLMs cannot see what fields to expect from responses. Parameter descriptions are present but could be more prescriptive about constraints. No error handling guidance or recovery paths documented. Tool composition is sound (each does one thing), but lack of output documentation limits downstream chaining.
Convert an existing .mdv.html between Minimal / Progressive / Standalone forms while preserving the embedded markdown source.
Serialize Markdown into a self-rendering .mdv.html file (Minimal / Progressive / Standalone form). Progressive form is recommended for general sharing.
Strip Markdown formatting and return plain text + heading tree. Useful when an LLM wants a token-efficient summary input or for indexing.
List built-in mdview themes.
Render Markdown to HTML using the mdview engine. Returns the rendered HTML body, parsed metadata (front matter merged with theme defaults), and the heading tree.
Output schemas not documented. LLMs cannot see what fields render(), export_mdv_html(), convert_form(), or extract_text() return, preventing downstream tool chaining and forcing agents to guess response structure.
No error handling guidance. Tools lack descriptions of failure modes, recovery steps, or actionable error messages. E.g., what happens if markdown is malformed? If an invalid theme is requested? Agents have no recovery path.
Parameter 'extensions' in render() lacks constraint documentation. Description says 'Built-in: mdv:color, mdv:callout, mdv:math, mdv:mermaid' but does not state whether custom extensions are allowed, what happens if an invalid extension is passed, or if the array is order-sensitive.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
convert_form() parameter 'html' lacks format guidance. Description says 'Existing .mdv.html content' but does not specify: must it be valid HTML? Must it contain embedded markdown? What happens if the markdown source is missing or corrupted?
list_themes() has empty input schema (no properties). Description is brief (70 chars). While the tool is simple, a slightly richer description (e.g., 'Returns a list of available mdview themes with their IDs and descriptions') would improve LLM selection confidence.