office-mcp-server

office-mcp-server

MCP server for Office document automation, enabling AI assistants to create, read, and clone Word/Excel/PPT templates while preserving formatting.

Category
访问服务器

README

Office MCP Server

License: MIT Python 3.10+ MCP Token Savings

通用 Office 文档 MCP Server —— 基于 AI 助手创建、读取、克隆 Word/Excel/PPT 文档,格式100%保留。

🎯 核心能力:通用模板克隆 —— 扔进任意 .docx 模板,AI 自动识别结构、替换内容,所有格式原样保留。适用于会议纪要、教案、周报、报告等一切重复性文档场景。

💰 极致 Token 效率 —— 本地分析文档结构,只返回摘要给 AI,节省 99% Token 消耗,大幅降低 API 成本。


✨ 特性

💰 极致 Token 效率

  • 本地分析 —— 文档结构在本地解析,只返回摘要给 AI(500 tokens vs 50,000+ tokens)
  • 本地替换 —— 文本替换在本地执行,不消耗 AI Token
  • 节省 99% —— 相比传统方案(AI 读取整个 XML),Token 消耗降低 99%
  • 批量友好 —— 处理 100 个文档仅需 70K tokens(传统方案需要 6.5M tokens)

📝 Word 文档(已实现)

  • 通用分析 —— word_analyze 自动识别任意 Word 文档的段落+表格结构
  • 通用替换 —— word_replace 接受替换字典,3 层寻址覆盖所有文档类型
  • 格式 100% 保留 —— 只替换 <w:t> 文本,不碰 <w:p> 段落元素
  • Run 级格式 —— 支持下划线、加粗等局部格式保留(如标题"中一"下划线)
  • 单元格批量替换 —— 用 \n 分隔多行,自动映射到单元格段落
  • 兼容旧 API —— word_clone_template 仍可使用

📊 Excel 文档(计划中)

  • 🔜 读取单元格、公式
  • 🔜 克隆 Excel 模板

📽️ PowerPoint(计划中)

  • 🔜 创建演示文稿
  • 🔜 克隆 PPT 模板

🚀 快速开始

安装

git clone https://github.com/chunleiding/office-mcp-server.git
cd office-mcp-server
uv sync

配置 MCP

~/.workbuddy/mcp.json 或 Claude Desktop 配置中添加:

{
  "mcpServers": {
    "office-mcp-server": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/office-mcp-server",
        "run", "python", "-m", "office_mcp.server"
      ]
    }
  }
}

🛠️ 工具参考

核心工具

word_analyze —— 分析文档结构

输入任意 Word 文档,返回文本索引(段落 + 单元格),供 AI 选择替换目标。

{
  "path": "/path/to/template.docx"
}

返回示例:

{
  "paras": [
    {"i": 0, "t": "健康活动:小毛毛虫去旅行(屈身爬)", "s": "标题 1"},
    {"i": 2, "t": "1.初步掌握身体拱起...", "s": "Normal"}
  ],
  "tables": [
    {
      "i": 0, "rows": 4, "cols": 10,
      "cells": [
        {"r": 0, "c": 1, "txt": "2026年5月28日", "pn": 1},
        {"r": 3, "c": 0, "txt": "一、本周回顾...", "pn": 37}
      ],
      "merge": [{"r": 3, "c": 0, "rs": 1, "cs": 10}]
    }
  ]
}

word_replace —— 通用文本替换

接受替换字典,支持 3 层寻址:

寻址格式 含义 示例
p:{i} 正文段落 "p:0": "新标题"
c:{t}:{r}:{c} 整个单元格(自动按行映射) "c:0:3:0": "行1\n行2\n行3"
c:{t}:{r}:{c}:{p} 单元格内特定段落 "c:0:2:1:0": "新主题"
{
  "path": "/path/to/template.docx",
  "output_path": "/path/to/output.docx",
  "replacements": "{\"p:0\": \"新标题\", \"c:0:3:0\": \"一、背景\\n二、分析\"}",
  "fmt_hints": "{\"_fmt:p:1\": {\"runs\": [{\"text\": \"中一\", \"underline\": true}]}}"
}

