# docx2html-mcp **Repository Path**: isycr/docx2html-mcp ## Basic Information - **Project Name**: docx2html-mcp - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-18 - **Last Updated**: 2025-11-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Docx 转 HTML 转换工具 - MCP 服务 ## 服务介绍 本 MCP 服务基于 FastMCP 框架开发,提供 **Docx 文件到 HTML 的自动化转换功能**,支持完整保留 Docx 文档中的格式信息(包括字体样式、段落布局、表格结构及合并单元格等),并输出可直接使用的标准 HTML 内容。 核心优势: - **格式高保真**:精准提取 Docx 中的字体大小/颜色/粗细、段落对齐/行距/缩进、表格边框/背景色/合并单元格等样式,无信息丢失 - **自动化处理**:无需手动配置格式映射,传入 Docx 文件路径即可自动生成 HTML,支持自定义输出路径 - **轻量易用**:提供简洁的工具函数接口,集成到业务流程中仅需一行代码调用 - **HTML 优化**:自动清理空标签、冗余样式,输出结构简洁、可维护的 HTML 内容 ## 功能特性 | 功能模块 | 具体能力 | |------------------|--------------------------------------------------------------------------| | 文本样式转换 | 支持字体大小(pt)、字体名称、粗体/斜体/下划线/删除线、字体颜色(RGB)提取 | | 段落样式转换 | 支持行距、段前/段后间距、首行缩进提取,保留段落结构 | | 表格样式转换 | 支持表格边框(宽度/颜色)、单元格背景色、单元格边距提取 | | 合并单元格处理 | 自动识别并保留 Docx 中的行合并(rowspan)、列合并(colspan)逻辑 | | HTML 清理优化 | 自动删除空段落/空 span 标签、冗余样式属性,压缩标签间多余空白 | | 输出路径灵活配置 | 支持自定义 HTML 输出路径,未指定时默认在 Docx 同目录生成同名 HTML 文件 | ## 依赖环境 运行本服务需满足以下环境依赖,系统会自动校验基础环境,缺失依赖将导致服务启动失败: | 依赖类型 | 具体要求 | |------------------|--------------------------------------------------------------------------| | 运行环境 | Python 3.8+ | | 核心依赖库 | fastmcp>=2.11.0(MCP 框架)、python-docx>=1.2.0(Docx 解析) | | 辅助依赖库 | html(HTML 特殊字符转义)、re(正则表达式优化)、os(文件路径处理) | **依赖安装命令**: ```bash pip install fastmcp python-docx ``` ## 服务配置(Server Config) 本服务通过工具函数 `docxToHtml` 对外提供能力,核心配置如下(需确保配置字段完整,否则将中断 MCP 服务创建): ```python # 1. 服务初始化配置 from fastmcp import FastMCP # 初始化 MCP 服务,服务名称为“演示 🚀”(可根据需求修改) mcp = FastMCP("演示 🚀") # 2. 核心工具函数配置(Docx 转 HTML 主逻辑) @mcp.tool def docxToHtml(docx_path: str) -> str: """ 将 Docx 文件转换为 HTML 并返回输出文件路径 Args: docx_path: str - Docx 文件的绝对路径(必填,路径错误将返回异常) Returns: str - 生成的 HTML 文件绝对路径(转换成功)/ 错误信息(转换失败) 示例调用: docxToHtml("/home/user/docs/example.docx") # 返回:"/home/user/docs/example.html"(转换成功) """ return docx_to_html(docx_path) # 调用底层转换逻辑(详见代码实现) # 3. 底层转换函数配置(docx_to_html) def docx_to_html(docx_path, output_file=None, clean=True): """ 底层 Docx 转 HTML 处理函数,支持自定义输出路径和 HTML 清理 Args: docx_path: str - Docx 文件路径(必填) output_file: str | None - 自定义 HTML 输出路径(可选,默认同目录同名) clean: bool - 是否清理冗余 HTML 标签(可选,默认 True) Returns: str - HTML 输出路径 """ # 具体实现逻辑:解析 Docx 元素→转换为 HTML 标签→优化输出(详见代码) ``` ## 环境变量配置(env) 本服务依赖以下环境变量,系统将从服务配置中自动提取 `env` 键值对,建议在部署前配置完成: | 环境变量名 | 类型 | 说明 | 默认值 | |---------------------|--------|----------------------------------------------------------------------|-----------------------| | `PYTHONPATH` | str | Python 依赖包搜索路径,确保 fastmcp、python-docx 能被正确导入 | 系统默认 Python 路径 | | `DOCX_CONVERT_LOG` | str | 转换日志输出路径,用于记录转换成功/失败信息(可选) | "/var/log/docx2html.log" | | `MAX_DOCX_SIZE` | int | 支持转换的最大 Docx 文件大小(单位:MB),超过将拒绝转换 | 50(即 50MB) | ## 使用示例 ### 1. 基础使用(默认输出路径) ```python # 调用 MCP 工具函数,转换 Docx 文件(默认输出到同目录) result = docxToHtml("/data/docs/report.docx") print(result) # 输出:"/data/docs/report.html"(转换成功) ``` ### 2. 自定义输出路径 ```python # 先修改底层函数调用,指定 output_file 参数 result = docx_to_html( docx_path="/data/docs/report.docx", output_file="/data/html/report_2024.html" ) print(result) # 输出:"/data/html/report_2024.html"(转换成功) ``` ### 3. 关闭 HTML 清理(保留原始标签) ```python result = docx_to_html( docx_path="/data/docs/report.docx", clean=False # 不清理空标签和冗余样式 ) ``` ## 常见问题(FAQ) 1. **Q:转换失败,提示“文件路径不存在”?** A:请检查 `docx_path` 是否为绝对路径,且文件是否存在;相对路径可能因服务运行目录不同导致找不到文件。 2. **Q:转换后的 HTML 丢失表格合并单元格?** A:确保 `calculate_rowspan` 函数正常运行(代码中已处理行合并逻辑),若仍有问题,检查 Docx 表格是否为标准合并格式(非嵌套表格)。 3. **Q:字体颜色/背景色未正确显示?** A:目前支持 Docx 中的标准 RGB 颜色和高亮色,若使用自定义色板,需补充 `get_inline_style` 函数中的颜色映射逻辑。 4. **Q:转换大文件(>50MB)时失败?** A:可通过修改环境变量 `MAX_DOCX_SIZE` 增大支持的文件大小,例如 `export MAX_DOCX_SIZE=100`(支持 100MB)。 ## 维护与更新 - **版本说明**:当前版本 V1.0,支持基础 Docx 转 HTML 功能,后续将新增“图片转换”“公式渲染”等特性 - **问题反馈**:若遇到格式丢失、转换崩溃等问题,可提交日志文件(`DOCX_CONVERT_LOG` 路径)至维护邮箱 - **更新方式**:通过 GitHub 仓库更新代码后,需重新执行 MCP 服务创建流程,系统将自动解析最新配置