Skip to main content
Glama

papyrio-mcp

npm Listed on mcpservers.org Glama score

An MCP server for the Papyrio PDF API. Setup for Claude, Cursor and VS Code: papyrio.net/mcp. It lets an assistant compress, merge, OCR and convert PDFs on your own machine, reading and writing local files, so multi-step work does not mean uploading and downloading between every step.

OCR every scan in ~/invoices, merge them into one PDF, compress it under 5 MB

is four tool calls the assistant makes by itself.

Install

Claude Desktop, one click

Watch: add PDF tools to Claude Desktop in one click (47 s)

Download papyrio-mcp.mcpb and double-click it. Claude Desktop opens an install screen; leave the API key empty for the free guest tier or paste a RapidAPI key (see below). You can change it later under Settings, Extensions.

By hand, or any other client

Add this to your Claude Desktop config:

macOS ~/Library/Application Support/Claude/claude_desktop_config.json Windows %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "papyrio": {
      "command": "npx",
      "args": ["-y", "papyrio-mcp"]
    }
  }
}

Restart Claude Desktop. The tools appear under the connector icon.

Related MCP server: SmartPDF

API key

The server works without one, metered as ordinary free web traffic: three operations a day per IP address. Enough to see whether it is useful.

For real use, subscribe on RapidAPI and pass the key:

{
  "mcpServers": {
    "papyrio": {
      "command": "npx",
      "args": ["-y", "papyrio-mcp"],
      "env": { "PAPYRIO_API_KEY": "your-rapidapi-key" }
    }
  }
}

The free RapidAPI tier is 50 requests a month and needs no card.

Tools

Tool

Does

Writes

compress_pdf

Shrinks a PDF, 30–80% on image-heavy files

.pdf

merge_pdfs

Joins 2–10 PDFs in order

.pdf

split_pdf

Separates every page into its own file

.zip

extract_pdf_text

Returns the text layer as UTF-8

.txt

pdf_to_word

Rebuilds the document as an editable .docx

.docx

pdf_to_jpg

Renders every page as a JPG

.zip

ocr_pdf

Adds a searchable text layer to a scan, up to 15 pages per call; lang picks English, Russian, Spanish, Italian, Uzbek or Kazakh

.pdf

office_to_pdf

Word, PowerPoint or Excel to PDF

.pdf

image_to_pdf

Wraps a JPG, PNG or WebP in a PDF page

.pdf

webpage_to_pdf

Renders a public URL in a headless browser

.pdf

protect_pdf

Encrypts with AES-256

.pdf

unlock_pdf

Removes a password you already know

.pdf

Every tool takes absolute paths. output_path is optional and defaults to the input name with a -papyrio suffix — except webpage_to_pdf, which has no input file to derive a name from and so requires it.

Adding a tool

Add an entry to src/tools.ts. The MCP tool, its input schema and the HTTP call are all generated from it.

Testing

npm run build
PAPYRIO_API_KEY=your-key node smoke.mjs

Drives all twelve tools over the real MCP protocol against the live API and checks the returned file's magic bytes, so a JSON error body named .pdf fails rather than passes. Without a key it runs on the guest tier, where three operations a day means most cases will hit rate_limit_exceeded.

Develop

npm install
npm run build

Point your config at the local build while working on it:

{
  "mcpServers": {
    "papyrio": {
      "command": "node",
      "args": ["/absolute/path/to/mcp/dist/index.js"]
    }
  }
}

Privacy: files are sent to the Papyrio API, processed in memory, and discarded when the response is sent. Nothing is stored.

Licence

MIT

Available Tools

12 tools
compress_pdfA

Shrink a PDF by downsampling its images. Image-heavy files lose 30-80% of their size; text stays selectable. Use this when a PDF is too large to email or upload. Already-optimized files come back unchanged rather than larger. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), level, output_path.

extract_pdf_textA

Return the text of a PDF as UTF-8, so it can be read or summarized. Fast and exact when the PDF already has a text layer. A scanned PDF has none — run ocr_pdf on it first. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), output_path.

image_to_pdfA

Wrap a JPG, PNG or WebP image in a PDF page. Use this when an image needs to be submitted or printed as a PDF. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), output_path.

merge_pdfsA

Combine 2 to 10 PDFs into one document, in the order given. Use this to join separate scans, chapters or invoices into a single file. Password-protected files must be unlocked first. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: files (required), output_path.

