返回市场
文档处理MCP服务器

文档处理MCP服务器

作者:hongkongkiwi6 星标更新:2025-08-13

项目介绍

DOCX MCP 服务器

一个全面的用于Microsoft Word DOCX文件操作的模型上下文协议(MCP)服务器,使用Rust构建。该服务器为AI系统提供了强大的工具,可以创建、编辑、转换和管理Word文档。

📖 目录

🚀 快速开始

# 克隆仓库
git clone https://github.com/yourusername/docx-mcp.git
cd docx-mcp

# 下载嵌入字体以支持独立运行(可选但推荐)
./download_fonts.sh

# 构建服务器(生成完全独立的二进制文件)
./build.sh

# 服务器现在已准备好 - 不需要外部依赖项!

🎯 独立运行

此MCP服务器设计为完全独立运行,无需LibreOffice、unoconv或其他外部工具:

  • 纯Rust DOCX解析 - 不需要外部库
  • 内置PDF生成 - 无需LibreOffice即可生成PDF
  • 嵌入字体 - 专业排版包含在二进制文件中
  • 原生图像处理 - 无需ImageMagick即可生成PNG/JPG
  • 零外部依赖 - 单个二进制部署

如果可用,服务器会自动使用外部工具以提高质量,但它们是完全可选的

🔒 安全特性

服务器包括企业级和受限环境的全面安全特性:

只读模式

# 启用只读模式 - 只允许查看和分析文档

# 使用环境变量
export DOCX_MCP_READONLY=true
./target/release/docx-mcp

# 使用命令行参数
./target/release/docx-mcp --readonly

在只读模式下,仅允许以下操作:

  • 打开并查看文档
  • 提取文本和分析结构
  • 导出到其他格式(Markdown、PDF)
  • 搜索和词数分析
  • 获取文档元数据和统计信息

命令过滤

# 仅允许特定命令

# 使用环境变量
export DOCX_MCP_WHITELIST="open_document,extract_text,get_metadata,export_to_markdown"

# 使用命令行参数
./target/release/docx-mcp --whitelist open_document,extract_text,get_metadata,export_to_markdown

# 或者禁止危险命令

# 使用环境变量
export DOCX_MCP_BLACKLIST="save_document,convert_to_pdf,merge_documents"

# 使用命令行参数
./target/release/docx-mcp --blacklist save_document,convert_to_pdf,merge_documents

沙箱模式

# 将所有文件操作限制在临时目录内

# 使用环境变量
export DOCX_MCP_SANDBOX=true
./target/release/docx-mcp

# 使用命令行参数
./target/release/docx-mcp --sandbox

资源限制

# 设置最大文档大小(默认100MB)

# 使用环境变量
export DOCX_MCP_MAX_SIZE=52428800  # 50MB
export DOCX_MCP_MAX_DOCS=20
export DOCX_MCP_NO_EXTERNAL_TOOLS=true
export DOCX_MCP_NO_NETWORK=true
./target/release/docx-mcp

# 使用命令行参数
./target/release/docx-mcp \
  --max-size 52428800 \
  --max-docs 20 \
  --no-external-tools \
  --no-network

🤖 AI 工具集成

Claude Desktop

添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "docx": {
      "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
      "args": [],
      "env": {
        "RUST_LOG": "info"
      }
    }
  }
}

带有安全选项(使用命令行参数):

{
  "mcpServers": {
    "docx": {
      "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
      "args": ["--readonly", "--max-size", "52428800", "--no-network"],
      "env": {
        "RUST_LOG": "info"
      }
    }
  }
}

带有安全选项(使用环境变量):

{
  "mcpServers": {
    "docx": {
      "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
      "args": [],
      "env": {
        "RUST_LOG": "info",
        "DOCX_MCP_READONLY": "true",
        "DOCX_MCP_MAX_SIZE": "52428800",
        "DOCX_MCP_NO_NETWORK": "true"
      }
    }
  }
}

添加后,请重启Claude Desktop。然后您可以请求Claude:

  • "创建一个包含我们第四季度报告的新Word文档"
  • "将这个DOCX文件转换为PDF"
  • "从我的Word文档中提取所有文本"
  • "向文档中添加一个包含销售数据的表格"

Cursor

添加到您的Cursor设置中(~/.cursor/config.json或通过设置UI):

基本配置:

