Pdf Toolkit Mcp

Created By
AryanBV2 months ago
MCP server for PDF manipulation — create PDFs from Markdown with tables and formatting, fill forms, merge, split, encrypt, add QR codes. 16 tools, zero external binaries, TypeScript-native. Install: npx -y @aryanbv/pdf-toolkit-mcp
Overview

PDF Toolkit MCP Server

MCP server for PDF manipulation — create from Markdown, fill forms, merge, split, encrypt, add QR codes. Zero-config, TypeScript-native.

npm version license node tools

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:

CategoryToolDescription
Createpdf_createCreate new PDF from text content
pdf_create_from_markdownCreate rich PDF from Markdown (headings, tables, lists, code blocks)
pdf_create_from_templateCreate PDF from template (invoice, report, letter)
Readpdf_extract_textExtract text from PDF pages (first 10 by default)
pdf_get_metadataGet title, author, page count, creation date
pdf_get_form_fieldsList form fields with names, types, and values
Modifypdf_mergeMerge multiple PDFs into one
pdf_splitExtract page ranges into a new PDF
pdf_rotate_pagesRotate pages by 90, 180, or 270 degrees
pdf_reorder_pagesReorder pages in any order (supports duplication)
Enhancepdf_add_watermarkAdd text watermark to pages
pdf_add_page_numbersAdd page numbers (configurable position and format)
pdf_embed_imageEmbed PNG or JPEG image into a page
Formspdf_fill_formFill form fields (text, checkbox, dropdown, radio)
Securitypdf_encryptPassword-protect with user/owner passwords
pdf_embed_qr_codeEmbed 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

Server Config

{
  "mcpServers": {
    "pdf-toolkit": {
      "command": "npx",
      "args": [
        "-y",
        "@aryanbv/pdf-toolkit-mcp"
      ]
    }
  }
}
Project Info
Created At
2 months ago
Updated At
2 months ago
Author Name
AryanBV
Star
-
Language
-
License
-
Category

Recommend Servers

View All
AI Work Market — USDC settlement rails for AI labor on Base Mainnet)
@Dario (DME)

AI Work Market is a USDC escrow protocol on Base Mainnet, designed for autonomous AI agents to find work, post jobs, and settle payments without humans in the loop. This MCP server exposes 10 tools: **Escrow lifecycle** - `create_intent_quote` — get calldata + gas estimate for funding a new escrow intent - `submit_proof_quote` — get calldata for the seller to submit a proof URI - `release_funds_quote` — get calldata for the buyer to release payment (or claim/refund) **x402 single-call binding** - `x402_consume` — replaces the 5-step x402 flow with one HMAC-signed POST that returns a delivery URL **Onboarding & discovery** - `agent_onboard` — generate a signed agent card with marketplace attestation - `agent_search` — tf-idf search over the live agent catalog - `agent_reputation` — server-side reputation from on-chain Released/Refunded/Disputed events **Live state** - `system_status` — live on-chain state (nextIntentId, accumulatedFees, contract balance, owner) - `escrow_rules` — contract semantics, lifecycle, call guides, failure modes - `events_subscribe` — SSE stream of new on-chain intent events All endpoints are serverless (Vercel) and return their schema on GET. No browser, no wallet UI required for an agent to integrate. The protocol takes a 1% commission on every settlement; the rest goes to the seller. The full AgentCard is at `/.well-known/agent-card.json` (A2A-compatible). The OpenAPI 3.0.3 spec is at `/.well-known/openapi.json` with `components.securitySchemes` (none, hmacX402). `robots.txt` allows GPTBot, ClaudeBot, anthropic-ai, PerplexityBot, Google-Extended, Applebot-Extended, CCBot, Amazonbot.

7 hours ago
Bring your real authenticated browser session to AI coding agents. Local-first MCP server + Chrome MV3 extension. No cloud. No telemetry.
@Cubenest

peek records the user's actual logged-in browser (DOM via rrweb, console events, network metadata, optional response bodies via opt-in Deep capture) through a Chrome MV3 extension. The extension ships events through a native-messaging stdio bridge to a local MCP server (peek-mcp), which persists them to a SQLite database at ~/.peek/sessions.db. AI coding agents (Claude Code, Cursor, Cline, Windsurf) read sessions from the database via 10 MCP tools: Tool What it does list_recent_sessions List recently recorded sessions (id, origin, ts, event count). get_session_summary LLM-readable narrative summary of a session. get_session_console_errors Console errors recorded in a session. get_session_network_errors Failed/notable network requests in a session. get_user_action_before_error Last N user actions before a console error. generate_playwright_repro Generate a runnable Playwright test from a session. get_dom_snapshot Reconstruct the DOM at a given timestamp. query_dom_history Timeline of attribute/text changes for a selector. request_authorization Side-panel consent for write actions (Level 3). execute_action Dispatch a UI action (gated by permission level + destructive blocklist). Why local-first matters Every other "browser session for AI" tool ships to a vendor cloud. peek's SQLite + extension live on the user's machine — no remote endpoints, no telemetry. The privacy policy (docs/peek/PRIVACY_POLICY.md) is the source of truth. Install # 1. Add the MCP server to Claude Code claude mcp add peek -- npx -y @peekdev/mcp # 2. Install the Chrome extension from the Chrome Web Store # (link added once the CWS listing is approved)

a day ago