Office MCP Server 的名称和项目描述提到 Word、Excel 与 PowerPoint,但当前 0.1.0 版本真正实现的只有 Word DOCX 工具。Excel 模板克隆和 PowerPoint 创建仍在路线图中,不能用现有服务直接处理 XLSX 或 PPTX。现阶段可用的核心流程是:分析 DOCX 模板结构,让 AI 选择段落或单元格地址,再由本地引擎替换文字并保存新文件。
| 格式 | 当前状态 | 可用能力 |
|---|---|---|
| DOCX | 已实现 | 分析、读取、定址替换、模板克隆 |
| XLSX | 计划中 | 暂无已注册 MCP 工具 |
| PPTX | 计划中 | 暂无已注册 MCP 工具 |
项目依赖中出现 openpyxl 和 python-pptx,只说明开发环境包含相关库,不等于对应功能已完成。判断能力应以服务实际注册的工具和代码路径为准。
DOCX 本质上是包含 XML 文件的压缩包。该项目通过 python-docx 和 lxml 定位正文段落、表格、单元格与文本运行,只修改 w:t 文本节点,尽量不删除原有 w:p 段落节点。
这种方法能保留许多已有段落属性、表格结构和局部格式,但 README 中“格式 100% 保留”应视为项目目标,而非对任意 DOCX 的绝对保证。复杂域、内容控件、文本框、图形、修订记录和跨运行替换都需要实际测试。
运行环境要求 Python 3.10 或更高版本,并使用 uv 管理依赖:
git clone 项目仓库地址
cd office-mcp-server
uv sync
服务以 stdio 方式运行。可在 Claude Desktop 或其他 MCP 客户端配置中注册:
{
"mcpServers": {
"office-mcp-server": {
"command": "uv",
"args": [
"--directory", "/absolute/path/to/office-mcp-server",
"run", "python", "-m", "office_mcp.server"
]
}
}
}
目录应使用绝对路径。重启客户端后确认四个 Word 工具可见,再使用无敏感模板测试。
| 工具 | 用途 | 定位 |
|---|---|---|
| word_analyze | 提取段落和表格结构摘要 | 核心工具 |
| word_replace | 按地址替换文字并保存新文件 | 核心工具 |
| word_clone_template | 克隆特定表格式模板 | 兼容旧接口 |
| word_read_document | 读取普通段落和表格内容 | 兼容工具 |
调用 word_analyze 并传入源 DOCX 的绝对路径。返回结果包含非空正文段落、表格行列、单元格文本、单元格内段落数和合并信息。
{
"path": "/absolute/path/template.docx"
}
为了节省上下文,段落文本会截取前 80 个字符,单元格摘要通常截取前 60 个字符。这适合建立地址索引,却不适合把分析返回值当成完整文档备份。
p:0 表示正文中的第 0 个实际段落位置。c:0:3:0 表示第 0 张表、第 3 行、第 0 列的整个单元格。c:0:2:1:0 表示该单元格内第 0 个段落。地址使用底层文档索引,不一定等同于分析结果列表中的显示顺序。模板包含空段落或合并单元格时,应严格使用 analyze 返回的 i、r、c 和段落编号。
word_replace 接收输入路径、输出路径和 JSON 字符串形式的替换表:
{
"path": "/absolute/path/template.docx",
"output_path": "/absolute/path/output.docx",
"replacements": "{"p:0":"新标题","c:0:3:0":"第一行\n第二行"}"
}
应始终把输出写到新文件,不要覆盖唯一模板。服务会创建输出目录,但不会替你建立版本管理或回滚机制。
整个单元格替换会按换行拆分文本,清空原有文本节点,再依次填入已有段落。新内容行数多于模板段落时,代码会追加段落并复制最后一个可用段落属性;空白行则被移除。
因此,依赖空段落制造垂直间距的模板可能产生差异。输出后要检查段落数量、行距、编号和分页。
多运行段落可能含不同的加粗、下划线或字体。通用替换会按原运行长度比例分配新文字,也允许通过 fmt_hints 指定某段文字应保留下划线等格式。
{
"_fmt:p:1": {
"runs": [
{"text": "中一", "underline": true}
]
}
}
比例分配只是启发式规则。当新旧文本长度差异很大时,格式边界可能落在错误位置,必须人工核对。
word_clone_template 针对标题、日期、主题和过程记录等固定表格模板保留兼容。它把这些字段映射到预设段落和单元格地址,适合与原示例结构一致的教研记录类文档。
新的通用模板应优先使用 analyze 加 replace。旧工具的固定地址若遇到不同模板,很可能改错位置。
服务在本地解析 DOCX,只向 AI 返回压缩后的结构索引;AI 输出的主要是替换地址和新文字,实际 XML 修改也在本地完成。这通常比把整个 DOCX XML 交给模型更节省上下文。
README 中的 99% Token 节省来自项目给出的特定估算,不是所有模板和模型的统一结果。应记录自己的分析返回大小、提示长度和批处理次数再评估成本。
MCP 工具可以读取任意传入路径,并可在指定位置创建文件。客户端模型还会看到 analyze 返回的文档摘要。因此“本地修改”不代表内容一定不会发送给模型服务。
| 检查项 | 重点 |
|---|---|
| 文字 | 目标地址全部替换,非目标内容未变化 |
| 格式 | 字体、加粗、下划线、颜色和段落样式 |
| 表格 | 合并单元格、列宽、行高和边框 |
| 分页 | 页眉页脚、分页符和段落溢出 |
| 结构 | Word 能正常打开并再次保存 |
| 差异 | 解包 DOCX 后确认只改变预期 XML |
Office MCP Server 当前适合自动化 Word 模板克隆,而不是同时克隆 Word、Excel 和 PowerPoint。可靠流程是先分析地址、只写新文件、精确替换并对输出做视觉和结构检查;XLSX 与 PPTX 应等待项目提供真实工具后再采用。