{
  "mcp": {
    "servers": {
      "docx": {
        "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
        "args": [],
        "env": {
          "RUST_LOG": "info"
        }
      }
    }
  }
}

带有安全选项(使用命令行参数):

{
  "mcp": {
    "servers": {
      "docx": {
        "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
        "args": ["--sandbox", "--whitelist", "open_document,extract_text,export_to_markdown"],
        "env": {
          "RUST_LOG": "info"
        }
      }
    }
  }
}

带有安全选项(使用环境变量):

{
  "mcp": {
    "servers": {
      "docx": {
        "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
        "args": [],
        "env": {
          "RUST_LOG": "info",
          "DOCX_MCP_SANDBOX": "true",
          "DOCX_MCP_WHITELIST": "open_document,extract_text,export_to_markdown"
        }
      }
    }
  }
}

Windsurf (Codeium)

添加到您的Windsurf配置中(~/.windsurf/config.json):

基本配置:

{
  "mcp": {
    "servers": {
      "docx": {
        "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
        "args": [],
        "env": {
          "RUST_LOG": "info"
        }
      }
    }
  }
}

带有安全选项(使用参数):

{
  "mcp": {
    "servers": {
      "docx": {
        "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
        "args": ["--readonly", "--no-external-tools"],
        "env": {
          "RUST_LOG": "info"
        }
      }
    }
  }
}

Continue.dev

添加到您的Continue配置中(~/.continue/config.json):

基本配置:

{
  "models": [
    {
      "title": "您的模型",
      "provider": "您的提供商",
      "mcp_servers": {
        "docx": {
          "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
          "args": []
        }
      }
    }
  ]
}

带有安全选项:

{
  "models": [
    {
      "title": "您的模型",
      "provider": "您的提供商",
      "mcp_servers": {
        "docx": {
          "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
          "args": ["--sandbox", "--max-size", "10485760"]
        }
      }
    }
  ]
}

VS Code with MCP Extension

如果您正在使用VS Code的MCP扩展程序,请将其添加到您的工作区设置中(.vscode/settings.json):

基本配置:

{
  "mcp.servers": {
    "docx": {
      "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
      "args": [],
      "env": {
        "RUST_LOG": "info"
      }
    }
  }
}

带有安全选项:

{
  "mcp.servers": {
    "docx": {
      "command": "/absolute/path/to/docx-mcp/target/release/docx-mcp",
      "args": ["--readonly", "--blacklist", "save_document,merge_documents"],
      "env": {
        "RUST_LOG": "info"
      }
    }
  }
}

🔧 命令行参数

DOCX MCP服务器支持以下命令行参数进行配置:

docx-mcp --help

可用参数

参数环境变量描述示例
--readonlyDOCX_MCP_READONLY=true启用只读模式 - 只允许查看操作--readonly
--whitelist <COMMANDS>DOCX_MCP_WHITELIST允许的命令列表,逗号分隔--whitelist open_document,extract_text
--blacklist <COMMANDS>DOCX_MCP_BLACKLIST禁止的命令列表,逗号分隔--blacklist save_document,convert_to_pdf
--sandboxDOCX_MCP_SANDBOX=true将文件操作限制在临时目录内--sandbox
--no-external-toolsDOCX_MCP_NO_EXTERNAL_TOOLS=true禁用外部工具(如LibreOffice等)--no-external-tools
--no-networkDOCX_MCP_NO_NETWORK=true禁用网络操作--no-network
--max-size <BYTES>DOCX_MCP_MAX_SIZE最大文档大小(字节)--max-size 52428800
--max-docs <COUNT>DOCX_MCP_MAX_DOCS最大打开文档数量--max-docs 20
--help-显示帮助信息--help
--version-显示版本信息--version

示例用法

# 基本用法
./target/release/docx-mcp

# 带有大小限制的只读模式
./target/release/docx-mcp --readonly --max-size 10485760

# 带有命令白名单的沙箱模式
./target/release/docx-mcp --sandbox --whitelist open_document,extract_text,export_to_markdown

# 多种安全选项
./target/release/docx-mcp \
  --readonly \
  --no-external-tools \
  --no-network \
  --max-size 52428800 \
  --max-docs 10

注意: 当同时指定时,命令行参数优先于环境变量。

📚 特性

