项目简介

MCPO文件生成与文档审核工具(MCPO-File-Generation-Tool)是一个轻量级的、与Open WebUI深度集成的MCP服务器,旨在扩展LLM在文档处理方面的能力。它允许大型语言模型直接在对话环境中生成、导出、分析和修订各种文件类型,极大地提升了AI在办公自动化和内容创作领域的生产力,如同ChatGPT或Claude的文件处理能力一样。

主要功能点

  • 文件生成: 支持创建多种格式的文件,包括PDF、Word (.docx)、Excel (.xlsx)、PowerPoint (.pptx)、CSV,以及各种纯文本格式(如.txt, .xml, .py等)。
  • 文件归档: 能够将一个或多个生成的文件打包成'.zip'、'.7z'或'.tar.gz'等常见压缩格式的归档文件。
  • 文档内容分析: 提供工具来解析上传的Word、Excel、PowerPoint文档的内部结构、文本内容和关键元数据,帮助LLM深入理解文档上下文。
  • 文档智能批注与修订: 允许AI直接对Word文档添加原生批注,对Excel单元格添加注释,以及在PowerPoint幻灯片顶部添加模拟文本框进行修订意见,实现AI辅助的文档编辑工作流。
  • 图像生成与集成: 支持通过Unsplash、Pexels或本地Stable Diffusion服务,根据LLM的文本描述生成图像,并自动插入到生成的文档或演示文稿中。
  • 可配置性: 提供了丰富的环境变量供用户自定义文件存储路径、文件导出URL、文件生命周期(是否持久化及保留时长)、图像源和认证密钥等。

安装步骤

该工具支持Python独立运行和Docker容器部署。

📦 Python 用户

  1. 克隆仓库:
    git clone https://github.com/GlisseManTV/MCPO-File-Generation-Tool.git
    cd MCPO-File-Generation-Tool
  2. 安装依赖:
    pip install openpyxl reportlab py7zr fastapi uvicorn python-multipart mcp
  3. 启动文件导出服务器: MCP服务器需要一个独立的文件服务器来托管生成的临时文件。
    # 在Windows上:
    set FILE_EXPORT_DIR=C:\temp\LLM_Export\output
    start "File Export Server" python "您的MCPO仓库路径/LLM_Export/tools/file_export_server.py"
    
    # 在Linux/macOS上:
    export FILE_EXPORT_DIR=/tmp/LLM_Export/output
    nohup python "您的MCPO仓库路径/LLM_Export/tools/file_export_server.py" > file_server.log 2>&1 &
    请将 '您的MCPO仓库路径' 替换为实际的仓库克隆路径。
  4. 配置并运行MCP服务器: 在您的Open WebUI配置(例如 'config.json' 或环境变量)中,添加或修改MCP服务器的配置。详细配置请参考下方的“服务器配置”部分。配置完成后,启动Open WebUI,它将自动启动并连接到此MCP服务器。

🐳 Docker 用户 (推荐)

Docker部署简化了环境设置。

  1. 拉取Docker镜像:
    docker pull ghcr.io/glissemantv/owui-file-export-server:latest
    docker pull ghcr.io/glissemantv/owui-mcpo:latest
  2. 使用Docker Compose运行: 创建一个 'docker-compose.yaml' 文件,示例如下。请根据您的需求修改卷挂载路径('/your/export-data')。
    services:
      file-export-server:
        image: ghcr.io/glissemantv/owui-file-export-server:latest
        container_name: file-export-server
        environment:
          - FILE_EXPORT_DIR=/output
        ports:
          - "9003:9003" # 文件服务器端口
        volumes:
          - /your/export-data:/output # 挂载文件输出目录
    
      owui-mcpo:
        image: ghcr.io/glissemantv/owui-mcpo:latest
        container_name: owui-mcpo
        environment:
          - FILE_EXPORT_BASE_URL=http://file-export-server:9003/files # MCP服务器访问文件服务器的URL
          - FILE_EXPORT_DIR=/output # MCP服务器生成文件并存储的目录,需与文件服务器一致
          - MCPO_API_KEY=your-mcpo-api-key # 可选,MCP API密钥
          - PERSISTENT_FILES=false # 文件下载后是否持久保留
          - FILES_DELAY=60 # 非持久化文件删除前的等待时间(分钟)
          - LOG_LEVEL=INFO # 日志级别
          - UNSPLASH_ACCESS_KEY=your-unsplash-key # 可选,Unsplash API密钥
          - IMAGE_SOURCE=unsplash # 图像来源: "unsplash", "local_sd" 或 "pexels"
          # 如果使用local_sd,请提供以下配置:
          # - LOCAL_SD_URL=http://localhost:7860
          # - LOCAL_SD_USERNAME=local_user
          # - LOCAL_SD_PASSWORD=local_password
          # - LOCAL_SD_DEFAULT_MODEL=sd_xl_base_1.0.safetensors
          # - LOCAL_SD_STEPS=20
          # - LOCAL_SD_WIDTH=512
          # - LOCAL_SD_HEIGHT=512
          # - LOCAL_SD_CFG_SCALE=1.5
          # - LOCAL_SD_SCHEDULER=Karras
          # - LOCAL_SD_SAMPLE=Euler a
        ports:
          - "8000:8000" # MCP服务器监听端口
        restart: unless-stopped
        volumes:
          - /your/export-data:/output # 挂载文件输出目录,需与文件服务器一致
        depends_on:
          - file-export-server
    将 '/your/export-data' 替换为您希望在主机上存储导出文件的实际路径。 运行:'docker-compose up -d'

