PDF处理服务器

一个基于PyMuPDF的MCP服务器,提供PDF文件的提取、搜索、编辑和操作功能,适用于开发者和技术文档处理场景。

  • by KAP-AI
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 KAP-AI/MCP-PDF-Server

使用说明

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)


📚 额外资源

🤝 支持

如果您有任何问题或困难:

  1. 请查阅此仓库中的文档
  2. 查看服务器在stderr中的日志
  3. 运行测试脚本: python test_mcp.py
  4. 在项目仓库中创建一个issue

⚠️ 重要限制

文本编辑限制:

  • PDF不是文字处理器的格式
  • 文本编辑仅限于简单的文本块
  • 格式可能未保存完美
  • 复杂的布局无法完全编辑
  • 对于高级编辑,请使用专业的PDF编辑器

总体限制:

  • 文件最大大小:100MB
  • 不支持加密的PDF文件
  • 图像提取的质量取决于原始PDF文件
  • 压缩是基础功能(高级实现的占位符)