Papyrio PDF Tools

io.github.atabekdemurtaza由 GitHub 账号 atabekdemurtaza 发布v0.1.4更新于 Oct 29, 2026

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

已验证STDIO仅桌面效率与工作流文件与存储

概览

AI 生成的概览

本地 MCP 服务器,让助手通过 Papyrio API 在本机压缩、合并、拆分、OCR 和转换 PDF 及 Office 文件。

可以做什么
  • 压缩、合并、拆分 PDF,以及用密码加密或解锁 PDF
  • 提取 PDF 文本,并为扫描件添加可搜索的文字层(OCR)
  • 把 PDF 转成 Word 或 JPG,把 Office 文档或图片转成 PDF
  • 用无头浏览器把公开网页渲染为 PDF
  • 在一次请求中串联多步操作,例如 OCR 一批扫描件、合并并压缩
适用场景
适合让助手处理本机文件的日常 PDF 事务:把文件压小以便邮件发送、合并扫描件或发票、先 OCR 再阅读扫描件,或把文档转成其他格式,无需在每一步之间手动上传下载。
运行要求
通过 npx(需 Node.js)以 stdio 在本地运行,或使用 Claude Desktop 一键安装包。可选环境变量 PAPYRIO_API_KEY(RapidAPI 订阅密钥);不填则使用免费访客额度,每个 IP 每天三次操作。需要访问 Papyrio API 的网络连接。工具要求绝对文件路径。
安装前请注意
文件会上传到 Papyrio API 处理,机密内容会离开本机。多数工具会写入 output_path 并覆盖该位置已有文件。protect_pdf 与 unlock_pdf 涉及文档密码,密码会传给该服务。访客额度每天仅三次操作,常规使用可能需要付费 RapidAPI 订阅。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Papyrio PDF Tools,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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

来源:README.md,提交 7ed2471

工具

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.

输入参数file必填leveloutput_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.

输入参数files必填output_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.

输入参数file必填output_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.

输入参数file必填langoutput_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.

输入参数file必填output_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.

输入参数file必填output_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.

输入参数file必填output_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.

输入参数file必填output_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.

输入参数file必填output_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.

输入参数url必填output_path必填

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.

输入参数file必填password必填output_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.

输入参数file必填password必填output_path

版本历史

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

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分