mcpField
P
pdf-split-merge-compress

pdf-split-merge-compress

远程服务
mcp.zovo.one生产力2今天更新

关于 pdf-split-merge-compress

面向需要处理 PDF 文件的个人与小型业务用户,这个 MCP 服务可在本机完成拆分、合并、旋转、盖章和文本提取等页面操作。文件保留在本地,输入文件不会被修改。

主要功能

  1. 01按页码范围拆分并提取页面
  2. 02合并、重排和旋转页面
  3. 03添加 PAID、DRAFT 或自定义文字印章
  4. 04读取 PDF 文本、元数据和页数
  5. 05输入文件保持不变,结果另存为新文件

适用场景

  1. 01从扫描件中提取指定页并拆分文件
  2. 02合并合同、发票等 PDF
  3. 03为发票添加 PAID 印章并另存副本
  4. 04检查 PDF 页数或读取可提取的页面文本

MCP 相关

作为 MCP 服务,它向 MCP 客户端提供 PDF 信息查询、页面编辑、盖章和文本读取等工具,并提供最近操作记录资源及 mark_invoice_paid 提示词。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.zovo.one/mcp/pdf-split-merge-compress
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.zovo.one/mcp/pdf-split-merge-compress需要授权

工具

15
参数类型必填说明
pathstring是使用 pdf_upload 上传的 PDF 名称,或此服务此前生成的 PDF 名称

详细介绍

在 Claude 中合并、拆分 PDF 并填写 PDF 表单

只需说“在那张发票上盖上 PAID,并保存一份副本”或“从这份扫描件中提取第 2 到第 6 页,并与合同合并”,它就会在你的电脑上瞬间完成。这个 MCP 服务能处理那些小型 PDF 任务,否则你可能会把文件上传到某个网页:合并、按页码范围拆分、提取或重新排序页面、旋转横向扫描件、添加 PAID、DRAFT 或任意文本印章、在页脚添加公司名称和 VAT id、统计文件夹中所有文件的页数,以及将 PDF 文本读取为纯文本。不用上传、无需账号、无需原生依赖,也不用安装办公软件。

已收录于官方 MCP Registry(io.github.theluckystrike/pdf-merge-split-stamp-extract-pages)。

已列入 AI Product Index - 提供可用的远程端点 mcp.zovo.one/s/pdf,免费套餐,无需注册。

pdf demo

自由职业者业务中的 PDF 杂务,只需在聊天中完成,不必使用你不放心上传发票的浏览器标签页。

60 秒安装

@theluckystrike/mcp-pdf 的 npm 发布尚待完成。在此之前,可使用一键安装包 .mcpb,或克隆并构建;以下两种方式都已验证可用。

一键安装(.mcpb):从最新版本下载 pdf.mcpb,然后在 Claude Desktop 中双击: https://github.com/theluckystrike/mcp-servers/releases/latest

(claude_desktop_config.json):

{
  "mcpServers": {
    "pdf": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-pdf"]
    }
  }
}

Claude Code:

claude mcp add pdf -- npx -y @theluckystrike/mcp-pdf

(.cursor/mcp.json):

{
  "mcpServers": {
    "pdf": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-pdf"]
    }
  }
}

上面的 npx 方式会在软件包发布后立即生效。在此之前,请使用上面的 .mcpb 安装包,或通过以下三个命令从源代码构建:

git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/pdf

然后,将客户端的 command 指向 node,并传入一个参数:servers/pdf/dist/index.js 的绝对路径。

若要使用 Pro 模式,请在同一个配置块中设置 MCP_LICENSE_KEY,或使用你的密钥调用一次 license_activate。

工具

工具功能
pdf_info页数、每页的尺寸(以点和毫米为单位)、纸张名称(A4、Letter、自定义)、每页现有的旋转角度、元数据(标题、作者、制作程序、日期),以及文件是否已加密
pdf_count统计任意数量 PDF 文件的页数,并给出总页数。无法读取的文件会单独报告;其他文件仍会照常统计
pdf_merge按给定顺序合并 PDF。保留页面原有尺寸;如果合并后的文件包含多种尺寸,会对此作出说明
pdf_split每个范围生成一个新文件。"1-3,5,7-" 表示第 1-3 页、第 5 页,以及从第 7 页到最后一页。out_path_pattern 接受 {n}、{range} 和 {name}
pdf_pages按你指定的顺序提取页面并生成一个新 PDF。"5,1,1" 会先放入第 5 页,再将第 1 页放入两次
pdf_rotate按 90 度的倍数旋转页面,并与页面现有旋转角度叠加,适用于旋转方向不正的扫描件
pdf_stamp在页面上添加文本:可使用 PAID 和 DRAFT 预设,也可自定义文本、颜色、位置、不透明度和大小。居中印章会沿 45 度对角线放置
pdf_watermark_business使用共享配置文件中的公司名称和 VAT id,在每页页脚添加信息;该配置文件由 mcp-invoice 和 mcp-docx 写入
pdf_text尽可能从页面内容流中提取文本。请参阅下方的注意事项
pdf_reorder按新顺序生成 PDF。顺序必须恰好列出每一页一次,以免意外遗漏页面
license_status显示免费或 Pro 模式
license_activate激活 Pro 密钥(离线验证)

资源:pdf://recent 返回最近 25 次操作,按时间从新到旧排列,并附上输入内容、写入的文件及操作时间。 提示词:mark_invoice_paid 会串联 mcp-invoice 的 invoice_get 和 pdf_stamp PAID,并将盖章后的副本保存到原文件所在目录。

你可以这样说

你说工具
“将发票 INV-2026-0007 标记为已付款。”mark_invoice_paid 提示词,然后是 pdf_stamp
“在我发送这份合同前,将 DRAFT 印在上面。”pdf_stamp
“将这三份 PDF 合并成一个文件。”pdf_merge
“拆分这份扫描件:第 1–3 页是发票,第 4 页起是收据。”pdf_split
“从这份文件中提取第 2 到第 6 页,并另存为单独的文件。”pdf_pages
“这份扫描件是横着的,把它转正。”pdf_rotate
“这些文件总共有多少页?”pdf_count
“这份 PDF 的第 1 页写了什么?”pdf_text
“在页脚加上我的公司名称和 VAT 号码。”pdf_watermark_business
“把封面页移到最前面。”pdf_reorder

示例

You: Stamp PAID on ~/invoices/INV-2026-0007.pdf and save a copy.

  pdf_stamp {
    path: "~/invoices/INV-2026-0007.pdf",
    text: "PAID",
    position: "center",
    out_path: "~/invoices/INV-2026-0007-paid.pdf"
  }
  -> Stamped "PAID" on 1 page
  -> ~/invoices/INV-2026-0007-paid.pdf, 0.9 MB

印章是绘制出来的文本,而不是扁平化的图像:可以选中并搜索,文本以预设绿色沿 45 度斜线绘制,原始文件则逐字节保持不变。

免费版与 Pro 版

免费版Pro 版
pdf_info、pdf_count、pdf_text不限次数不限次数
pdf_merge每次调用最多 5 个文件文件数量不限
pdf_split、pdf_pages、pdf_rotate最多 30 页的文件长度不限
pdf_stamp预设颜色的 PAID 和 DRAFT 预设印章任意文本、颜色和大小
pdf_watermark_business-在页脚添加您的公司名称和 VAT ID
pdf_reorder-支持

遇到套餐限制时,工具会返回说明,而不是报错;如果调用被拒绝,也不会写入任何内容。

Pro 版一次性付费 $19;也可支付 $39,一次性购买合集中的所有服务,终身使用。

pdf_text 尽力而为,具体含义如下

PDF 不存储文本,而是存储绘图操作符;你看到的文本是传递给字体的字节。本服务会使用 node:zlib 解压每一页的 FlateDecode 内容流,并读取四种显示文本的操作符——Tj、TJ、' 和 ",以及用于结束一行的定位操作符。这是此处编写的解析器,约有 200 行代码,不使用 pdfjs 或原生模块,并且存在三项实际限制;每次工具都会在自己的答复中说明:

  • 扫描件没有文本。 纯图像页面不包含文本操作符,因此不会返回任何内容。这里没有 OCR,也不会添加 OCR;答复会说明该页面可能是扫描件,而不是只返回一个没有解释的空字符串。
  • 自定义编码或 CID 编码返回的是字形索引,而不是字母。 子集嵌入字体和 CJK 字体会通过此解析器无法读取的表格,将字节映射为字形编号。如果输出中没有可读字符,答复会说明原因是字体。
  • 读取顺序就是绘制顺序。 解析器不会检测分栏,也不会重建布局。通过 TJ 数组中较大的负字距恢复单词间的空格,因此,如果 PDF 将每个单词分别定位,返回的文本可能会将单词连在一起。

由文字处理软件、开票工具和报告生成器创建的 PDF,以及使用标准字体或完全嵌入字体的 PDF,都能干净地读取。其他情况则会说明无法读取的原因。

遇到加密 PDF 时会拒绝处理,而不是猜测

pdf-lib 无法解密;如果忽略加密加载文件,生成的页面会是一堆垃圾,并被直接写入输出。因此,所有会写入文件的工具都会拒绝处理尾部包含 /Encrypt 字典的文件,并在消息中说明原因和解决方法:使用带密码的阅读器打开文件,然后导出或打印为新的 PDF,再使用该文件。pdf_info 仍会返回结果,并标记 encrypted: true,因为它的工作就是报告信息;pdf_count 则会将其报告为一个无法读取的文件,同时继续统计其余文件。

现有文件绝不会被覆盖,输入也绝不会被修改

每个工具都会写入新文件,并逐字节保留输入原样;这是有意为之,不提供原地修改模式。 如果 out_path 已存在,则会拒绝:

Error: /path/merged.pdf already exists and nothing was written.
Pass overwrite: true to replace it, or give a different out_path.

路径通过独占创建来预留,而不是通过检查是否存在来预留,因此两个进程同时写入相同的 out_path 时不会互相覆盖:一个成功,另一个被拒绝且不写入任何内容。pdf_split 会在写入前预留所有输出路径,因此第 3 个分段发生冲突时,不会留下只完成一半的第 1、2 个分段;预留也会被释放,因此磁盘上不会留下空文件。

如果你希望替换文件,请传入 overwrite: true。

overwrite: true 仍不允许将输出设为输入。把操作结果写回它自己的某个源文件会破坏该源文件:页面已经载入内存,随后会被写回其来源文件,这会把一个三页文件变成你提取出的那一页,之后每次读取该路径都会悄悄读到错误内容。因此,如果 out_path 解析后与同一次调用的任何输入相同(或与其共享 inode),操作会在开始前被拒绝:

Error: out_path /path/scan.pdf is also an input of this operation, so writing it would destroy the source.
Nothing was written. Write beside it instead - /path/scan-out.pdf - and, if the result really is meant to
take the original's place, rename it yourself once you have checked it.

限制

  • 拒绝处理超过 100 MB 的输入:重写 PDF 需要占用相当于文件大小数倍的内存。
  • 如果文件不是以 %PDF- 开头,则会在读取任何内容前被拒绝。
  • 旋转会以页面元数据的形式记录,角度必须是 90 度的倍数;这是该格式所支持的全部角度。不会重新绘制内容。
  • 印章文字会使用内置 PDF 字体,该字体支持 WinAnsi 的 256 个码位。不支持的字符如果有明显的拉丁字母形式,会进行转写;例如,波兰语的 OPŁACONE 印章会转写为 OPLACONE,答案会说明这一点并显示实际绘制的内容。不支持的字符会被移除并计数,因此无法生成 CJK 印章。换行符会被视为词语分隔符,绝不会导致内容被删除。
  • font_size 必须介于 1 到 1600 点之间。如果印章文字过长,即使使用此服务端采用的最小字号也无法容纳,仍会绘制,并在答案中说明超出边缘的距离,方便你缩短文字。
  • pdf_text 的单次答案上限为 200,000 个字符,并会指出应使用哪个 pages 参数从截断处继续。文件内容不会缺失;截断的是答案,而非读取结果。
  • 不支持页码、签名、涂黑或压缩。此服务端只执行页面级操作,并非 PDF 编辑器。它不会写入 PDF/A:pdf_info 会报告文件自身的 pdfa_claim,每个写入文件的工具都会明确说明其输出不再符合该声明。
  • 表单只读取,不填写:pdf_text 会打印 AcroForm 字段值,这些值存储在字段中,而非页面内容流中,因此不属于页面文本。
  • 不支持 OCR。请参阅 pdf_text 部分。

