
Quillpdf Mcp
io.github.PurpleDirective由 GitHub 账号 PurpleDirective 发布v0.2.0更新于 Oct 24, 2026
Local-first PDF tools (merge, split, rotate, watermark, Bates, metadata) as MCP server + CLI.
概览
让助手在本地执行 PDF 操作,例如合并、拆分、旋转、加水印、Bates 编号、清理元数据,以及 AES-256 加密或解锁。
- 可以做什么
- Quillpdf Mcp 是一个本地 stdio MCP 服务器和 CLI,用于对 PDF 进行结构性处理。每个操作对应一个工具,包括 pdf_merge、pdf_split、pdf_rotate、pdf_watermark、pdf_bates、pdf_clean_metadata、pdf_page_count、pdf_organize、pdf_delete_pages、pdf_page_numbers、pdf_crop、pdf_flatten、pdf_from_images、pdf_protect 和 pdf_unlock。助手提供本机文件路径,服务器在本地读取和写入这些文件。它基于 pdf-lib 构建,加密使用编译为 WebAssembly 的 QPDF。
- 适用场景
- 当助手需要整理、重新排列、盖章或为本地磁盘上已有的 PDF 文件设置密码时使用,尤其适合法律取证、医疗记录或财务文件等不希望上传到第三方服务的场景。它不用于 OCR、涂黑或压缩。
- 运行要求
- 需要 Node.js 18 或更高版本。该软件包以 quillpdf-mcp 从 npm 安装,并由 MCP 客户端通过 stdio 启动,例如使用 npx。未声明任何账户、API 密钥、环境变量或请求头,也不需要网络访问。
安装
在 SourceWeft 中
- 打开 控制台中的 Quillpdf Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
quillpdf-mcp
PDF operations for MCP. An MCP server and CLI for local PDF manipulation:
- Merge, split, organize, delete pages
- Rotate, crop
- Watermark, Bates numbering, page numbers
- Flatten forms, images → PDF
- Metadata cleaning, page count
- AES-256 protect / unlock
Built on pdf-lib. MIT licensed. stdio transport. No network calls — files never leave your machine.
Install
Or globally:
Requires Node.js 18+.
Scope
quillpdf-mcp implements structural PDF transforms and AES-256 protect/unlock. It does not perform OCR, redaction, or compression — those are available in the browser version (quillpdf.com), where processing also stays client-side. They'll ship here only when they can run fully locally.
Use it from an MCP client
quillpdf-mcp works with any MCP client. It is a stdio server, so every client needs the same thing: a command to launch. Add this server entry to your client's MCP configuration:
Client examples
Where that entry goes (check your client's documentation for the current location):
-
Claude Desktop —
claude_desktop_config.json(Settings > Developer > Edit Config). On macOS:~/Library/Application Support/Claude/claude_desktop_config.json; on Windows:%APPDATA%\Claude\claude_desktop_config.json. SamemcpServersblock as above. (docs) -
Claude Code —
claude mcp add quillpdf -- npx -y quillpdf-mcp, or put the block in a project-root.mcp.json. (docs) -
Cursor —
.cursor/mcp.jsonin a project, or~/.cursor/mcp.jsonfor all projects. SamemcpServersblock. (docs) -
VS Code —
.vscode/mcp.jsonin a workspace, or run MCP: Open User Configuration for your profile. VS Code uses aserverskey instead ofmcpServers, and takes"type": "stdio":(docs)
Then ask your assistant things like "merge invoice-1.pdf and invoice-2.pdf into combined.pdf" or "Bates-number discovery.pdf with prefix ABC starting at 1." The assistant supplies file paths on your machine; the server reads and writes them locally.
A ready-to-copy config lives in examples/mcp-config.json.
Tools
Use it from the command line
Every command has --help.
Existing files are never silently replaced. If the -o path already
exists, the command stops with an error instead of clobbering it — add
--force (or force: true on the MCP tools) to replace it deliberately.
Privacy & security notes
- Local only. All PDF processing happens in-process via
pdf-lib. The server communicates over stdio and never opens a network connection. (The MCP SDK bundles optional HTTP/SSE transports innode_modules, but this server only ever uses stdio, so none of that code runs.) - Password-protected PDFs are refused, not silently unlocked. Every operation except
unlockstops with a clear message rather than stripping the password for you.unlockdecrypts only with a password you supply — it does not recover, guess, or brute-force one. - Encryption engine.
protectandunlockrun QPDF (Apache-2.0) compiled to WebAssembly, in-process and offline like everything else.pdf-libcannot encrypt at all, and the community forks that add it are unmaintained — encryption is the one operation where a subtle bug means a document you believe is locked isn't, so this uses the reference implementation instead. - AES-256 only.
protectemits PDF 2.0 encryption revision 6. The 40-bit and 128-bit modes are deliberately not exposed: QPDF classes both as weak crypto, and shipping a "protected" file that isn't meaningfully protected is worse than shipping nothing. - Permission flags are a request, not a guarantee.
--no-print/--no-copy/--no-modifyset bits that a well-behaved reader honours; they are not enforced by the encryption. The password is the part that actually protects the file. (Extraction for accessibility stays permitted even with--no-copy, so screen readers keep working.) - Cropping is not redaction.
cropsets the CropBox, so trimmed content is hidden but still present in the file and fully recoverable. Do not use it to remove sensitive material. clean-metadatascope. It clears the title, author, subject, keywords, and creator fields plus the CreationDate/ModDate in the document information dictionary, and deletes the document-level XMP metadata stream — the copy Acrobat, Word, InDesign, and LibreOffice write, which is often the authoritative one. Note thatpdf-librewrites the/Producerfield with its own signature on save, so that one field is replaced rather than emptied. It does not scrub page-level annotations, embedded file attachments, or the text/image content of pages.
Not here yet (roadmap)
These need a Node image backend or an OCR engine and are planned for a later release — they are not in this package today:
compress(image re-encode) — needs an image codec such assharppdf-to-image(render pages to PNG) — needs a rasterizer (pdfjs-dist+ canvas)redact(true rasterize-on-redact removal) — needs the same rasterizerocr(searchable-text layer) — needstesseract.js
Each would roughly quadruple this package's dependency surface, which is the whole reason they're held back: the pitch here is a small, local, no-network tool. They'll ship only when they can run fully locally without giving that up.
Philosophy
Keep the server small, local, and easy to audit. Most "PDF API" tools answer document work with "upload it to us" — for legal discovery, medical records, or financials, the upload is the problem. This runs where you are; the bytes stay on your disk.
Development
The engine (src/core.ts) is pure: bytes in, bytes out, no I/O. The CLI (src/cli.ts) and MCP server (src/server.ts) are thin front-ends over it.
License
MIT © Purple Directive. See LICENSE.
Learn more at quillpdf.com.
来源:README.md,提交 106c98e
工具
0版本历史
2- v0.2.0最新Sep 25, 2026
- v0.1.1Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分