使用说明

项目简介

本项目 MCP PDF Server 是一个基于 Model Context Protocol (MCP) 的后端服务,专门用于管理和处理 PDF 文档。它的主要目标是让大型语言模型 (LLM) 能够方便地访问 PDF 文件内容,例如用于数据手册、论文、合同等的摘要、问答或信息提取,从而提升AI在文档相关开发或研究任务中的效率。

该项目包含两个主要部分:

  1. manager_server: 一个基于 FastAPI 的服务,提供网页界面和 RESTful API,用于上传、下载、管理服务器上的 PDF 文件。
  2. mcp_server: 实现了 MCP 协议,提供工具供 LLM 客户端调用,以搜索服务器上的 PDF 文件或从本地/URL 获取 PDF 内容并提取文本。

主要功能点

  • PDF 文本提取: 能够从指定的本地 PDF 文件路径或网络链接 (URL) 中提取全部文本内容。
  • 服务器文件搜索: 根据文件名在服务器指定的目录(默认为 '/app/datasheets')中搜索 PDF 文件,并提取其文本。
  • 服务器文件列表: 列出服务器指定目录及其子目录下所有的 PDF 文件。
  • 文件管理: 通过网页界面或 API 进行 PDF 文件的上传、下载和基本的管理操作(如创建/删除文件夹,删除文件)。

安装步骤

本项目可以通过 Docker 或直接在本地 Python 环境中运行。

使用 Docker (推荐):

  1. 确保已安装 Docker 和 Docker Compose。
  2. 克隆本项目代码。
  3. 进入项目根目录。
  4. 编辑 'docker-compose.yml' 文件,将 '/path/to/your/datasheets' 替换为你希望存储 PDF 文件的本地路径。
  5. 在终端中运行以下命令启动服务:
    docker-compose up -d --build
    服务将在后台运行,'manager_server' 默认监听 5080 端口(用于文件管理网页和API),'mcp_server' 默认使用 SSE 方式提供 MCP 服务。

在本地 Python 环境中运行:

  1. 确保已安装 Python 3.7 或更高版本。
  2. 克隆本项目代码。
  3. 进入项目根目录。
  4. 创建 Python 虚拟环境(可选但推荐):
    python -m venv venv
    source venv/bin/activate # macOS/Linux
    # 或 .\venv\Scripts\activate # Windows
  5. 安装项目依赖:
    pip install -r requirements.txt
  6. 创建用于存放 PDF 文件的目录(如果不存在,或指定一个其他目录并在代码中修改配置):
    mkdir datasheets
  7. 分别启动 manager_server 和 mcp_server。你可以使用两个终端窗口:
    • 启动 manager_server (文件管理网页/API):
      uvicorn manager_server.main:app --host 0.0.0.0 --port 5080
      (这会同时启动 'manager_server')
    • 启动 mcp_server (MCP服务):
      python mcp_server/mcp_pdf_server.py
      (这会启动 'mcp_server')
    • 注意: 根据 'mcp_server/mcp_pdf_server.py' 的代码,'mcp.run(transport="sse")' 被直接调用。LLM 客户端需要通过执行此脚本并通过其标准输入/输出与服务器通信,或者通过 FastMCP 支持的 SSE 机制连接。Docker 方案通常更方便。

服务器配置 (for MCP Client)

本 MCP 服务器通过执行一个脚本来启动其 MCP 服务。LLM 客户端(如 Cursor)需要配置如何启动这个服务器进程并与其通信。

配置信息通常包含以下参数:

  • 'server name': MCP 服务器的唯一名称,用于客户端识别。
    • 本项目中,这个名称是 '"mcp-pdf-server"'。
  • 'command': 启动 MCP 服务器进程的命令。
    • 在大多数环境中,这是 Python 解释器的路径,例如 '"python"' 或 '"python3"'。
  • 'args': 传递给 'command' 的参数列表。通常是 MCP 服务器脚本的路径及其启动参数。
    • 对于本项目,参数列表应包含启动 MCP 服务的 Python 脚本路径,例如 '["mcp_server/mcp_pdf_server.py"]'。
    • 当客户端执行 'python mcp_server/mcp_pdf_server.py' 命令时,脚本内部的 'mcp.run()' 会启动 MCP 服务并通过 SSE 方式进行通信。

因此,一个典型的 MCP 客户端配置(非代码,仅描述参数值)可能如下:

  • 'server name': "mcp-pdf-server"
  • 'command': "python" (或实际的python解释器路径)
  • 'args': ["mcp_server/mcp_pdf_server.py"]
  • 'cwd': 项目的根目录路径(如果脚本路径是相对路径的话,需要在客户端配置中指定工作目录)

请根据你实际部署服务器的路径和环境调整 'command' 和 'args' 中的路径。

基本使用方法

  1. 准备 PDF 文件: 将你需要 AI 读取和处理的 PDF 文件通过 'manager_server' 的网页界面(通常在 'http://localhost:5080')上传到服务器,或直接放置在 Docker 容器内部的 '/app/datasheets' 目录(或你本地映射的目录)中。
  2. 配置 LLM 客户端: 在你的 LLM 客户端(如支持 MCP 协议的 AI 编码工具)中,按照上述“服务器配置”部分的信息,添加并配置连接到此 MCP PDF 服务器。
  3. LLM 调用工具: 当你在客户端与 LLM 交互时,如果LLM判断需要访问 PDF 文件信息,它会通过 MCP 协议调用此服务器提供的工具,例如:
    • 调用 'server_pdf_list' 工具来获取服务器上可用的 PDF 文件列表。
    • 调用 'server_pdf_search' 工具并提供文件名来查找特定文件并获取其文本。
    • 调用 'read_local_pdf' 或 'read_url_pdf' 工具并提供文件路径或 URL 来获取外部 PDF 的文本。
  4. 获取结果: 服务器执行工具后,会将提取的文本或其他结果通过 MCP 协议返回给 LLM 客户端,LLM 即可使用这些信息来回答你的问题或完成任务。

信息

分类

AI与计算