Generate professional PDFs with full Unicode, emoji, and offline support for diverse document needs.
Create Simple Documents: Generate basic text PDFs quickly with titles and content for letters and notices
Build Advanced Layouts: Design complex documents with full layout control including text positioning, images, shapes (rectangles, circles, lines), colors, gradients, and custom page configurations
Generate Professional Resumes: Create formatted resumes from standard JSON Resume format with customizable styling for margins, spacing, fonts, and header alignment
Rich Text Styling: Apply extensive formatting with custom fonts, sizes, colors, alignment (left, center, right, justify), bold, italic, underline, strikethrough, character/word spacing, and line/paragraph gaps
Unicode & Emoji Support: Render full color emojis (😀 🎉 🚀) and international text (Chinese, Japanese, Korean, Arabic, Cyrillic) automatically
Work Offline: Operate without internet after initial installation with cached fonts and emoji resources
Security Features: Write PDFs to sandboxed directories with filename sanitization to prevent path traversal attacks
Hosted on GitHub as a repository for source code and issue tracking
Built using JavaScript/TypeScript and provides direct access to PDFKit's JavaScript API for advanced PDF generation capabilities
Runs on Node.js runtime environment and is distributed as a Node.js package
Published and distributed through npm package registry for easy installation and dependency management
Provides TypeScript interfaces and examples for type-safe PDF generation and content structuring
Provides full Unicode text support for international languages including CJK, Arabic, Cyrillic, Hebrew, Thai and other scripts in PDF generation
@mcp-z/mcp-pdf
MCP server for creative PDF generation with full emoji, Unicode, and offline support
Why This Exists
PDFs shouldn't be boring. This server gives AI agents the power to create professional documents and creative projects with full emoji (😀 🎉 🚀), Unicode (你好 مرحبا Привет), and direct PDFKit access.
From practical invoices and resumes to creative artwork—if it's a PDF, you can build it.
Features
Full Emoji & Unicode - Color emoji as inline images, complete international text support
Offline Ready - Works without internet after first install, perfect for local LLMs
Creative Freedom - Colors, shapes, positioning—build anything from invoices to art
Three Specialized Tools - Simple text, advanced layouts, or JSON Resume format
Zero Dependencies - Pure JavaScript, no brew install, no system configuration
Smart Context Management - Returns resource URIs instead of embedding PDFs in context
Installation
Or use directly:
Note: On first install, emoji font (~15MB) downloads automatically. After that, works completely offline.
Quick Start
Add to your claude_desktop_config.json:
Works Everywhere
Runs anywhere Node.js >=16 runs. No Python, no Cairo, no Homebrew—just npm install and go. Once installed, works completely offline with cached fonts.
How It Works
Resource URIs (No Context Bloat)
When you create a PDF, the server returns a resource URI instead of embedding the PDF content:
This keeps PDFs out of the LLM's context until explicitly needed. PDFs are only loaded when you specifically request them via their resource URI.
Security Model
This server writes PDFs to a sandboxed directory to prevent path traversal attacks:
Default location:
~/.mcp-pdf/Custom location: Set
PDF_STORAGE_DIRenvironment variableFilename sanitization: Blocks
..,/, and unsafe charactersNo path parameters: Tools accept only filenames, not full paths
Server isolation: Never writes outside its storage directory
All generated PDFs are written to the configured storage directory with sanitized filenames.
Storage Directory
PDFs are stored in ~/.mcp-pdf by default. This works everywhere - local, containers, remote servers.
Most users should just use the default. No configuration needed.
Where to Find This Server
Published on multiple MCP registries and package managers:
npm -
@mcp-z/mcp-pdfMCP Official Registry -
io.github.kmalakoff/mcp-pdfSmithery - One-click install via Smithery CLI
Awesome MCP Servers - Community curated list (pending approval)
Cline Marketplace - Built-in to Cline IDE (coming soon)
GitHub Repository - Source code and issues
What You Can Create
Professional - Resumes, invoices, reports, certificates
Creative - Flyers, posters, artistic documents, themed designs
Practical - Letters, notices, forms, documentation
Experimental - Bob Ross paintings, space themes, progressive effects
Anything - If it's a PDF, you can build it
Examples
1. Simple Text Document
Start simple with plain text:
2. Styled Document with Colors
Add visual style with colors and formatting:
3. Certificate with Shapes
Combine shapes and text for visual impact:
4. Professional Resume
Handle complex structured data with JSON Resume:
Creative Possibilities
Beyond standard documents, this tool creates artistic PDFs through layered shapes, gradients, and effects. Examples include Bob Ross-style landscape paintings, space-themed documents with stars and cosmic effects, and visually striking community notices.
The create-pdf tool provides direct access to PDFKit's capabilities for combining shapes, colors, positioning, and text into virtually anything.
Available Tools
generate-resume-pdf
Generate professional resumes from JSON Resume format.
Parameters:
filename(string, optional) - Filename for the PDF (defaults to "resume.pdf")resume(object, required) - JSON Resume schema
Resume Schema Sections:
basics- Name, contact, summary, locationwork- Work experience with highlightseducation- Degrees and institutionsprojects- Personal/professional projectsskills- Skills grouped by categoryawards,certificates,languages,volunteer,publications,interests,references
See the resume example above for structure.
create-simple-pdf
Create basic text PDFs quickly.
Parameters:
filename(string, optional) - Filename for the PDF (defaults to "document.pdf")text(string, required) - Text contenttitle(string, optional) - Document metadata title
create-pdf
Advanced PDF creation with full layout control.
Parameters:
filename(string, optional) - Filename for the PDF (defaults to "document.pdf")title(string, optional) - Document metadataauthor(string, optional) - Document metadatapageSetup(object, optional) - Page configurationcontent(array, required) - Content items
Page Setup:
Content Types:
Text & Headings:
Shapes:
Images & Pages:
Emoji & Unicode Support
Color Emoji - True color emoji render as inline PNG images. Emoji like 😀 🎉 🚀 👋 appear in full color. The emoji font (NotoColorEmoji.ttf) downloads automatically on install.
Unicode - Complete international text support including Chinese (你好), Japanese (こんにちは), Korean (안녕하세요), Arabic (مرحبا), Cyrillic (Привет), Hebrew, Thai, Greek (Ξ Δ Ω), and geometric symbols (△ ○ ◆).
Resources
PDFKit Documentation - Full PDFKit API reference
JSON Resume Schema - Resume format documentation
JSON Resume Editor - Online resume builder
Requirements
Node.js >= 16
Contributing
Interested in contributing? See CONTRIBUTING.md for development setup, testing, and release workflow.
License
MIT
local-only server
The server can only run on the client's local machine because it depends on local resources.
Enables creative PDF generation with full design control including colors, shapes, emoji, and Unicode support. Supports everything from simple documents to artistic masterpieces using PDFKit's powerful API.