项目简介

这是一个基于 Model Context Protocol (MCP) 构建的后端服务示例,专注于文档差异的对比和分析。它提供了一个 MCP 工具,供兼容的 LLM 客户端调用,以执行文档比较任务并利用大型语言模型生成分析摘要。

主要功能点

  • 文档对比: 能够比较两个文档之间的文本和格式差异。
  • 支持多种格式: 原生支持 DOCX、PDF、DOC、RTF 等多种文档格式的比较(内部会进行格式转换)。
  • 大模型智能分析: 调用大型语言模型(如 OpenAI 或配置的其他模型)总结文档主要内容并分析差异。
  • 生成可视化报告: 输出带有差异高亮和分析摘要的 HTML 报告。
  • MCP 工具服务: 将文档对比和分析功能封装为标准的 MCP 工具('docs_diff'),可通过 MCP 客户端调用。

安装步骤

  1. 克隆项目仓库到本地。
  2. 确保您已安装 Python 3.11 或更高版本。
  3. 安装项目所需的依赖库:
    pip install -r requirements.txt
  4. 在项目根目录下创建 'env.py' 文件,配置您的 LLM API 密钥和相关信息。例如:
    API_KEY = "sk-YOUR_OPENAI_API_KEY"
    BASE_URL = "https://api.openai.com/v1" # 或您的自定义API地址
    MODEL_NAME = "gpt-4o-mini" # 或其他您配置的模型名称
    请替换 '"sk-YOUR_OPENAI_API_KEY"' 为您的实际 API 密钥。

运行MCP服务器

要使用此项目作为 MCP 服务器,您需要在终端中运行服务器脚本:

python mcp_server.py

服务器启动后,它将通过标准输入/输出 (Stdio) 协议监听来自 MCP 客户端的连接和请求。请保持此终端窗口开启,服务器才能正常运行。

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

如果您使用的是一个通用的 MCP 客户端(例如 MCP 官方提供的客户端或其他兼容客户端),您需要配置客户端以连接到此服务器。由于此服务器默认使用 Stdio 协议,客户端通常需要知道如何启动服务器进程并与其标准输入输出流进行通信。

一个典型的 MCP 客户端连接配置(通常以 JSON 格式表示)会包含以下关键信息来指定如何启动和连接到这个服务器:

  • 'name': 给这个服务器连接起一个易于识别的名称,例如 "文档差异服务"。
  • 'protocol': 指定通信协议,对于此服务器应设置为 '"stdio"'。
  • 'command': 启动服务器进程的命令。这通常是您的 Python 解释器的完整路径,例如 '/usr/bin/python3' 或 'C:\Python311\python.exe'。
  • 'args': 传递给 'command' 的参数列表。对于此服务器,列表应包含服务器脚本的路径,例如 '["/path/to/your/repo/mcp_demo-docs_diff/mcp_server.py"]'。

重要提示: 当使用 MCP 客户端通过 Stdio 连接时,服务器进程是由客户端启动的。客户端传入的文件路径参数(如原始文档和修改后文档的路径)必须是服务器进程能够访问到的有效路径。这意味着这些文件通常需要位于服务器运行的同一台机器上,或者通过网络共享等方式可达。

使用MCP客户端

项目自带了一个简单的 MCP 客户端 ('mcp_client.py') 来演示如何与服务器交互。

  1. 首先,确保您已按照上述说明运行了 'mcp_server.py'。
  2. 打开另一个终端窗口,运行 MCP 客户端脚本:
    python mcp_client.py
  3. 客户端将连接到服务器并显示可用的工具(您应该会看到 'docs_diff' 工具)。
  4. 在客户端的交互式命令行中,您可以输入查询来调用工具。例如,要比较 'uploads' 目录下名为 'docA.docx' 和 'docB.docx' 的两个文件,您可以输入:
    Query: 比较文档 uploads/docA.docx 和 uploads/docB.docx
    请注意,客户端会使用大模型来解析您的查询并生成调用服务器工具所需的参数(包括输入文件路径和输出文件路径)。因此,文件路径需要您在查询中明确指出,并且这些文件需要实际存在于服务器能够访问的位置。
  5. 服务器执行比较和分析后,结果将被写到指定的输出 HTML 文件中(通常在 'results' 目录下生成一个以 UUID 命名的文件)。客户端会返回大模型生成的分析总结。
  6. 输入 'quit' 退出客户端。

注意: 仓库中也包含一个基于 FastAPI 的 Web 界面 ('app.py')。此 Web 界面提供了一个用户友好的文件上传和对比界面,但它并非通过 MCP 协议与 'mcp_server.py' 进行通信,而是直接调用了 'mcp_server.py' 中的核心比较逻辑。如果您希望体验 Web 界面,可以运行 'python app.py' 并访问 http://localhost:8000。

信息

分类

AI与计算