fmt_hints 格式提示(可选):用于保留 Run 级格式(如下划线),AI 只在需要时才使用。


兼容工具

word_clone_template —— 表格式模板克隆(旧 API)

保留兼容,适用于"教研记录"类表格式模板:

{
  "template_path": "/path/to/template.docx",
  "output_path": "/path/to/output.docx",
  "title": "中一班教研记录",
  "date": "2026年6月5日 星期五 下午",
  "main_topic": "幼儿吃饭不积极问题研讨",
  "process_record": "一、研讨背景\n..."
}

长文本可使用 process_record_file 参数指定文件路径。

word_read_document —— 读取文档内容

{
  "document_path": "/path/to/document.docx"
}

💰 Token 效率对比

痛点:传统方案的成本黑洞

传统方式让 AI 直接操作 Word 文档,需要:

  1. 读取整个 docx(XML 格式)→ ~50,000 tokens
  2. AI 理解文档结构 → ~10,000 tokens
  3. 生成修改方案 → ~5,000 tokens
  4. 总计:~65,000 tokens/次

按 GPT-4 价格($3/1M input, $15/1M output)计算:

  • 单次成本:$0.195
  • 批量处理 100 个文档:$19.5

解决方案:office-mcp-server

使用 MCP 协议,文档处理在本地完成:

  1. word_analyze 本地分析,只返回摘要 → ~500 tokens
  2. word_replace 本地执行替换,不消耗 Token → ~200 tokens
  3. 总计:~700 tokens/次
  • 单次成本:$0.0021
  • 批量处理 100 个文档:$0.21
  • 节省:98.9% 成本!

详细对比表

操作 传统方式 Token MCP 方式 Token 节省比例 成本节省
读取文档 50,000 500 99.0% $0.149 → $0.0015
替换变量 65,000 700 98.9% $0.195 → $0.0021
批量处理 100 个 6,500,000 70,000 98.9% $19.5 → $0.21
每日 1000 次操作 65,000,000 700,000 98.9% $195 → $2.1

为什么能这么高效?

MCP 设计原则:数据本地处理,上送 LLM 只摘要

  1. 本地分析word_analyze 在本地解析 docx XML,提取结构化摘要
  2. 摘要上送:只返回段落索引 + 前 50 字符,不发送原始 XML
  3. 本地执行word_replace 在本地执行替换,AI 只发送替换字典
  4. 零冗余:AI 不需要读取/生成整个文档,只处理差异部分

🏗️ 架构

office-mcp-server/
├── src/office_mcp/
│   ├── server.py              # FastMCP 入口(2核心 + 2兼容工具)
│   └── word/
│       ├── engine.py          # 通用 Word 文档引擎(核心)
│       └── table_parser.py    # 表格格式解析
└── tests/

核心设计

通用引擎 engine.py

  • analyze() —— 提取文档文本索引
  • replace_text() —— 通用替换,3 层寻址
  • clone_word_template() —— 旧 API 兼容层

格式保留原理

  1. 只替换 <w:t> XML 文本节点
  2. 不增删任何 <w:p> 段落元素
  3. 段落间距由模板 <w:pPr> 控制,不受内容空行干扰
  4. 单元格替换自动按行映射,超出部分追加新段落并复制末段 pPr

🗺️ 路线图

阶段 功能 状态
1 Word 通用引擎 + 模板克隆 ✅ 已完成
2 Excel 支持 🔜 计划中
3 PPT 支持 🔜 计划中
4 跨格式批量操作 💡 未来

📋 依赖

  • Python 3.10+
  • FastMCP >= 2.0.0
  • python-docx >= 1.2.0
  • lxml >= 5.0.0
  • openpyxl >= 3.1.0(Excel,计划中)
  • python-pptx >= 1.0.0(PPT,计划中)

📄 许可证

MIT License — 详见 LICENSE

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选