文档操作

  • 创建 & 打开:创建新文档或打开现有的DOCX文件
  • 文本操作:添加段落、标题、列表,并支持完整的样式
  • 表格:创建和格式化具有自定义布局的表格
  • 页面布局:添加分页符,设置页眉/页脚
  • 查找 & 替换:在整个文档中搜索和替换文本
  • 文本提取:从文档中提取纯文本内容

转换能力

  • DOCX转PDF:将Word文档转换为PDF格式
    • 使用LibreOffice/unoconv进行高质量转换
    • 如果没有外部工具,则回退到基础PDF生成
  • DOCX转图片:将文档页面转换为PNG/JPG图片
    • 配置DPI以控制质量
    • 支持多种图片格式
  • PDF操作:拆分、合并和操作PDF文件

高级特性

  • 文档元数据:跟踪创建时间、大小、作者等
  • 样式支持:字体族、大小、粗体、斜体、下划线、颜色、对齐方式
  • 多文档处理:同时处理多个文档
  • 临时文件管理:自动清理临时文件

专业模板

  • 商务信函:具有适当格式的专业通信
  • 简历:现代简历布局,包括经验、教育、技能部分
  • 报告:带有目录的技术和商业报告
  • 发票:带有明细账单的专业发票模板
  • 合同:带有签名栏的法律文档模板
  • 备忘录:公司备忘录格式
  • 通讯:多列布局用于出版物

高级文档特性

  • 目录:自动生成带有标题链接的目录
  • 图片 & 图表:嵌入图片并创建数据可视化
  • 超链接 & 书签:内部和外部链接及导航
  • 脚注 & 尾注:学术和专业引用支持
  • 评论 & 跟踪更改:文档审查的合作功能
  • 水印:机密、草稿和自定义水印
  • 邮件合并:自动化个性化文档生成
  • 自定义样式:创建并应用一致的格式主题

分析 & 审查工具

  • 文档结构分析:标题和章节的大纲视图
  • 格式分析:检测字体、样式和格式不一致
  • 高级搜索:带上下文和位置匹配的模式匹配
  • 词数统计:详细的阅读时间等指标
  • 导出选项:转换为Markdown、HTML和其他格式

💬 实际用例示例与AI助手

使用Claude Desktop

配置完成后,您可以与Claude进行自然对话:

您:"创建一个适用于我咨询业务的专业发票模板"

Claude将:
1. 创建一个新的DOCX文档
2. 添加您的公司抬头
3. 插入项目表
4. 添加付款条款和页脚
5. 保存为invoice_template.docx
您:"将我报告文件夹中的所有Word文档转换为PDF"

Claude将:
1. 列出所有DOCX文件
2. 打开每个文档
3. 转换为同名的PDF
4. 报告完成状态

使用Cursor/Windsurf

编码时,您可以生成文档:

您:"从这些TypeScript接口生成API文档并保存为Word"

AI将:
1. 解析您的代码
2. 创建一个格式化的DOCX,包括:
   - 标题和目录
   - 端点描述
   - 请求/响应示例
   - 错误代码表
3. 转换为PDF以便分发

自动化示例

# 请求您的AI:"创建一个生成月度报告的脚本"
# AI可以使用DOCX服务器来:

async def generate_monthly_report(month, year):
    # 创建文档
    doc = await mcp.call("create_document")
    
    # 添加动态内容
    await mcp.call("add_heading", {
        "document_id": doc.id,
        "text": f"月度报告 - {month} {year}",
        "level": 1
    })
    
    # 从数据库添加数据
    sales_data = fetch_sales_data(month, year)
    await mcp.call("add_table", {
        "document_id": doc.id,
        "rows": format_sales_table(sales_data)
    })
    
    # 转换为PDF并发送电子邮件
    await mcp.call("convert_to_pdf", {
        "document_id": doc.id,
        "output_path": f"reports/{year}_{month}_report.pdf"
    })

📋 前置条件

必需

  • Rust 1.70+ 和 Cargo(用于从源代码构建)
  • 兼容MCP的AI客户端(Claude Desktop、Cursor、Windsurf等)

完全可选(用于增强功能)

服务器可以独立运行,但如果可用,可以选择使用以下工具:

  • LibreOffice(推荐):用于高质量的DOCX到PDF转换

    # macOS
    brew install libreoffice
    
    # Ubuntu/Debian
    sudo apt-get install libreoffice
    
    # Windows
    # 从 https://www.libreoffice.org/ 下载
    
  • PDF到图片工具(任选其一):

    • pdftoppm(poppler-utils的一部分)