# AryanBV/pdf-toolkit-mcp [Health: Active]

**Category:** 🛠️ Other Tools and Integrations  
**Repository:** https://github.com/AryanBV/pdf-toolkit-mcp  
**GitHub Stars:** 9  
**npm Downloads (last month):** 575  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/aryanbv-pdf-toolkit-mcp

## Description
Create PDFs from Markdown with tables and formatting, fill forms, merge, split, encrypt, add QR codes. 16 tools, zero-config, TypeScript-native.

## Tools
Capabilities this server exposes over MCP:

- **pdf_extract_text** — Extract text content from a PDF file. Returns first 10 pages by default to avoid exceeding LLM context limits. Use the 'pages' parameter for specific pages.
- **pdf_get_metadata** — Get metadata from a PDF file including title, author, subject, page count, creation/modification dates, and producer information.
- **pdf_get_form_fields** — List all form fields in a PDF with their names, types, current values, and required status. Returns hasForm: false for PDFs without forms.
- **pdf_to_markdown** — Convert a PDF to clean, reading-order Markdown for LLM consumption: reconstructs up to 2 content columns (plus full-width title/footer bands), infers headings from font size, and detects bullet/numbered lists. Pages with 3 or more columns fall back to single-column reading order. Tables are emitted as plain reading-order text, NOT reconstructed as Markdown tables. Best on clean, digital (text-based) PDFs; degrades on scanned/image-only PDFs (use pdf_render_pages for those) and very complex layouts. Returns the first 10 pages by default.
- **pdf_search** — Search text across a PDF and return matches with a short surrounding snippet and the page number. The query is matched as a literal substring (case-insensitive by default). Searches all pages unless a range is given.
- **pdf_merge** — Merge multiple PDF files into one. AcroForm fields are preserved; fields whose names collide across inputs are auto-renamed (namespaced by source). Set flatten:true to bake field values into static content.
- **pdf_split** — Extract specific pages from a PDF into a new file. AcroForm fields on the extracted pages are preserved; fields on omitted pages are dropped. Set flatten:true to bake field values into static content.
- **pdf_rotate_pages** — Rotate pages in a PDF by 90, 180, or 270 degrees. Rotation is additive to any existing rotation. Rotates all pages if no page range is specified.
- **pdf_encrypt** — Encrypt a PDF with AES-256 password protection. Requires a user password to open. Owner password controls editing permissions (defaults to the user password).
- **pdf_compare** — Compare two PDFs page by page (by absolute page index) and report text differences. Returns identical:true when text matches. Diffs content-stream-order text (not visual reading order), so it is best for same-layout documents; reflowed or multi-column PDFs produce noisy diffs. Inserting/deleting a page shifts all later pages and reports them as changed. Large diffs are trimmed (truncated:true) to fit the response limit.
- **pdf_add_page_numbers** — Add page numbers to a PDF. Supports configurable position, format, starting number, and font size.
- **pdf_embed_qr_code** — Embed a QR code or barcode into a specific page of a PDF at given coordinates. Supports qrcode, code128, datamatrix, ean13, pdf417, and azteccode.
- **pdf_reorder_pages** — Reorder pages in a PDF. Specify the new page order as a comma-separated string (e.g. '3,1,2'). Duplicates are allowed. AcroForm fields are preserved. Set flatten:true to bake field values into static content.
- **pdf_delete_pages** — Delete specific pages from a PDF, keeping the rest in their original order. AcroForm fields on the remaining pages are preserved. Set flatten:true to bake field values into static content. Cannot delete every page.
- **pdf_create** — Create a new PDF from text content with automatic line wrapping and page overflow. Supports A4, Letter, and Legal page sizes. Provide fontPath for non-Latin text (Arabic, CJK, etc.).
- **pdf_fill_form** — Fill form fields in a PDF. Supports text, checkbox, dropdown, radio, and list-box (multi-select) fields. Provide fontPath for non-Latin text (Arabic, CJK, etc.).
- **pdf_add_watermark** — Add a text watermark to PDF pages. Watermark is centered and rotated diagonally by default. Applies to all pages if no page range is specified.
- **pdf_embed_image** — Embed a PNG or JPEG image into a specific page of a PDF. Supports custom positioning and optional scaling with aspect ratio preservation.
- **pdf_create_from_markdown** — Create a rich, high-fidelity PDF from Markdown (CommonMark + GFM). Supports headings, bold/italic, links, ordered/bullet lists, tables, fenced code blocks, blockquotes, and horizontal rules.
- **pdf_create_from_template** — Create a polished PDF from a named template (invoice, report, or letter). Pass structured data matching the template's fields; data is validated against the template's schema.
- **pdf_flatten** — Flatten a PDF's form fields, baking their current values into the page content and removing interactivity. Form-less PDFs are copied unchanged.
- **pdf_render_pages** — Render PDF pages to images so a vision-capable client can read scanned or image-only PDFs. Writes PNG/JPEG files and returns their paths; set inline:true to return image blocks the model can see directly.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "pdf-toolkit-mcp": {
    "command": "npx",
    "args": ["-y","@aryanbv/pdf-toolkit-mcp"]
  }
}
```

## Documentation

## What AryanBV/pdf-toolkit-mcp MCP server does

AryanBV/pdf-toolkit-mcp MCP server provides 22 tools for working with PDF files through an MCP client. Its capabilities cover four broad workflows: inspecting existing documents, changing their structure or content, generating new PDFs, and rendering pages for visual review.

For document inspection, the server can extract text, return metadata, list AcroForm fields, search for literal text matches, convert text-based PDFs to reading-order Markdown, and compare two PDFs page by page. The Markdown conversion can infer headings and detect lists, but it does not reconstruct tables as Markdown tables.

Creation tools support plain text, CommonMark and GFM Markdown, and three named templates: invoice, report, and letter. Other tools fill form fields, add watermarks or images, insert QR codes and barcodes, and add page numbers. Existing files can be merged, split, reordered, rotated, or have pages deleted. Form values can be flattened into static page content, and PDFs can be protected with AES-256 password encryption.

## How it works

The AryanBV/pdf-toolkit-mcp MCP server runs as a local stdio process. An MCP client starts the package with npx, then selects tools and supplies their arguments. Operations generally use input and output file paths, while read-oriented tools return extracted information in the MCP response. Rendering can either write PNG or JPEG files and return their paths, or return inline image blocks for a vision-capable client.

Most text extraction tools return the first 10 pages by default to limit response size. Page ranges or page lists can be supplied where supported. PDF transformations preserve AcroForm fields for merge, split, reorder, and delete operations; duplicate field names from merged inputs are automatically namespaced. Flattening removes field interactivity after baking current values into the page content.

## Setup and configuration

Install requirements are limited to Node.js 20 or newer and an MCP client that supports local server processes. No API key, configuration file, Docker container, compiler, or native dependency is required. The server is described as working on Windows, macOS, and Linux.

Run it directly with:

```bash
npx -y @aryanbv/pdf-toolkit-mcp
```

Claude Desktop, Cursor, and Windsurf can connect by adding a server entry that uses `npx` with `-y` and `@aryanbv/pdf-toolkit-mcp` as the package argument. Claude Code and VS Code Agent mode are also documented in the source material, but their configuration formats differ from the other clients.

## Tools and capabilities

The AryanBV/pdf-toolkit-mcp MCP server includes these practical operations:

- Extract text, metadata, form fields, reading-order Markdown, search matches, and page-by-page text differences.
- Create PDFs from text, Markdown, or invoice, report, and letter templates.
- Fill text, checkbox, dropdown, radio, and multi-select list-box fields.
- Merge, split, reorder, rotate, delete, flatten, and number pages.
- Add watermarks, PNG or JPEG images, QR codes, and supported barcodes.
- Render pages to PNG or JPEG for scanned or image-only documents.
- Encrypt PDFs with AES-256 using user and owner passwords.

Plain-text creation and form filling accept a font path for non-Latin text such as Arabic or CJK. QR and barcode insertion supports QR code, Code 128, Data Matrix, EAN-13, PDF417, and Aztec formats.

## Limitations and notes

PDF-to-Markdown works best with clean, digital, text-based documents. Scanned or image-only PDFs need `pdf_render_pages`, and complex layouts may not convert accurately. The converter handles up to two content columns plus full-width title or footer bands; documents with three or more columns fall back to single-column reading order.

PDF comparison uses absolute page indexes and content-stream text order rather than visual reading order. Reflowed or multi-column documents can therefore produce noisy differences, and inserting or deleting a page shifts subsequent comparisons. Large responses may be truncated. Off-page placements are rejected rather than silently clipped, and deleting every page is not allowed.

_Full upstream README: https://allmcps.com/mcp/aryanbv-pdf-toolkit-mcp/readme_

