pdf-toolkit-mcp
The standout feature is what most users actually want — turn a Markdown document into a professional PDF with one tool call. No design software, no templates, no friction.
Install
claude mcp add pdf-toolkit -- npx -y @aryanbv/pdf-toolkit-mcpnpx -y @aryanbv/pdf-toolkit-mcpThe Challenge
Most PDF tools expect a designer's workflow: open Acrobat or InDesign, lay out a document, export. For AI agents and developers who just need a PDF of a Markdown report, an invoice for a client, or a filled-in form, that workflow is overkill. The existing PDF libraries are either Python-only (closed to Node and TypeScript agents), require Docker or API keys (blocking local-first agents), or handle creation and manipulation in two different ecosystems that don't talk to each other. The result is that a simple prompt like 'turn this Markdown into a PDF with page numbers' typically becomes a multi-step manual pipeline.
The Approach
pdf-toolkit-mcp is a single TypeScript MCP server installable via npx -y @aryanbv/pdf-toolkit-mcp — no config files, no API keys, no Docker, no network calls. Internally it uses a dual-engine architecture: pdfmake for rich document creation (Markdown-to-PDF with headings, tables, lists, code blocks, page numbers; templates for invoice/report/letter), @pdfme/pdf-lib for manipulation of existing PDFs (merge, split, rotate, watermark, forms, image embedding), and unpdf for text extraction and metadata. 16 tools across six categories (create, read, modify, enhance, forms, security), three MCP prompts to guide usage, and security hardening from day one (path validation, page caps, prototype-pollution guards). 51 tests run on CI and gate every release.
The Impact
Published to npm as @aryanbv/pdf-toolkit-mcp and listed on the official MCP Registry as io.github.AryanBV/pdf-toolkit-mcp — a discoverability bar that requires production-grade packaging. Runs in every major MCP client (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) with a single line of config. This was the first project in the trilogy: it taught me how MCP servers work, and running into the limits of library-wrapper PDF editing is exactly what started me down the path to pdf-edit-engine.
Tech Stack
pdfmake
Rich document creation from structured data — the Markdown-to-PDF pipeline, tables with styling, templates for invoice/report/letter, and page numbers/headers/footers.
@pdfme/pdf-lib
Fork of pdf-lib used for modifying existing PDFs — merge, split, rotate, watermark, form filling, image embedding. Pairs with pdfmake to cover both create-from-scratch and edit-existing workflows.
unpdf
Lightweight text and metadata extraction — zero external dependencies, matching the 'works offline' constraint that lets the server run in any MCP client without setup.
Model Context Protocol SDK
Official @modelcontextprotocol/sdk for tool registration plus the three built-in prompts. Published via the MCP Registry for discoverability.