Papyrio PDF Tools

io.github.atabekdemurtazaPublished by GitHub account atabekdemurtazav0.1.4Updated Oct 29, 2026

Compress, convert, merge, split and OCR PDFs from an assistant, using local files.

Overview

AI-generated overview

Local MCP server that lets an assistant compress, merge, split, OCR and convert PDFs and Office files on your machine via the Papyrio API.

What you can do
  • Compress, merge, split and encrypt or unlock PDFs, writing results to local paths
  • Extract text from PDFs and add a searchable text layer to scans with OCR
  • Convert PDFs to Word or JPG, and Office documents or images to PDF
  • Render a public web page to PDF in a headless browser
  • Chain several steps in one request, e.g. OCR a folder of scans, merge and compress them
When to use it
Useful when you want an assistant to handle everyday PDF chores on local files — shrinking a file for email, joining scans or invoices, OCR-ing a scan before reading it, or turning a document into another format — without manual upload and download between steps.
Requirements
Runs locally over stdio via npx (Node.js) or a one-click Claude Desktop bundle. Optional PAPYRIO_API_KEY (RapidAPI subscription key) as an environment variable; without it the free guest tier allows three operations a day per IP address. Network access to the Papyrio API is required. Tools take absolute file paths.
Before you install
Files are uploaded to the Papyrio API for processing, so anything confidential leaves your machine. Most tools write to output_path and overwrite an existing file there. protect_pdf and unlock_pdf handle document passwords, which are passed to the service. The guest tier is capped at three operations a day; a paid RapidAPI subscription may be needed for regular use.

Installation

In SourceWeft

  1. Open Papyrio PDF Tools in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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

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

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

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:

json
{  "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

ToolDoesWrites
compress_pdfShrinks a PDF, 30–80% on image-heavy files.pdf
merge_pdfsJoins 2–10 PDFs in order.pdf
split_pdfSeparates every page into its own file.zip
extract_pdf_textReturns the text layer as UTF-8.txt
pdf_to_wordRebuilds the document as an editable .docx.docx
pdf_to_jpgRenders every page as a JPG.zip
ocr_pdfAdds 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_pdfWord, PowerPoint or Excel to PDF.pdf
image_to_pdfWraps a JPG, PNG or WebP in a PDF page.pdf
webpage_to_pdfRenders a public URL in a headless browser.pdf
protect_pdfEncrypts with AES-256.pdf
unlock_pdfRemoves 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

bash
npm run buildPAPYRIO_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

bash
npm installnpm run build

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

json
{  "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

Source: README.md at commit 7ed2471

Tools

12

compress_pdf

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.

Parametersfilerequiredleveloutput_path

merge_pdfs

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.

Parametersfilesrequiredoutput_path

extract_pdf_text

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.

Parametersfilerequiredoutput_path

ocr_pdf

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.

Parametersfilerequiredlangoutput_path

pdf_to_word

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.

Parametersfilerequiredoutput_path

split_pdf

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.

Parametersfilerequiredoutput_path

pdf_to_jpg

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.

Parametersfilerequiredoutput_path

office_to_pdf

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.

Parametersfilerequiredoutput_path

image_to_pdf

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.

Parametersfilerequiredoutput_path

webpage_to_pdf

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.

Parametersurlrequiredoutput_pathrequired

protect_pdf

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.

Parametersfilerequiredpasswordrequiredoutput_path

unlock_pdf

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.

Parametersfilerequiredpasswordrequiredoutput_path

Version history

3
  1. v0.1.4LatestOct 22, 2026
  2. v0.1.3Oct 13, 2026
  3. v0.1.2Oct 13, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts