Utilitly PDF

com.utilitly由 utilitly.com 发布v0.1.1更新于 Oct 29, 2026

Merge, split, rotate, delete, reorder and duplicate PDF pages on your computer. Nothing is uploaded.

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

概览

AI 生成的概览

本地 MCP 服务器,让助手在你自己的电脑上合并、拆分、旋转、提取、删除、重排和复制 PDF 页面。

可以做什么
  • 查看 PDF 的页数、文件大小、首页尺寸以及是否受密码保护
  • 按指定顺序合并多个 PDF,或把一个 PDF 拆成多个页码范围
  • 把选中的页面提取为一个新的 PDF
  • 按 90 度的倍数旋转页面
  • 删除、重排或复制页面
  • 每个结果都写成输入文件旁的新文件,可选指定输出路径或文件夹
适用场景
适合把 PDF 保存在本地、想用自然语言整理文件的场景,例如合并月度账单、把手册拆成章节、把扫描件中方向不对的页面转正,而无需把文档上传到任何服务。
运行要求
需要 Node.js 22 或更高版本,首次运行会通过 npx 下载该包。作为本地 stdio 服务器在 AI 应用中配置。包名后的文件夹参数限定它可读写的目录;路径必须是绝对路径或以 ~/ 开头。无需账号、API 密钥或请求头。
安装前请注意
如果省略文件夹列表,服务器可能访问你能访问的任何文件,被其他内容误导的助手就可能把任意 PDF 复制到任意位置;除非确实需要全局访问,否则请列出文件夹。文件路径和简短的工具回复(写入路径、页数、文件大小)会发送给 AI 模型,但 PDF 内容不会。受密码保护的 PDF 会被拒绝处理。部分操作会重建 PDF,因此书签、文档属性和可填表单字段不会保留。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[In an AI chat, someone asks to merge two invoices and remove a blank page; the merge_pdfs and delete_pages tools run, and the new PDFs appear next to the untouched originals]

@utilitly/mcp

[Utilitly PDF MCP server]

A PDF MCP server for Claude, the ChatGPT desktop app, Codex, Gemini CLI, Cursor and any other app that can run a local MCP server. Ask your AI to merge, split, rotate, delete, reorder or duplicate pages, and it does the work with PDF files on your own computer.

The server runs locally, next to the AI app, and edits files where they sit. It's built on Utilitly's open-source PDF engines, ported from the free tools on utilitly.com, and it never replaces a file: every result is a new PDF beside the original.

Install

You need Node.js 22 or newer. The first run downloads the server through npx.

The folders after the package name are the only places the server may read and write. Change them to wherever your PDFs live.

Claude Code

sh
claude mcp add utilitly -- npx -y @utilitly/mcp ~/Documents ~/Downloads ~/Desktop

Claude Desktop: open Settings, then Developer, then Edit Config, and add this to claude_desktop_config.json. Restart Claude Desktop afterwards.

json
{  "mcpServers": {    "utilitly": {      "command": "npx",      "args": ["-y", "@utilitly/mcp", "~/Documents", "~/Downloads", "~/Desktop"]    }  }}

Cursor: put the same mcpServers block in ~/.cursor/mcp.json.

ChatGPT desktop app and Codex share one setup, so adding the server to either one adds it to both. In the ChatGPT app, open Settings, then MCP servers, then Add server. Choose STDIO, enter the command npx with the arguments -y @utilitly/mcp ~/Documents ~/Downloads ~/Desktop, save, and restart. From the Codex CLI:

sh
codex mcp add utilitly -- npx -y @utilitly/mcp ~/Documents ~/Downloads ~/Desktop

Gemini CLI: everything after -- goes to npx, and -s user makes the server available in every folder you start Gemini in.

sh
gemini mcp add -s user utilitly npx -- -y @utilitly/mcp ~/Documents ~/Downloads ~/Desktop

Anything else that can start a local (stdio) MCP server: the command is npx with the arguments -y @utilitly/mcp, followed by the folders.

The server is also listed in the official MCP Registry as com.utilitly/mcp, so apps and directories that read the registry can find it by that name.

About the folder list

The check happens after symlinks are resolved, so a link inside an allowed folder can't lead somewhere else.

Leave the folders out and the server may use any file you can. It still never overwrites or deletes anything, and it never shows the AI what's inside a PDF. But an AI misled by something it read elsewhere could copy any of your PDFs into any folder, so list folders unless you need it everywhere.

Try it in 30 seconds

Once it's installed, ask in plain words and use full paths:

  • "Merge ~/Downloads/march.pdf and ~/Downloads/april.pdf."
  • "Delete the blank page 3 from ~/Desktop/scan.pdf."
  • "Split ~/Documents/handbook.pdf into pages 1-12, 13-30 and 31 to the end."
  • "Pages 2 to 4 of ~/Desktop/scan.pdf are sideways; turn them the right way up."
  • "How many pages does ~/Documents/contract.pdf have, and is it locked?"

Tools

ToolWhat it doesNew file it writes
pdf_infoPage count, file size, first page size, and whether the PDF is password-protected. Changes nothing.none
merge_pdfsCombines PDFs in the order given.<first>-merged.pdf
split_pdfOne file per range, e.g. "1-2, 3-end".<name>-part1.pdf, -part2.pdf, …
extract_pagesThe selected pages as one PDF, in page order.<name>-pages.pdf
rotate_pdfTurns pages by a multiple of 90 degrees.<name>-rotated.pdf
delete_pagesRemoves pages; at least one has to stay.<name>-trimmed.pdf
reorder_pagesPuts every page in a new order.<name>-reordered.pdf
duplicate_pagesAdds copies after each page or at the end.<name>-duplicated.pdf

Results land in the same folder as the input. Every writing tool also takes an optional output_path, and split_pdf an optional output_folder. Page selections read like "2", "1-3, 5" or "4-end".

Problems come back to the AI as a short code and a sentence it can act on, such as NO_PAGES: "9" doesn't match any page. The PDF has 4 pages. or ENCRYPTED: File 2 is password-protected. Remove the password first, then try again.

What it can and can't touch

  • It never overwrites. If report-merged.pdf already exists, the result becomes report-merged-2.pdf, and an output_path that already exists is refused.
  • Input files are only read, never changed.
  • Paths must be absolute or start with ~/, so the AI can't stumble into the wrong folder through a relative path.
  • With folders listed at install, nothing outside them can be read or written.
  • Password-protected PDFs are refused rather than altered. pdf_info reports when a file is locked.
  • One call can add at most 10,000 pages beyond what its input files hold, and one split writes at most 1,000 files (or one per page for longer PDFs). A mistaken request, like a hundred million copies, is refused before anything is built.

Why nothing is uploaded

[A test blocks every way to reach the network, then runs all eight tools; each completes and the test passes with no connection opened]

The PDF work happens inside this server, on your machine, with no network code anywhere in it. test/network.test.ts proves that on every change: it makes opening a connection, looking up a host name and calling fetch all throw, then runs every tool, and they all succeed.

Your AI app still talks to its model as usual. That conversation includes whatever you type, file paths included, and each tool's short reply: the paths it wrote, page counts and file sizes. This server never puts the contents of a PDF into the conversation.

Good to know

  • merge_pdfs, split_pdf, extract_pages, delete_pages, reorder_pages and duplicate_pages build fresh PDFs, so bookmarks, document properties and working form fields aren't carried into the result. rotate_pdf keeps the whole document.
  • Images and fonts shared between pages stay shared, so results don't balloon in size.
  • To check what's running, npx -y @utilitly/mcp --version prints the version and --help the usage.

License

MIT. Built on the @utilitly PDF engines and pdf-lib (both MIT), and the official MCP TypeScript SDK (Apache-2.0).

来源:README.md,提交 3bd8f85

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.1最新Oct 29, 2026

评分

已满足适用检查项的 50%

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

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

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

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分