ocr_pdfA

Add an invisible text layer to a scanned PDF so its text can be searched, selected and extracted. Use this before extract_pdf_text or pdf_to_word on a scan or photographed document, and set lang when the text is not English. The page images are kept, so the output is about the same size as the input, and pages that already have text are left untouched. Takes roughly 2-10 seconds per page. Scans at 300 DPI or higher read well; below 150 DPI accuracy degrades badly. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), lang, output_path.

office_to_pdfA

Convert a Word (.doc, .docx, .odt), PowerPoint (.ppt, .pptx) or Excel (.xls, .xlsx) document to PDF with LibreOffice, keeping fonts, tables, images and page layout; each slide or sheet becomes one or more pages. Use this to turn an Office file into a fixed, shareable PDF, not for files that are already PDFs. Large presentations can take 30 seconds or more. Password-protected Office files are not supported. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), output_path.

pdf_to_jpgA

Render every page of a PDF as a JPG image, returned as a ZIP archive. Use this when the pages are needed as pictures, for a thumbnail, a slide or an image pipeline. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), output_path.

pdf_to_wordA

Convert a PDF into an editable Word document. PDFs exported from Word, Google Docs or InDesign come through well. A scanned PDF is a picture of a page, so run ocr_pdf on it first. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), output_path.

protect_pdfA

Encrypt a PDF with AES-256 so it cannot be opened without the password. Use this before sending a document that contains anything private. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), password (required), output_path.

split_pdfA

Separate every page of a PDF into its own file, returned as a ZIP archive. Use this to pull single pages out of a long document. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), output_path.

unlock_pdfA

Remove the password from a PDF you already know the password for. This decrypts with the supplied password; it does not break or guess encryption. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: file (required), password (required), output_path.

webpage_to_pdfA

Fetch a public URL and render the page to PDF in a headless browser. Use this to archive or print a web page. This tool takes a URL rather than a file, so output_path is required. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

Inputs: url (required), output_path (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

    TDQS

    A4.6/5.0

    Scored across 12 tools

    Disambiguation5/5

    Each tool targets a distinct operation: conversion (pdf_to_jpg, pdf_to_word, office_to_pdf, image_to_pdf, webpage_to_pdf), manipulation (split, merge, compress), security (protect/unlock), and text (extract_pdf_text, ocr_pdf). The pair extract_pdf_text/ocr_pdf could seem close, but descriptions clearly explain OCR produces a text layer while extract retrieves existing text. No real overlap.

    Naming Consistency4/5

    Most names follow a clear source_to_target or verb_noun convention (pdf_to_word, office_to_pdf, split_pdf, merge_pdfs). There are two styles mixed—conversion names use X_to_Y while manipulation names use verb_pdf—but both are readable and the pattern is semantically meaningful. Only ocr_pdf is an outlier.

    Tool Count5/5

    12 tools is well within the ideal 3-15 range and each earns its place, covering conversion, manipulation, security and text extraction without redundancy. The count matches the scope of a focused PDF-utility API.

    Completeness4/5

    Core workflows are well covered: convert in/out, extract, OCR, split/merge, compress, protect/unlock. Minor gaps remain—no page rotation/reordering, no PDF-to-Excel/PPT, no watermarking or image extraction—but agents can work around these for most tasks.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to perform comprehensive PDF operations locally, including compression, text extraction, PII redaction, page organization, splitting, merging, watermarking, creation, and form filling, all without cloud uploads.
      13 npm
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      Remote MCP server exposing 24 PDF operations over Streamable HTTP that accept public file URLs up to 100 MB and return a download link, enabling conversion to and from PDF, compression, merging and splitting, OCR (including Russian), page manipulation, signing, watermarking, and password protection, plus balance checks. It also ships alongside an agent skill that lets file-on-disk workflows run against the same REST API.
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      Compress, merge, split, protect, convert, annotate and redact PDFs from any local MCP client. The server runs a bundled copy of the localipdf.com tools in a temporary browser profile on your machine, so your PDFs are not sent to a remote service.
      -
    • A
      license
      A
      quality
      C
      maintenance
      Enables AI apps to edit PDFs on the local machine through natural language, merging, splitting, extracting, rotating, deleting, reordering and duplicating pages, plus inspecting page counts and encryption status. All work runs locally with no uploads, and every operation writes a new file beside the untouched original.
      8
      587 npm
      MIT