服务器配置

MCP客户端(如Open WebUI)需要配置才能连接和使用此MCP服务器。以下是配置此文件导出MCP服务器的关键信息,通常在Open WebUI的 'config.json' 文件或通过环境变量进行设置:

  • 服务器名称 (server name): 'file_export'
    • 这是MCP服务器在客户端注册的唯一标识符。
  • 启动命令 (command): 'python' (或 'python3' 等)
    • 指示客户端如何执行MCP服务器脚本的命令。
  • 启动参数 (args): '["-m", "tools.file_export_mcp"]'
    • 传递给启动命令的参数,指定运行 'LLM_Export/tools/file_export_mcp.py' 模块。
  • 环境变量 (env):
    • 'PYTHONPATH': MCP服务器所在项目根目录的路径,必填,例如 'C:\temp\LLM_Export'。
    • 'FILE_EXPORT_BASE_URL': 文件导出服务器的URL,MCP服务器会通过此URL向LLM客户端提供文件下载链接,默认为 'http://localhost:9003/files'。
    • 'FILE_EXPORT_DIR': 文件保存的本地目录,必须与文件导出服务器的目录一致,默认为 'PYTHONPATH\output' (Python) 或 '/output' (Docker)。
    • 'PERSISTENT_FILES': 设置为 'true' 则文件下载后保留,'false' 则在延迟后删除,默认为 'false'。
    • 'FILES_DELAY': 删除非持久化文件前的等待时间(分钟),默认为 '60'。
    • 'UNSPLASH_ACCESS_KEY': 可选,您的Unsplash API密钥,用于图像生成。
    • 'IMAGE_SOURCE': 图像来源,可选 'unsplash', 'local_sd' 或 'pexels',默认为 'unsplash'。
    • 'LOCAL_SD_URL': 如果 'IMAGE_SOURCE' 为 'local_sd',则此项为本地Stable Diffusion实例的URL。
    • 其他 'LOCAL_SD_' 前缀的环境变量,用于配置本地Stable Diffusion服务的生成参数(如用户名、密码、模型、步数等)。
  • 启用状态 (disabled): 'false'
    • 控制MCP服务器是否启用。
  • 自动批准工具 (autoApprove): '[]'
    • 允许LLM在无需用户确认的情况下自动调用的工具列表。

基本使用方法

安装并配置完成后,您的Open WebUI或兼容的LLM客户端即可通过自然语言与AI互动,调用此MCP服务器提供的文件操作工具:

  1. 生成文件:
    • “请帮我生成一份关于[主题]的PDF报告。”
    • “根据这些数据创建一个Excel表格。”
    • “制作一个包含三页的PPT,第一页是标题,第二页是[内容],第三页是[总结]。”
  2. 打包文件:
    • “将我生成的所有文件打包成一个名为'项目资料.zip'的压缩包。”
  3. 文档结构分析(需要LLM客户端支持文件上传):
    • “上传文件[文件名.docx]。请分析这份Word文档的标题和主要段落。”
    • “读取上传的Excel文件[数据.xlsx],告诉我A1单元格的内容和所有列的标题。”
  4. 文档智能批注与修订(需要Open WebUI的'Files Metadata Injector'函数和API Key):
    • “请审核我上传的Word文档[报告.docx],并在第3段落添加批注‘此处需要更多细节’。”
    • “在Excel文件[预算.xlsx]的B5单元格中加入批注‘此数据需要重新核算’。”
    • 启用步骤:
      1. 确保Open WebUI已安装 'Files Metadata Injector Function'(可从Open WebUI社区下载或放置在工具的 'functions/' 目录下)。
      2. 在Open WebUI配置中设置环境变量:'OWUI_URL' (您的Open WebUI实例URL) 和 'JWT_SECRET' (在Open WebUI用户设置中生成的API密钥)。

通过上述方式,LLM能够无缝地与文档进行交互,极大地提升了自动化办公和内容管理效率。

信息

分类

AI与计算