使用说明
项目简介
本项目 MCP PDF Server 是一个基于 Model Context Protocol (MCP) 的后端服务,专门用于管理和处理 PDF 文档。它的主要目标是让大型语言模型 (LLM) 能够方便地访问 PDF 文件内容,例如用于数据手册、论文、合同等的摘要、问答或信息提取,从而提升AI在文档相关开发或研究任务中的效率。
该项目包含两个主要部分:
- manager_server: 一个基于 FastAPI 的服务,提供网页界面和 RESTful API,用于上传、下载、管理服务器上的 PDF 文件。
- mcp_server: 实现了 MCP 协议,提供工具供 LLM 客户端调用,以搜索服务器上的 PDF 文件或从本地/URL 获取 PDF 内容并提取文本。
主要功能点
- PDF 文本提取: 能够从指定的本地 PDF 文件路径或网络链接 (URL) 中提取全部文本内容。
- 服务器文件搜索: 根据文件名在服务器指定的目录(默认为 '/app/datasheets')中搜索 PDF 文件,并提取其文本。
- 服务器文件列表: 列出服务器指定目录及其子目录下所有的 PDF 文件。
- 文件管理: 通过网页界面或 API 进行 PDF 文件的上传、下载和基本的管理操作(如创建/删除文件夹,删除文件)。
安装步骤
本项目可以通过 Docker 或直接在本地 Python 环境中运行。
使用 Docker (推荐):
- 确保已安装 Docker 和 Docker Compose。
- 克隆本项目代码。
- 进入项目根目录。
- 编辑 'docker-compose.yml' 文件,将 '/path/to/your/datasheets' 替换为你希望存储 PDF 文件的本地路径。
- 在终端中运行以下命令启动服务:
服务将在后台运行,'manager_server' 默认监听 5080 端口(用于文件管理网页和API),'mcp_server' 默认使用 SSE 方式提供 MCP 服务。docker-compose up -d --build
在本地 Python 环境中运行:
- 确保已安装 Python 3.7 或更高版本。
- 克隆本项目代码。
- 进入项目根目录。
- 创建 Python 虚拟环境(可选但推荐):
python -m venv venv source venv/bin/activate # macOS/Linux # 或 .\venv\Scripts\activate # Windows - 安装项目依赖:
pip install -r requirements.txt - 创建用于存放 PDF 文件的目录(如果不存在,或指定一个其他目录并在代码中修改配置):
mkdir datasheets - 分别启动 manager_server 和 mcp_server。你可以使用两个终端窗口:
- 启动 manager_server (文件管理网页/API):
(这会同时启动 'manager_server')uvicorn manager_server.main:app --host 0.0.0.0 --port 5080 - 启动 mcp_server (MCP服务):
(这会启动 'mcp_server')python mcp_server/mcp_pdf_server.py - 注意: 根据 'mcp_server/mcp_pdf_server.py' 的代码,'mcp.run(transport="sse")' 被直接调用。LLM 客户端需要通过执行此脚本并通过其标准输入/输出与服务器通信,或者通过 FastMCP 支持的 SSE 机制连接。Docker 方案通常更方便。
- 启动 manager_server (文件管理网页/API):
服务器配置 (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' 中的路径。
基本使用方法
- 准备 PDF 文件: 将你需要 AI 读取和处理的 PDF 文件通过 'manager_server' 的网页界面(通常在 'http://localhost:5080')上传到服务器,或直接放置在 Docker 容器内部的 '/app/datasheets' 目录(或你本地映射的目录)中。
- 配置 LLM 客户端: 在你的 LLM 客户端(如支持 MCP 协议的 AI 编码工具)中,按照上述“服务器配置”部分的信息,添加并配置连接到此 MCP PDF 服务器。
- LLM 调用工具: 当你在客户端与 LLM 交互时,如果LLM判断需要访问 PDF 文件信息,它会通过 MCP 协议调用此服务器提供的工具,例如:
- 调用 'server_pdf_list' 工具来获取服务器上可用的 PDF 文件列表。
- 调用 'server_pdf_search' 工具并提供文件名来查找特定文件并获取其文本。
- 调用 'read_local_pdf' 或 'read_url_pdf' 工具并提供文件路径或 URL 来获取外部 PDF 的文本。
- 获取结果: 服务器执行工具后,会将提取的文本或其他结果通过 MCP 协议返回给 LLM 客户端,LLM 即可使用这些信息来回答你的问题或完成任务。
信息
分类
AI与计算