数据存储方式

只记录执行过的操作:${XDG_DATA_HOME:-~/.local/share}/mcp-servers/pdf/operations.json,以纯 JSON 格式保存最近 500 条操作。你的 PDF 会保留在原处。每次写入记录时都会在 .../pdf/.lock 上持有建议锁,因此同一数据目录中的两个客户端不会丢失记录;数据会先保存到临时文件,再重命名到目标位置。

如果记录不可读或不是有效的 JSON,绝不会将其视为空记录:文件会逐字节移至一旁,命名为 operations.json.corrupt-<timestamp>,并在旁边附上标记。你请求生成的 PDF 仍会写入;在处理记录之前,文件就已写入磁盘;答案会告知你历史记录未能更新。

业务页脚会读取整个工具套件共用的配置文件 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/profile/business.json,该文件由 mcp-invoice 或 mcp-docx 中的 business_set 写入。不会编造任何信息:如果未存储名称,pdf_watermark_business 会拒绝操作并告知你应运行哪个工具。

隐私

所有数据都保留在本地。服务会在你的机器上读写文件,不会发起任何网络请求—— 不会用于许可验证(密钥会离线验证),不会用于获取字体,也不会用于遥测。你添加印章的 PDF 永远不会上传到任何地方,这正是这个项目存在的全部原因。

搭配使用

  • mcp-invoice:给你发出的发票添加“已付款”印章:mark_invoice_paid 提示词会将 invoice_get 与 pdf_stamp 串联起来。
  • mcp-docx:将提案写为 .docx,打印为 PDF,然后在此处添加印章、合并或拆分。
  • mcp-resume:将简历、求职信和作品集合并为申请表接受的单个文件。
  • office-suite:一个安装包中包含多个服务,只需配置一项。

故障排除

  • npx 卡住或找不到软件包:此软件包仍在等待发布到 npm。在发布之前,请使用上方的 .mcpb 捆绑包或克隆并构建的方式。
  • “已加密,因此拒绝处理”:该文件受密码或权限保护。请在 PDF 阅读器中打开它,导出或打印为新的 PDF,然后对副本运行工具。此服务不会猜测或移除密码。
  • pdf_text 未返回任何内容:页面是扫描件,或其字体使用了自定义编码。答案会说明是哪种情况。此处不提供 OCR。
  • 印章太小或太大:默认情况下,印章会调整大小以适应页面宽度。如需精确字号,请传入 font_size,并将 opacity 设为 0 到 1 之间的值。
  • “文件已存在,未写入任何内容”:请传入 overwrite: true,或使用不同的 out_path。
  • Node 版本:需要 Node >= 18。使用 node -v 检查。

采用 MIT 许可证。支持:[email protected]

由 theluckystrike 构建。

常见问题

有用于合并和拆分 PDF 的 MCP 服务吗?

有。mcp.zovo.one 上的 pdf 服务可以合并、拆分、旋转 PDF 并填写 PDF 表单,同时保留表单字段。拆分/提取页面/旋转操作对每个文件有 30 页的免费额度,提供托管的远程端点,无需安装。

Claude 能通过 MCP 服务填写 PDF 表单吗?

可以——连接 https://mcp.zovo.one/mcp/pdf,然后让 Claude 填写表单字段或合并多个 PDF。输出会保留表单,因此填写的字段仍可编辑。

将这些文档用作 MCP 服务

任何 MCP 客户端(Claude、Cursor、Windsurf、VS Code)都可以通过 GitMCP 直接读取此代码库的文档——无需安装:

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。