使用说明
KPDF2Edit MCP 服务器
📄(文件/纸张) 用于处理PDF的综合MCP服务器 使用PyMuPDF及相关库来提取数据、搜索、编辑和操作PDF文件。
STDIO传输协议 针对MCP客户(VS Code、Claude Desktop、KiloCode)。
⚡ 快速启动
1. 项目构建
# Клонировать репозиторий
git clone https://github.com/your-repo/kpdf2edit.git
cd kpdf2edit
# Установить Python зависимости
pip install -r requirements.txt
# Локальный запуск
python pdf_server.py
2. 启动服务器
📡 针对MCP客户(VS Code、Claude Desktop、KiloCode)- STDIO模式
python pdf_server.py stdio
🐳 使用 Docker
# Собрать образ
docker build -t kpdf2edit:latest .
# Запустить в Docker (STDIO режим)
docker run --name kap-pdf-server --rm kpdf2edit:latest
3. 测试
# Тестировать STDIO режим
python test_mcp.py
🚀 使用
与VS Code集成
添加到 ~/Library/Application Support/Code/User/settings.json:
{
"mcp": {
"servers": {
"kpdf2edit": {
"type": "stdio",
"command": "python",
"args": ["/path/to/pdf_server.py", "stdio"]
}
}
}
}
与KiloCode的集成
在设置中添加MCP KiloCode(通常在 ~/.config/kilocode/mcp_settings.json):
{
"mcpServers": {
"kpdf2edit": {
"command": "python",
"args": ["/path/to/pdf_server.py", "stdio"]
}
}
}
或者使用Docker:
{
"mcpServers": {
"kpdf2edit": {
"command": "docker",
"args": ["run", "--rm", "-i", "kpdf2edit:latest", "stdio"]
}
}
}
与Claude Desktop的集成
添加到 claude_desktop_config.json:
{
"mcpServers": {
"kpdf2edit": {
"command": "python",
"args": ["/path/to/pdf_server.py", "stdio"]
}
}
}
Docker 部署
# Собрать образ
docker build -t kpdf2edit:latest .
# Запустить контейнер (STDIO режим)
docker run --name kap-pdf-server --rm kpdf2edit:latest
🔍 测试和调试
MCP协议测试
# Запустить тестовый скрипт
python test_mcp.py
# Или тестировать вручную с MCP клиентом
python pdf_server.py stdio
📄 PDF处理工具
🔍 提取图像(extract_images)
从PDF中提取所有嵌入的光栅图像,并以ZIP压缩包的形式返回。
参数:
pdf_path*(字符串)*PDF文件的路径quality*(整数,可选)*JPEG质量(默认:90)
返回: 包含提取图像的ZIP存档路径
📝 文本提取(extract_text)
从PDF中提取文本并以markdown格式返回内容。
参数:
pdf_path*(字符串)*PDF文件的路径by_pages*(布尔值,可选)*按页面提取文本(默认:false)
返回: Markdown格式的文本内容
🔎 搜索文本(search_text)
在PDF中查找文本并返回页码和位置。
参数:
pdf_path*(字符串)*PDF文件的路径search_text*(字符串)*搜索文本
返回: 与页码和限制框架相匹配的列表
✏️ 文本编辑(edit_text)
在PDF的特定页面上编辑文本(功能有限)。
⚠️ 限制:
- 仅处理未嵌入在图像中的文本块
- 文本替换可能无法保留精确格式
- 最适合简单的文本修正
- 完全的WYSIWYG(所见即所得)PDF编辑是不可能的
参数:
pdf_path*(字符串)*PDF文件的路径page_num*(整数)*要编辑的页面编号old_text*(字符串)*替换文本new_text*(字符串)*替换的新文本
返回: 修改后的PDF文件路径
🔗 合并PDF(merge_pdfs)
将多个PDF文件合并为一个。
参数:
pdf_paths*(数组)*PDF文件合并的路径列表
返回: 合并PDF文件的路径
✂️ 分割PDF(split_pdf)
根据页码范围将PDF文件分割成多个文件。
参数:
pdf_path*(字符串)*用于分割的PDF文件路径ranges*(数组)*要拆分的页码范围(例如:['1-3', '5', '7-10'])output_dir*(字符串)*分割文件的输出目录
返回: 包含分割PDF文件的目录路径
🔄 书页翻转(rotate_pages)
翻转PDF页面。
参数:
pdf_path*(字符串)*PDF文件的路径rotation*(整数)*旋转角度(90度,180度,270度)pages*(数组,可选)*需要翻页的页码(从1开始计数,如未指定则为所有页面)output_path*(字符串,可选)*输出文件的路径
返回: 获取旋转后的PDF文件的路径
🗜️ 压缩PDF(compress_pdf)
通过降低图像质量来压缩PDF文件。
参数:
pdf_path*(字符串)*PDF文件的路径quality*(整数,可选)*压缩质量(1-100,默认:75)output_path*(字符串,可选)*输出文件的路径
返回: 压缩PDF文件的路径
🔧 建筑学
📡 标准输入输出模式(MCP兼容)
- 用途与MCP客户端(VS Code、Claude Desktop、KiloCode)的集成
- 议定书通过stdin/stdout的JSON-RPC
- 发射:
python pdf_server.py stdio - 特点与MCP规范完全兼容
🛠️ 技术细节
系统要求
- python版本3.11或更高版本
- **OS(操作系统)**Linux,macOS,Windows
- 依赖项PyMuPDF,Pillow,pypdf
项目结构
kpdf2edit/
├── pdf_server.py # Основной код сервера
├── requirements.txt # Python зависимости
├── Dockerfile # Docker конфигурация
├── README.md # Документация
└── ...
构建和部署
# Установить зависимости
pip install -r requirements.txt
# Запустить локально
python pdf_server.py
# Docker сборка
docker build -t kpdf2edit:latest .
# Кроссплатформенные сборки (используя PyInstaller)
pip install pyinstaller
pyinstaller --onefile pdf_server.py
安全功能
- 文件大小限制PDF文件最大100MB
- 文件类型验证只接受PDF文件
- 验证标题检查PDF的魔数(%PDF-)
- 无状态操作会话之间不保存数据
- 清理临时文件Docker容器中的自动清理
配置
- 工作时间MCP客户端的STDIO模式
- 日志记录所有日志都输出到 stderr
📝 许可证麻省理工学院许可证(MIT License)
📚 额外资源
- 🌐 表示“互联网”或“全球网络”。 模型上下文协议 - MCP官方文件
- 📄(文件或纸张的符号,无具体含义,可理解为“文件”或“纸张”) PyMuPDF(注:这是一个库或软件的名称,直接翻译可能无具体含义,但通常保持原名以指代其特定功能或用途) - PDF处理库的文档
- 🐙 一只章鱼 GitHub Copilot Chat - Copilot Chat 文档
🤝 支持
如果您有任何问题或困难:
- 请查阅此仓库中的文档
- 查看服务器在stderr中的日志
- 运行测试脚本:
python test_mcp.py - 在项目仓库中创建一个issue
⚠️ 重要限制
文本编辑限制:
- PDF不是文字处理器的格式
- 文本编辑仅限于简单的文本块
- 格式可能未保存完美
- 复杂的布局无法完全编辑
- 对于高级编辑,请使用专业的PDF编辑器
总体限制:
- 文件最大大小:100MB
- 不支持加密的PDF文件
- 图像提取的质量取决于原始PDF文件
- 压缩是基础功能(高级实现的占位符)
