MCP server for rendering PDFs, HTML, URLs, and images as screenshots
render-mcp demonstrates solid definition quality with consistent tool naming, descriptions, and input schemas. All 6 tools follow verb_noun naming conventions (render_*). Every tool has a non-empty description (range: 87 - 179 chars, within the 10 - 1024 baseline). Input schemas are properly defined using Zod with type constraints and descriptions for all parameters. However, output schemas are not documented in the source code, and error handling guidance is absent, typical gaps that prevent this from reaching the 80+ range. The render_pdf_smart tool is notably sophisticated, offering multiple modes (hybrid/render/text) with clear descriptions of the token-efficiency trade-offs. Tool annotations (readOnlyHint, openWorldHint) are applied appropriately to all tools, showing good attention to agentic patterns.
Render HTML content or an HTML file as a PNG screenshot using a headless browser.
Read an image file and return it as base64. Supports PNG, JPEG, GIF, WebP, SVG.
Render a PDF page as a PNG image using pdftoppm. No browser needed.
Smart PDF rendering: extracts text from prose pages and renders only pages with figures/diagrams as images. Far more token-efficient than rendering every page. Returns interleaved text and image content blocks.
Render an SVG string or file as a PNG image using resvg. No browser needed.
Navigate to a URL and return a PNG screenshot.
Output schemas are not documented. Tool handlers (in src/handlers/) are not shown in the provided code, so it is unclear what fields the tools return. The LLM cannot infer return types and must guess at downstream field availability, risking broken tool chains.
Error handling lacks recovery guidance. No error responses are shown in the source code. Tools calling external services (pdftoppm, Playwright, resvg) may fail (missing files, network timeouts, invalid input), but there is no visible error classification or next-step guidance for the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 59 | - | v1 |
File path handling is not validated in visible schemas. Tools like render_image, render_pdf, render_html, and render_svg accept 'path' parameters as plain strings with no documented constraints (e.g., no mention of absolute vs relative paths, no stated validation against path traversal, no guidance on directory sandboxing).
render_html and render_svg accept optional 'html'/'svg' string OR optional 'path' file parameter, but descriptions do not clarify mutual exclusivity or error behavior when both are missing.
No pagination or result limiting documented for tools that may return large outputs (e.g., render_pdf_smart with many pages). If a 500-page PDF is processed in hybrid mode with many figures, the context window may be exhausted.