Skip to content
LiveTypeScript · Node.js 18 · MCP SDK · pdfmake · @pdfme/pdf-lib · unpdf

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.

~ $ pdf-toolkit-mcp
$ npx -y @aryanbv/pdf-toolkit-mcp
[mcp] pdf-toolkit ready · 16 tools
> pdf_create_from_markdown {
"markdown": "# Q1 2026 Review\n..."
}
q1-review.pdf · 3 pages · 47 KB

Install

Claude Code
claude mcp add pdf-toolkit -- npx -y @aryanbv/pdf-toolkit-mcp
npm
npx -y @aryanbv/pdf-toolkit-mcp

The 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.