PDF Toolkit MCP
Create PDFs from Markdown, fill forms, merge, split, rotate, watermark, encrypt, extract text, and add QR codes. 16 tools, TypeScript-native.
PDF Toolkit MCP Server
MCP server for PDF manipulation — create from Markdown, fill forms, merge, split, encrypt, add QR codes. Zero-config, TypeScript-native.
Install
npx -y @aryanbv/pdf-toolkit-mcp
No config files, no API keys, no Docker. Works offline.
Create PDFs from Markdown
The standout feature — turn Markdown into professional PDFs:
"Create a PDF from this Markdown with page numbers"
# Quarterly Report
## Revenue
Revenue grew **23% year-over-year**, driven by enterprise expansion.
| Region | Q1 2025 | Q1 2026 | Growth |
|-----------|----------|----------|--------|
| Americas | $1.2M | $1.5M | +25% |
| EMEA | $800K | $960K | +20% |
| APAC | $400K | $520K | +30% |
## Key Wins
1. Signed 12 new enterprise contracts
2. Reduced churn to 3.1%
3. Launched self-serve tier
This produces a multi-page PDF with formatted headings, styled tables, numbered lists, bold/italic text, and page numbers — all from a single tool call.
Client Setup
Claude Desktop
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"pdf-toolkit": {
"command": "npx",
"args": ["-y", "@aryanbv/pdf-toolkit-mcp"]
}
}
}
Claude Code
claude mcp add pdf-toolkit -- npx -y @aryanbv/pdf-toolkit-mcp
Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"pdf-toolkit": {
"command": "npx",
"args": ["-y", "@aryanbv/pdf-toolkit-mcp"]
}
}
}
VS Code
VS Code uses
"servers", NOT"mcpServers". Copying the config from other clients will silently fail. Requires the GitHub Copilot extension with Agent mode enabled.
Add to .vscode/mcp.json:
{
"servers": {
"pdf-toolkit": {
"command": "npx",
"args": ["-y", "@aryanbv/pdf-toolkit-mcp"]
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"pdf-toolkit": {
"command": "npx",
"args": ["-y", "@aryanbv/pdf-toolkit-mcp"]
}
}
}
Tools
16 tools organized by category:
| Category | Tool | Description |
|---|---|---|
| Create | pdf_create | Create new PDF from text content |
pdf_create_from_markdown | Create rich PDF from Markdown (headings, tables, lists, code blocks) | |
pdf_create_from_template | Create PDF from template (invoice, report, letter) | |
| Read | pdf_extract_text | Extract text from PDF pages (first 10 by default) |
pdf_get_metadata | Get title, author, page count, creation date | |
pdf_get_form_fields | List form fields with names, types, and values | |
| Modify | pdf_merge | Merge multiple PDFs into one |
pdf_split | Extract page ranges into a new PDF | |
pdf_rotate_pages | Rotate pages by 90, 180, or 270 degrees | |
pdf_reorder_pages | Reorder pages in any order (supports duplication) | |
| Enhance | pdf_add_watermark | Add text watermark to pages |
pdf_add_page_numbers | Add page numbers (configurable position and format) | |
pdf_embed_image | Embed PNG or JPEG image into a page | |
| Forms | pdf_fill_form | Fill form fields (text, checkbox, dropdown, radio) |
| Security | pdf_encrypt | Password-protect with user/owner passwords |
pdf_embed_qr_code | Embed QR code or barcode (Code128, DataMatrix, EAN-13, PDF417, Aztec) |
Templates
Generate professional documents from structured data:
"Create an invoice for Acme Corp"
{
"templateName": "invoice",
"data": {
"companyName": "Your Company",
"clientName": "Acme Corp",
"invoiceNumber": "INV-001",
"invoiceDate": "2026-04-01",
"items": [
{ "description": "Web Development", "quantity": 40, "unitPrice": 150 },
{ "description": "Hosting (Annual)", "quantity": 1, "unitPrice": 299 }
],
"taxRate": 18,
"paymentTerms": "Net 30"
},
"outputPath": "/path/to/invoice.pdf"
}
Available templates: invoice, report, letter.
Encryption
"Encrypt report.pdf with password 'secure123'"
Applies RC4 128-bit encryption. Set separate user (open) and owner (edit) passwords for granular access control.
QR Codes & Barcodes
"Add a QR code linking to our website on page 1"
Supported types: QR Code, Code128, DataMatrix, EAN-13, PDF417, Aztec Code. Position and size are fully configurable.
Usage Examples
Just ask naturally:
- "Create a PDF from this Markdown report"
- "Generate an invoice for Client Corp — 10 hours consulting at $150/hr"
- "Merge january.pdf and february.pdf into q1-combined.pdf"
- "Extract text from pages 5-10 of thesis.pdf"
- "Fill the Name field with 'John Doe' in application.pdf"
- "Add a CONFIDENTIAL watermark to draft.pdf"
- "Encrypt financials.pdf with password 'budget2026'"
- "Add page numbers to presentation.pdf"
- "Embed a QR code with our URL on the cover page"
- "Reorder pages as 3,1,2 in report.pdf"
Known Limitations
- Merge/Split/Reorder: Form fields are not preserved. Visual content transfers, but interactive fields are lost.
- Text extraction: Returns PDF stream order, not visual reading order. Multi-column layouts may interleave.
- Extract text: Defaults to first 10 pages to avoid exceeding LLM context. Request specific pages for longer documents.
- Image embedding: Only JPEG and PNG formats are supported.
- Form filling: Non-Latin characters (Arabic, CJK, Devanagari) require providing a custom font file (.ttf/.otf).
- Encryption: Uses RC4 128-bit, not AES. Adequate for access control but not modern strong encryption.
- Markdown fonts: pdfmake uses Roboto only. Custom fonts are not yet supported for Markdown PDFs.
Tech Stack
Dual-engine architecture for maximum capability:
- pdfmake — Rich document creation (Markdown, templates, tables, headers/footers)
- @pdfme/pdf-lib — Existing PDF manipulation (merge, split, rotate, watermark, forms, images, QR codes)
- unpdf — Text extraction and metadata reading
Requirements
- Node.js >= 18
Development
npm install # Install dependencies
npm run build # Compile TypeScript
npm run test # Run all 51 tests
npm run inspect # Open MCP Inspector (requires Node >= 22.7.5)
See CLAUDE.md for architecture details and contribution guidelines.
License
MIT
Related Servers
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
MCP Ollama Agent
A TypeScript agent that integrates MCP servers with Ollama, allowing AI models to use various tools through a unified interface.
Liana-MCP
A natural language interface for cell-cell communication analysis using the Liana framework.
Binary Ninja
A Binary Ninja plugin, MCP server, and bridge that seamlessly integrates Binary Ninja with your favorite MCP client.
Allyson
AI-powered SVG animation generator that transforms static files into animated SVG components using the Allyson platform
Page Design Guide MCP Server
MCP server providing modern web design guidance, color psychology, typography, layout patterns, and UI best practices for AI assistants
Remote MCP Server (Authless)
An example of a remote MCP server deployable on Cloudflare Workers without authentication.
APIMatic MCP
APIMatic MCP Server is used to validate OpenAPI specifications using APIMatic. The server processes OpenAPI files and returns validation summaries by leveraging APIMatic’s API.
GoTRON MCP
About MCP server for TRON blockchain — connect AI agents to TRX, TRC20, smart contracts, staking & governance via GoTRON SDK
plugged.in MCP Proxy Server
A middleware that aggregates multiple Model Context Protocol (MCP) servers into a single unified interface.
UML-MCP-Server
Generate various UML diagrams from natural language or PlantUML code. Returns PlantUML code, image URLs, and saves diagrams locally.