关于 StayPut
StayPut 是在本机处理 PDF 和照片的 MCP 服务,面向需要在 Claude、Cursor、VS Code 等客户端操作文件的用户。文件只从磁盘读取并写回磁盘,不会上传;工具会创建新文件而不修改输入文件。
主要功能
- 01合并、拆分和旋转 PDF
- 02提取、重排或删除 PDF 页面
- 03为 PDF 页面添加页码
- 04将 JPG 和 PNG 转为 PDF
- 05查看并清除照片元数据
适用场景
- 01合并本地账单 PDF
- 02提取合同中的指定页面
- 03为论文页面添加页码
- 04检查照片 GPS 并生成清理后的副本
MCP 相关
MCP 服务向兼容 MCP 的客户端提供本地 PDF 和照片处理工具。它在本机读写文件,不发起网络请求。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
9收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | PDF 的路径。 |
| password | string | 否 | 打开 PDF 时要求输入的密码。仅在此设备上使用。 |
详细介绍
Stayput MCP 服务
适用于 Claude、Cursor、VS Code 及所有支持 Model Context Protocol 的应用的本地 PDF 和照片工具。让助手合并 PDF、提取页面,或移除照片中的 GPS 位置,所有操作都在你自己的电脑上完成。
它运行的代码与浏览器版本 stayput.dev 相同。**文件从磁盘读取并写回磁盘;不会上传任何内容,服务也不会发起网络请求。**它免费且开源(MIT),无需账户或 API 密钥。
工具
| 工具 | 功能 |
|---|---|
merge_pdfs | 按给定顺序合并多个 PDF |
extract_pdf_pages | 仅保留部分页面、重新排序(“3,1,2”)或删除页面 |
split_pdf | 每页拆分为一个文件,或每 N 页拆分为一个文件 |
rotate_pdf | 将所有页面或指定页面旋转 90、180 或 270 度 |
number_pdf_pages | 添加页码,例如“第 {n} 页,共 {total} 页” |
pdf_info | 页数、页面尺寸和标题 |
images_to_pdf | 将 JPG 和 PNG 图片合并为一个 PDF,每页一张图片,不重新压缩 |
inspect_image_metadata | 显示照片中的 GPS 位置、相机、拍摄时间及其他隐藏元数据 |
strip_image_metadata | 另存一份移除 EXIF、GPS、XMP 和注释的 JPG、PNG 或 WebP 文件,不重新编码 |
每个工具都会写入一个新文件并返回其路径。输入文件绝不会被修改,已有文件也绝不会被覆盖(会生成 file-1.pdf)。加密 PDF(银行对账单、受打印限制的表单)会通过 qpdf 在本地解密;对于打开时需要密码的 PDF,助手会在 password 参数中传入密码。
安装
需要 Node.js 20 或更高版本。
Claude Code
claude mcp add stayput -- npx -y stayput-mcp
Claude Desktop、Cursor、Windsurf 及其他 JSON 配置(claude_desktop_config.json、.cursor/mcp.json 等)
{
"mcpServers": {
"stayput": {
"command": "npx",
"args": ["-y", "stayput-mcp"]
}
}
}
VS Code
code --add-mcp '{"name":"stayput","command":"npx","args":["-y","stayput-mcp"]}'
然后可以提出如下请求:
- “合并 ~/Downloads 中的 invoice-march.pdf 和 invoice-april.pdf”
- “从 contract.pdf 中提取第 2 到第 5 页”
- “IMG_2041.jpg 中包含位置信息吗?如果有,请另存一份并移除位置信息”
- “为 thesis.pdf 添加页码,从第 3 页开始编号”
相对路径会从启动服务时所在的文件夹解析,因此最好提供绝对路径或 ~/... 路径。
此处不支持的功能
HEIC、WebP 和 AVIF 格式转换、压缩、PDF 转图片以及 PDF 签名需要浏览器引擎。这些功能可在 stayput.dev 使用,操作方式相同:在浏览器中完成,不会上传任何内容。
开发
cd mcp
npm install
npm test # builds dist/index.js and runs the end-to-end tests
测试使用网站的测试样本;请先在仓库根目录运行 python3 tests/fixtures/make-fixtures.py && node tests/fixtures/make-pdf.mjs 生成测试样本(需要 Pillow 和 pillow-heif)。
服务从 ../src/lib 导入 PDF 和元数据代码,并使用 esbuild(build.mjs)打包。构建时会替换两个仅供浏览器使用的模块:src/unlock.ts 从 node_modules 加载 qpdf,而不是通过 <script> 标签加载;src/no-canvas.ts 则替代了仅供 PDF 压缩功能使用的 canvas 辅助程序。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。