项目简介

该项目实现了一个 Model Context Protocol (MCP) 服务器,专门用于处理 PDF 文档。它允许连接的 LLM 客户端通过标准化的 MCP 请求调用其功能,例如从指定的 URL 下载 PDF、提取 PDF 内容(包括识别并转换 LaTeX 数学公式)、以及读取处理后的文本结果。这为 LLM 分析、总结或回答基于 PDF 内容的问题提供了强大的支持。

主要功能点

  • PDF 获取: 通过 URL 下载 PDF 文件到服务器端。
  • 文本提取: 从 PDF 中提取可读文本,保留文档结构。
  • LaTeX 公式提取: 识别 PDF 中的数学区域(包括图像公式),并尝试将其转换为 LaTeX 格式,集成到提取的文本中。
  • MCP 集成: 以 MCP 标准工具的形式提供上述功能,方便 LLM 客户端调用。
  • 多种传输协议: 支持 Stdio 和 SSE 协议与 MCP 客户端通信。

安装步骤

  1. 克隆仓库: 将项目代码克隆到本地目录。
    git clone https://github.com/MichaelLevinson/mcp_pdf_processor.git
    cd mcp_pdf_processor
  2. 标准安装: 推荐使用 pip 的可编辑模式安装,方便开发和更新。
    pip install -e .
    这会安装所有必要的依赖,包括 PyMuPDF (fitz), mcp, pydantic, aiohttp 等。如果需要 LaTeX 提取功能,确保已安装 'pix2tex' 及其依赖 (如 torch)。安装步骤中已包含 'pix2tex' 作为可选依赖。

服务器配置(供 MCP 客户端使用)

MCP 客户端需要配置连接到此服务器。通常需要指定服务器名称、启动命令及参数。根据项目代码,可以通过运行 'python pdf_tool_server.py' 脚本启动服务器。

  • 服务器名称 (Server Name): 'PDF_TOOLS'
  • 启动命令 (Command): 'python'
  • 启动参数 (Args): 'pdf_tool_server.py', '--transport', 'stdio'

如果您希望使用 SSE 传输,可以将参数更改为:'pdf_tool_server.py', '--transport', 'sse', '--port', '8000' (端口号可自定义)。

例如,在支持配置 MCP 服务器的客户端中,您需要添加一个配置项,包含上述信息。

基本使用方法

服务器启动并被 MCP 客户端成功连接后,LLM 就可以通过调用工具来使用 PDF 处理功能。以下是典型的使用流程(示例命令可能因客户端而异,这里以 Claude Desktop 风格为例):

  1. 获取 PDF: 使用 'fetch_pdf' 工具下载 PDF。

    /mcp PDF_TOOLS fetch_pdf url=https://arxiv.org/pdf/2505.05522

    服务器将返回一个 PDF 的 'hash_id'。

  2. 处理 PDF: 使用上一步获取的 'hash_id' 调用 'process_pdf' 工具进行处理。您可以选择是否提取 LaTeX 公式 ('extract_latex=true' 或 'false')。

    /mcp PDF_TOOLS process_pdf hash_id=<HASH_ID> extract_latex=true

    服务器将返回处理后输出文件的 'filename'。

  3. 读取处理后的内容: 使用上一步获取的 'filename' 调用 'read_processed_pdf' 工具获取文本内容。

    /mcp PDF_TOOLS read_processed_pdf filename=<FILENAME>

    服务器将返回提取并格式化后的 PDF 文本内容,LLM 客户端可以读取并用于后续分析。

服务器会将处理后的文本文件保存在其运行目录下的 'llm_output' 文件夹中。

信息

分类

AI与计算