如何让 AI 直接处理当前打开的 Word 文档
痛点:AI 和 Word 之间有一堵墙
做国土咨询最烦的是什么?改报告。
传统流程:把 docx 丢给 AI → AI 生成/修改 → 导出文件 → 打开看 → 发现不够满意 → 改 prompt → 重复。
有没有办法让 AI 直接操作你 WPS/Word 里正在编辑的文档,实时看到修改效果?
有。word-mcp-live。
什么是 word-mcp-live
word-mcp-live 是一个 MCP 服务器,让 AI 通过 MCP 协议直接控制 Microsoft Word(以及 WPS,因为它实现了 Word 的 COM 接口)。
核心能力:
- 文档打开状态下实时编辑:不需要保存-关闭-处理-重新打开
- 跟踪更改(Track Changes):用你的名字做修订,Ctrl+Z 随时撤回
- 批注和线程回复:像人类审阅者一样添加、回复、解决批注
- 共 120 个工具:涵盖文本操作、格式、表格、页眉页脚、书签、交叉引用、公式、水印等
安装
环境要求
- Windows 10/11
- Python 3.11+
- Microsoft Word 或 WPS(已安装)
- mcporter CLI(已有)
安装步骤
# 使用系统 Python 安装(避开 QClaw 的 pip shim 编码问题)
& "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\python.exe" -m pip install word-mcp-live --user
安装完成后会在 C:\Users\Administrator\AppData\Roaming\Python\Python311\Scripts\ 下生成 word_mcp_server.exe。
配置 mcporter
word-mcp-live 支持两种传输模式:
- stdio:标准输入输出(在 QClaw 环境下容易断连,不推荐)
- SSE:HTTP 长连接(推荐,兼容 WPS,稳定性好)
配置文件路径:C:\Users\Administrator\.qclaw\workspace\config\mcporter.json
{
"mcpServers": {
"word-mcp-live": {
"baseUrl": "http://127.0.0.1:8765/sse"
}
}
}
启动 SSE 服务
不能通过 mcporter 启动 SSE 模式(mcporter 对 FastMCP SSE 的支持有限),需要手动启动守护进程:
$env:MCP_TRANSPORT = 'sse'
$env:MCP_HOST = '127.0.0.1'
$env:MCP_PORT = '8765'
$env:MCP_AUTHOR = '王帅'
$env:MCP_AUTHOR_INITIALS = 'WS'
Start-Process -FilePath "C:\Users\Administrator\AppData\Roaming\Python\Python311\Scripts\word_mcp_server.exe" -WindowStyle Hidden
环境变量说明:
| 变量 | 默认值 | 说明 |
|---|---|---|
MCP_TRANSPORT |
stdio |
传输模式,推荐 sse |
MCP_HOST |
0.0.0.0 |
SSE 绑定地址 |
MCP_PORT |
8000 |
SSE 端口 |
MCP_AUTHOR |
"Author" |
跟踪更改和批注的作者名 |
MCP_AUTHOR_INITIALS |
"" |
批注作者缩写 |
两种工作模式
word-mcp-live 的工具分两类:
1. 跨平台模式(python-docx)
- 操作已保存的
.docx文件 - 不需要 Word/WPS 打开
- 适合批量处理、文档生成
- 工具名不带
word_live_前缀,如add_paragraph、search_and_replace、add_table
# 示例:创建新文档
mcporter call word-mcp-live.create_document filename="C:\test.docx" title="测试文档" author="王帅"
# 示例:查找替换(跨平台)
mcporter call word-mcp-live.search_and_replace filename="C:\test.docx" find_text="旧文本" replace_text="新文本"
2. 实时模式(COM 自动化,仅 Windows)
- 操作 Word/WPS 中正在打开的文档
- 修改实时可见
- 每一步都可 Ctrl+Z 撤回
- 工具名带
word_live_前缀
# 示例:在已打开的文档末尾插入文本
mcporter call word-mcp-live.word_live_insert_text text="这是AI实时写入的内容" position="end"
# 示例:查找并替换(带跟踪更改)
mcporter call word-mcp-live.word_live_replace_text find_text="河津市" replace_text="河津市(测试)" track_changes=true
常用工具速查
文档操作
| 工具 | 说明 |
|---|---|
word_live_list_open |
列出所有打开的文档 |
word_live_get_text |
读取文档文本(默认前3页) |
word_live_get_page_text |
读取指定页 |
word_live_get_info |
文档元信息(页数/字数/段数/表数) |
word_live_save |
保存文档 |
word_live_undo |
撤销操作(可指定次数) |
文本编辑
| 工具 | 说明 |
|---|---|
word_live_insert_text |
在指定位置插入文本 |
word_live_replace_text |
查找替换(支持通配符、跟踪更改) |
word_live_find_text |
查找文本,返回位置和上下文 |
word_live_insert_paragraphs |
在指定段落前后插入段落 |
word_live_delete_text |
删除文本 |
格式
| 工具 | 说明 |
|---|---|
word_live_format_text |
设置字体/字号/颜色/加粗/高亮/样式等 |
word_live_get_paragraph_format |
读取段落格式 |
word_live_set_paragraph_spacing |
设置段落间距 |
word_live_set_page_layout |
页面布局(方向/尺寸) |
批注和修订
| 工具 | 说明 |
|---|---|
word_live_add_comment |
添加批注 |
word_live_get_comments |
列出批注 |
word_live_reply_to_comment |
回复批注 |
word_live_resolve_comment |
解决/取消解决批注 |
word_live_delete_comment |
删除批注 |
word_live_list_revisions |
列出修订 |
word_live_accept_revisions |
接受修订 |
word_live_reject_revisions |
拒绝修订 |
word_live_toggle_track_changes |
开关跟踪更改 |
表格
| 工具 | 说明 |
|---|---|
word_live_add_table |
插入表格 |
word_live_format_table |
格式化表格(边框/对齐/列宽) |
word_live_modify_table |
修改表格(增删行列/合并单元格) |
其他
| 工具 | 说明 |
|---|---|
word_live_add_bookmark |
添加书签 |
word_live_insert_cross_reference |
插入交叉引用 |
word_live_insert_equation |
插入公式 |
word_live_add_header_footer |
添加页眉页脚 |
word_live_add_page_numbers |
添加页码 |
word_live_add_watermark |
添加水印 |
word_live_diagnose_layout |
布局诊断 |
word_screen_capture |
截取文档窗口截图 |
实测结果
测试环境:Windows 11 + WPS Office + Python 3.11.2
测试文档:A磋商文件(93页,2008段落,14张表)
| 功能 | 结果 | 备注 |
|---|---|---|
| 文档检测 | ✅ | 正确识别 WPS 打开的文档 |
| 文本读取 | ✅ | 分页返回,2008段落完整 |
| 文本插入 | ✅ | WPS 中实时可见 |
| 文本查找 | ✅ | 21处匹配,带上下文 |
| 文本替换 | ✅ | 7处全部替换 |
| 撤销操作 | ✅ | 单步+批量均正常 |
| 跟踪更改 | ✅ | 开关正常 |
| 批注写入 | ✅ | 作者「王帅」正确 |
| 批注读取 | ⚠️ | WPS 报错 <unknown>.Comments,疑似 COM 兼容问题 |
| 文档信息 | ✅ | 93页/40028字/2008段/14表 |
| 段落格式 | ✅ | 字号/字体/对齐/加粗均可读取 |
| 表格插入 | ⚠️ | mcporter 传数组参数有 PowerShell 转义坑 |
| 布局诊断 | ❌ | 93页太慢超时,建议指定页面范围 |
| 页码定位 | ⚠️ | find_text 只返回字符位置,不能直接映射页码。字符不均分布,计算推算是坑。必须逐页确认 |
已知问题与避坑
1. mcporter 数组参数传参(重要)
word_live_add_table 的 data 参数是二维数组。mcporter CLI 在 PowerShell 下传 JSON 数组有坑,引号被 PowerShell 吃掉。
解决方案:用 --args-from-file 传 JSON 文件:
# 1. 写一个 JSON 文件
@'
{"rows":3,"cols":4,"position":"end","data":["姓名","电话","邮箱","备注","张三","138xxxx","[email protected]","","李四","139xxxx","[email protected]",""]}
'@ | Out-File -FilePath args.json -Encoding utf8
# 2. 从文件传参
mcporter call word-mcp-live.word_live_add_table --args-from-file args.json
2. 不要并发调用
SSE 模式下同时发多个请求会导致响应拥堵甚至超时。串行调用,一个一个来。
3. WPS 兼容性
word-mcp-live 基于 Word COM 接口开发,WPS 因为实现了同样的 COM 接口所以大部分工具能用。但个别工具(如 get_comments)报 COM 对象名不一致的问题,add_comment 则完全正常。
4. 大文档性能
93页的布局诊断(word_live_diagnose_layout)会超时。建议:
- 大文档操作时指定页面范围
- 布局诊断只查关键页
5. 并发丢弃
mcporter 内部对同一服务器的并发连接有限制,多个长调用会互相阻塞。超过60秒会掉线,重调即可。
6. 页码推算不可靠(重要)
不能用 总字符数 ÷ 总页数 × 字符位置 推算页码。文档内容不是均匀分布的——报价函模板一页只有 300 字符,正文一页可能有 600+,尾页可能全是空白。用 word_live_find_text 获取字符位置后,必须再调 word_live_get_page_text 逐个页码确认,不能凭计算猜。
翻车案例:根据 42199÷93≈453 字符/页推算「我方承诺已经具备」在 92 页,实际读了 71 页才发现它就在那里。
7. 大文档远端页不要急着杀进程
读取大文档末尾页面(如 93 页文档的 91/92 页)时,如果页面包含表格、修订标记、特殊格式,WPS COM 渲染会很慢。60 秒超时是正常等待,不是挂了。把 timeout 拉到 120 秒以上,别急着 kill。 误杀之后重试反而更慢(SSE 连接重建 + COM 重新初始化)。
实战场景
场景1:评审意见修改
"帮我用跟踪更改,把这个文件里所有的'供应商'改成'投标人',然后给第三条评标标准加个批注问是否需要引用最新政策"
→ 一次性完成:全文档替换 + 批注添加,WPS 里实时看到红色修订标记和右侧批注。
场景2:格式统一
"把正文所有一级标题设为三号黑体加粗居中,二级标题设为四号宋体加粗,段前段后各6磅"
→ 遍历所有标题样式段落,统一修改格式。
场景3:报告数据提取
"读取这个磋商文件的预算金额、履约期限和资质条件要求,整理成表格放在文档末尾"
→ 先 word_live_find_text 定位关键信息,再 word_live_add_table 插入汇总表。
场景4:批量替换项目名称
"把文档里所有的'河津市自然资源局2026年度国土空间总体规划动态维护工作项目'替换为'XX县国土空间规划动态维护项目',用跟踪更改"
→ 一次调用,全文档替换+修订标记。
场景5:文档审阅
"审阅这份报告,给有疑问的地方加批注,把明显的格式错误做标记"
→ AI 先读全文,逐个加批注,人类审阅者在 WPS 里直接看到批注并回复。
总结
word-mcp-live 把 AI 的能力延伸到了 Word/WPS 的实时编辑层。对国土行业来说,最核心的价值在于:
- 节省来回切换时间:AI 直接在文档里干活,你看着就行
- 跟踪更改可控:每次修改都是可审计的修订,不满意就 Ctrl+Z
- 批注即沟通:AI 对文档内容的疑问直接以批注形式留在文档里,和人类同事的批注混在一起,统一处理
唯一的依赖是电脑上得开着一个 SSE 守护进程。建议写个启动脚本放到开机自启里。
关于 word-mcp-live 操作 Word 表格——踩坑与正解
背景
写标书时遇到大量表格要填:人员汇总表、简历表、业绩表……每张表少则十几格,多则几十格。手工填?太慢。让 word-mcp-live 来?
坑一:replace_text + \t 分隔符
思路
Word 表格中,按 Tab 键可以跳到下一个单元格。所以我想当然地用 replace_text 把一行数据用 \t 拼接,一次性写入:
word_live_replace_text({
"find_text": "项目成员",
"replace_text": "技术负责人\t廖宣淇\t工程师\t信息管理与信息系统\t工程师\t中级\t129315141",
"track_changes": false
})
实际效果
时灵时不灵。
| 场景 | 结果 |
|---|---|
| 17页简历表(6列,简单结构) | 部分生效,部分挤在同一格 |
| 16页汇总表(9列,复杂表头) | 全部挤在一个单元格里 |
| 多次测试 | 行为不可预测,无法依赖 |
原因分析
replace_text 底层是用 Word COM 的 Find.Execute + Replacement.Text 实现的。在替换文本中插入 \t(制表符),Word 的行为取决于当前光标位置和表格结构——有时解释为「跳到下一格」,有时解释为「在当前格插入一个制表符」。这不是 bug,是 Word COM 本身的设计。
坑二:insert_text 也不行
word_live_insert_text 只能在文档末尾或光标处插入文本,不能定位到表格的指定单元格。参数也不支持 near_text 之类的锚点。
更深的问题:SSE 服务卡死
进一步测试发现,word_live_insert_text 的 position 参数只支持字符串 'cursor' 和 'end':
position='cursor'→ ✅ 成功(但需手动定位光标,批量填空不现实)position={'type':'char','start':134}→ ❌ 服务卡死position=134(整数)→ ❌ 服务卡死position='start'+start=134→ ❌ 服务卡死word_live_find_text→ ❌ 服务卡死word_live_track_insert(after_text锚点)→ ❌ 工具不存在
每次卡死需要 taskkill /F /IM word_mcp_server.exe + 重启服务。replace_text 能工作但会改变原有空格格式,不是真正的插入。
正解一:COM 直连文本插入(com_insert.py)
绕过 SSE 服务,用 pywin32 直连 WPS/Word COM 接口,实现真正的文本插入。
核心代码
import win32com.client
def _get_word_app():
for progid in ['KWPS.Application', 'Word.Application']:
try:
return win32com.client.GetActiveObject(progid)
except:
pass
raise RuntimeError('找不到运行的 WPS 或 Word 实例')
def insert_text_at_pos(para_index, char_pos, text):
"""在指定段落的 char_pos 位置(0-based)插入文字,不影响格式"""
app = _get_word_app()
doc = app.ActiveDocument
para = doc.Paragraphs(para_index)
abs_pos = para.Range.Start + char_pos
insert_rng = doc.Range(abs_pos, abs_pos)
insert_rng.InsertBefore(text)
return True
CLI 用法
$py = "C:\Users\ZhuanZ\AppData\Local\Programs\Python\Python312\python.exe"
$script = "E:\王帅工作\0、标书\.workbuddy\scripts\com_insert.py"
& $py $script read 12 # 读第12段
& $py $script insert 12 10 "山西金辉土地资产评估有限公司" # 第12段pos 10插入
& $py $script after "供应商:" "山西金辉土地资产评估有限公司" # 锚点后插入
实测效果
原文: 供应商: (加盖公章)
插入后: 供应商: 山西金辉土地资产评估有限公司 (加盖公章)
pos 10 插入公司名,前6个空格保留,后11个空格保留。真正的插入,不改格式。
⚠️ Python 环境:QClaw 自带 Python 无 pywin32,需用
C:\Users\ZhuanZ\AppData\Local\Programs\Python\Python312\python.exe。
正解二:modify_table + set_cell
工具:word_live_modify_table
这是 word-mcp-live 专门为表格操作设计的工具,支持以下操作:
get_info, set_cell, set_row, set_range,
add_column, delete_column, add_row, delete_row,
merge_cells, autofit, delete_table
关键参数
| 参数 | 说明 | 注意事项 |
|---|---|---|
table_index |
表格序号(1-based) | 不是页码,是全文第几张表 |
operation |
操作类型 | 填 "set_cell" |
row |
行号(1-based) | Word COM 标准,从1开始 |
col |
列号(1-based) | 同上 |
text |
要写入的文本 | 空字符串清空单元格 |
单格写入示例
word_live_modify_table({
"table_index": 6,
"operation": "set_cell",
"row": 4,
"col": 3,
"text": "廖宣淇",
"track_changes": false
})
批量写入脚本
填一张表要几十个单元格,一个个调太慢。写了个批量脚本:
"""批量填表:一次性发送所有 set_cell 请求"""
import socket, re, json, select, time, sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
# 所有要填的单元格:(行, 列, 文本)
cells = [
# 第3行 = 姓名1
(3, 4, "高级工程师"),
(3, 6, "国土空间规划高级工程师"),
(3, 7, "高级"),
(3, 8, "2414000902820015"),
# 第4行 = 姓名2
(4, 2, "技术负责人"),
(4, 3, "姓名2"),
(4, 4, "工程师"),
(4, 5, "信息管理与信息系统"),
(4, 6, "工程师"),
(4, 7, "中级"),
(4, 8, "129315141"),
# ... 更多行
]
# 连接 word-mcp-live SSE
sse = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sse.settimeout(30)
sse.connect(('127.0.0.1', 8765))
sse.sendall(b'GET /sse HTTP/1.1\r\nHost: 127.0.0.1:8765\r\nConnection: keep-alive\r\n\r\n')
# 获取 session_id
data = b''
sid = None
while not sid:
chunk = sse.recv(4096)
m = re.search(r'session_id=([a-f0-9]+)', chunk.decode('utf-8', errors='replace'))
if m: sid = m.group(1)
# MCP initialize
def post(method, params, rid):
body = json.dumps({'jsonrpc':'2.0','id':rid,'method':method,'params':params})
p = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
p.connect(('127.0.0.1', 8765))
p.sendall(f'POST /messages/?session_id={sid} HTTP/1.1\r\nHost: 127.0.0.1:8765\r\nContent-Type: application/json\r\nContent-Length: {len(body)}\r\nConnection: close\r\n\r\n{body}'.encode())
p.close()
post('initialize', {'protocolVersion':'2024-11-05','capabilities':{},'clientInfo':{'name':'fill-tool','version':'1.0'}}, 1)
time.sleep(0.5)
# 批量发送 set_cell
for i, (row, col, text) in enumerate(cells):
post('tools/call', {
'name': 'word_live_modify_table',
'arguments': {'table_index': 6, 'operation': 'set_cell', 'row': row, 'col': col, 'text': text}
}, i + 10)
time.sleep(0.15) # 避免请求过快
# 等待并收集所有响应
time.sleep(3)
all_data = b''
deadline = time.time() + 10
while time.time() < deadline:
r, _, _ = select.select([sse], [], [], 0.5)
if r:
chunk = sse.recv(65536)
if chunk: all_data += chunk
else: break
sse.close()
# 统计结果
success = fail = 0
for line in all_data.decode('utf-8', errors='replace').split('\n'):
if line.startswith('data:') and '{' in line:
try:
obj = json.loads(line[5:].strip())
if 'result' in obj:
inner = json.loads(obj['result']['content'][0]['text'])
if inner.get('success'): success += 1
else: fail += 1
except: pass
print(f"Done: {success} success, {fail} fail out of {len(cells)} cells")
实测结果
Sent 41 set_cell requests
Done: 41 success, 0 fail out of 41 cells
41个单元格全部成功,0失败。切到 WPS 看,数据全部到位。
如何找到正确的 table_index
table_index 是全文第几张表(1-based),不是页码。用 get_info 遍历:
for i in range(1, 20):
result = word_live_modify_table({"table_index": i, "operation": "get_info"})
# result 返回 rows, cols, data(二维数组)
# 通过 data 内容判断哪张表是你要填的
示例输出:
Table 6: 17行×9列,表头是「序号|本项目任职|姓名|职称|专业|...」→ 这是人员汇总表
Table 7: 16行×6列,表头是「姓名|侯秀秀|年龄|34|证书名称|...」→ 这是简历表
其他有用的表格操作
| 操作 | 参数 | 用途 |
|---|---|---|
set_row |
cells: ["1", "项目负责人", "姓名1", ...] |
一次填一整行 |
set_range |
cells: [[...], [...]], start_row, start_col |
批量填矩形区域 |
add_row |
before_row: 5, cells: [...] |
插入新行并填数据 |
delete_row |
row: 10 |
删除空行 |
autofit |
autofit_mode: "content" |
自动调整列宽 |
merge_cells |
start_row, start_col, end_row, end_col |
合并单元格 |
总结
| 方法 | 可靠性 | 适用场景 |
|---|---|---|
replace_text + \t |
❌ 不可靠 | 不推荐用于表格 |
insert_text |
❌ 不能定位 | 仅末尾追加 |
modify_table + set_cell |
✅ 100%可靠 | 填表首选 |
modify_table + set_row |
✅ 可靠 | 整行写入更快 |
modify_table + set_range |
✅ 可靠 | 批量矩形区域 |
一句话:填 Word 表格,永远用 modify_table + set_cell,别碰 replace_text。
能力边界:word-mcp-live 能"看"文档中的图片吗?
直接结论:不能
word-mcp-live 的工具集中,没有提取或识别文档内嵌图片的能力。
相关工具分析
| 工具 | 能力 | 能"看"图片? | 说明 |
|---|---|---|---|
word_live_insert_image |
向文档插入图片 | ❌ | 只能写,不能读 |
word_screen_capture |
截取当前Word窗口存为PNG | ⚠️ | 间接——截图后AI可以看到屏幕上显示的内容 |
get_document_text |
提取文档纯文本 | ❌ | 图片中的文字(即使是扫描件上的)不会被提取 |
get_document_xml |
读取XML结构 | ❌ | XML中只有 <w:drawing> 引用,不含像素数据 |
这意味着什么
在实际使用中,有一个明显的盲区:
AI 可以往文档里放图片(插入营业执照、资质证书、签字扫描件),但看不到已经在文档里的图片是什么。
举个例子:你说"我已经把资质证书放到了第8页",AI 无法直接验证那个图片是不是城乡规划乙级资质证书、证书编号对不对、是否在有效期内。AI 只能通过文字上下文推断。
补救方案
方案A:截图法
word_screen_capture({"output_path": "C:\\temp\\page8.png"})
→ AI 读取截图,间接"看"到图片内容。但这是整个窗口的截图,需要你在WPS翻到目标页面。
方案B:提取法(推荐)
# 直接解压 docx,从 word/media/ 目录提取所有内嵌图片
import zipfile, os
with zipfile.ZipFile('金辉.docx', 'r') as z:
for name in z.namelist():
if name.startswith('word/media/'):
z.extract(name, 'extracted_images/')
# 然后用 AI 的图片识别能力逐个分析
→ 把docx里的图片文件全部抽出来,AI直接读取图片内容进行分析。
方案C:文本法
直接用 get_document_text 读该页的文字,如果是扫描件附的说明文字或表格,可能已经在文字中体现了关键信息。
实际影响
在标书审阅场景中,AI 能审查的是:
- ✅ 文字内容(段落、表格)
- ✅ 文档结构(标题、页码、段数)
- ⚠️ 图片(需要截图或提取后才能看)
- ❌ 图片中的细节点(非嵌入不可见)
所以目前 AI 对标书的审查存在一个边界:文本层全覆盖,图形层需额外操作。如果你放的资质证书、业绩合同扫描件、身份证等都是图片而不是文字,AI 必须走截图或提取路线才能"看"到它们。
附录:word-mcp-live v3.4.2 全部 120 个工具速查
通过 MCP 协议
tools/list方法实时拉取,非人工整理。按功能分类排列。
一、实时模式工具(word_live_ 前缀,Windows COM,48个)
操作 Word/WPS 中正在打开的文档,修改实时可见,每步可 Ctrl+Z 撤回。
1. 文档信息与读取(7个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
word_live_list_open |
列出所有打开的文档(名称、路径、页数、保存状态) | 无 |
word_live_get_info |
文档元信息(页数/字数/段数/表数/节数) | filename |
word_live_get_text |
读取全文段落(大文档自动返回前3页) | filename |
word_live_get_page_text |
按页码读取段落,返回带 index/char_start/char_end |
filename, page, end_page |
word_live_get_paragraph_format |
按段落索引读取格式(字体/字号/对齐/间距/列表/高亮等) | filename, start_paragraph, end_paragraph, include_runs |
word_live_get_diff |
对比快照,返回变更的段落(新增/修改/删除) | filename |
word_live_get_undo_history |
获取撤销栈(MCP 操作作为命名条目) | filename |
2. 文本编辑(6个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
word_live_insert_text |
在指定位置插入文本(start/end/cursor/书签) | filename, text, position, bookmark, track_changes |
word_live_insert_paragraphs |
在目标段落前后插入多个段落(按文本或段索引定位) | filename, paragraphs, target_text, target_paragraph_index, position, style |
word_live_delete_text |
按字符位置删除文本 | filename, start, end, track_changes |
word_live_replace_text |
查找替换(支持通配符 m/t/p/s、跟踪更改) | filename, find_text, replace_text, match_case, match_whole_word, use_wildcards, replace_all, track_changes |
word_live_find_text |
搜索文本,返回位置和上下文(支持通配符) | filename, search_text, match_case, whole_word, use_wildcards, context_chars, max_results |
word_live_format_text |
格式化文本(字体/字号/颜色/高亮/样式/对齐/分页/删除线) | filename, start, end, start_paragraph, end_paragraph, bold, italic, font_name, font_size, font_color, highlight_color, style_name, paragraph_alignment, page_break_before, track_changes |
3. 段落格式与列表(3个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
word_live_set_paragraph_spacing |
设置段落间距/行距/对齐/段后分页/与下段同页 | filename, start_paragraph, end_paragraph, space_before_pt, space_after_pt, line_spacing, line_spacing_rule, keep_with_next, keep_together, alignment |
word_live_apply_list |
应用/移除项目符号、编号、多级列表 | filename, start_paragraph, end_paragraph, list_type, level, remove, continue_previous, number_format, number_style, start_at, level_map, track_changes |
word_live_setup_heading_numbering |
设置多级标题自动编号(1. / 1.1 格式) | filename, h1_paragraphs, h2_paragraphs, heading_map, strip_manual_numbers, h1_number_format, h2_number_format, font_name, h1_size, h2_size, bold, alignment |
4. 表格操作(2个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
word_live_add_table |
插入表格(可选数据、样式、自动适应) | filename, rows, cols, position, data, style, autofit, track_changes |
word_live_modify_table |
修改表格:get_info/set_cell/set_row/set_range/add_column/delete_column/add_row/delete_row/merge_cells/autofit/delete_table | filename, table_index, operation, row, col, text, before_row, before_col, header, cells, start_row, start_col, end_row, end_col, autofit_mode, accept_revisions, track_changes |
word_live_format_table |
格式化表格(边框/加粗/对齐/列宽/底纹/自动适应) | filename, table_index, border_style, cell_bold, cell_alignment, column_widths, table_alignment, cell_shading, autofit |
5. 批注与修订(8个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
word_live_add_comment |
添加批注(按字符位置或段落索引) | filename, start, end, paragraph_index, text, author |
word_live_get_comments |
获取所有批注 | filename |
word_live_reply_to_comment |
回复批注(线程回复) | filename, comment_index, text, author |
word_live_resolve_comment |
解决/取消解决批注 | filename, comment_index, resolve |
word_live_delete_comment |
删除批注 | filename, comment_index |
word_live_toggle_track_changes |
开关跟踪更改模式 | filename, enable |
word_live_list_revisions |
列出所有修订 | filename |
word_live_accept_revisions |
接受修订(可按作者/ID过滤) | filename, author, revision_ids |
word_live_reject_revisions |
拒绝修订(可按作者/ID过滤) | filename, author, revision_ids |
6. 页面与布局(4个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
word_live_set_page_layout |
页面布局(方向/尺寸/页边距) | filename, section_index, orientation, page_width_inches, page_height_inches, margin_top_inches, margin_bottom_inches, margin_left_inches, margin_right_inches |
word_live_add_section_break |
插入分节符(new_page/continuous/even_page/odd_page) | filename, break_type |
word_live_add_header_footer |
添加页眉/页脚 | filename, section_index, header_text, footer_text, header_alignment, footer_alignment |
word_live_add_page_numbers |
添加页码(PAGE/NUMPAGES 域) | filename, section_index, position, alignment, prefix, suffix, include_total |
7. 高级功能(10个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
word_live_add_bookmark |
添加书签(1-indexed 段落) | filename, paragraph_index, bookmark_name |
word_live_insert_cross_reference |
插入交叉引用(标题/书签/图表/表格/公式/脚注/尾注) | filename, ref_type, ref_item, ref_kind, insert_position, paragraph_index, insert_as_hyperlink |
word_live_list_cross_reference_items |
列出可引用的目标 | filename, ref_type |
word_live_insert_equation |
插入数学公式(UnicodeMath 语法) | filename, equation, paragraph_index, position, display_mode |
word_live_insert_image |
插入图片(按段落/位置/尺寸/对齐/环绕/边框) | filename, image_path, paragraph_index, position, width_inches, height_inches, alignment, wrapping, border_style, border_color |
word_live_add_watermark |
添加水印 | filename, text, font_size, font_color, rotation, section_index |
word_live_save |
保存文档(可另存为) | filename, save_as |
word_live_undo |
撤销操作(每次 MCP 调用 = 1个撤销条目) | filename, times |
word_live_set_core_properties |
设置文档属性(标题/作者/关键词/公司等) | filename, title, subject, author, keywords, comments, category, manager, company, last_author |
word_live_diagnose_layout |
布局诊断(keep_with_next 链/标题样式/分页/样式摘要) | filename |
8. 快照与差异(3个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
word_live_take_snapshot |
存储文档文本快照(不返回全文) | filename |
word_live_snapshot_status |
查询快照状态(是否存在/年龄/段落数) | filename |
word_live_get_diff |
对比快照,返回变更段落(自动更新快照) | filename |
9. 截图(1个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
word_screen_capture |
截取 Word 窗口截图存为 PNG | filename, output_path |
二、跨平台模式工具(python-docx,文件操作,72个)
操作已保存的
.docx文件,不需要 Word/WPS 打开,适合批量处理。
1. 文档创建与管理(7个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
create_document |
创建新文档(可选标题/作者) | filename, title, author |
copy_document |
复制文档 | source_filename, destination_filename |
merge_documents |
合并多个文档 | target_filename, source_filenames, add_page_breaks |
convert_to_pdf |
转换为 PDF | filename, output_filename |
list_available_documents |
列出目录下所有 .docx 文件 | directory |
get_document_info |
文档信息 | filename |
get_document_outline |
文档结构大纲 | filename |
2. 文本读取(6个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
get_document_text |
提取全文(可选显示修订标记) | filename, show_revisions |
get_paragraph_text_from_document |
按段落索引读取 | filename, paragraph_index |
get_document_xml |
读取原始 XML 结构 | filename |
get_highlighted_text |
提取高亮/彩色文本(含表格内) | filename, color |
find_text_in_document |
查找文本 | filename, text_to_find, match_case, whole_word |
search_and_replace |
查找替换 | filename, find_text, replace_text |
3. 文本编辑与格式(5个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
add_paragraph |
添加段落(可选样式/字体/字号/加粗/斜体/颜色) | filename, text, style, font_name, font_size, bold, italic, color |
add_heading |
添加标题(1-9级,可选字体/字号/加粗/下边框) | filename, text, level, font_name, font_size, bold, italic, border_bottom |
add_page_break |
插入分页符 | filename |
format_text |
格式化段落内文本(加粗/斜体/下划线/颜色/字号/字体) | filename, paragraph_index, start_pos, end_pos, bold, italic, underline, color, font_size, font_name |
delete_paragraph |
删除段落 | filename, paragraph_index |
4. 跟踪更改(5个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
track_insert |
插入文本并标记为修订 | filename, after_text, insert_text, author |
track_delete |
标记文本为删除(修订) | filename, text, author |
track_replace |
替换文本并标记修订(旧文本删除+新文本插入) | filename, old_text, new_text, author |
accept_tracked_changes |
接受跟踪更改(可按作者/ID过滤) | filename, author, change_ids |
reject_tracked_changes |
拒绝跟踪更改(可按作者/ID过滤) | filename, author, change_ids |
list_tracked_changes |
列出所有跟踪更改(作者/日期/文本/段落上下文) | filename |
5. 批注(5个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
add_comment |
添加批注(锚定到指定文本) | filename, target_text, comment_text, author, initials |
get_all_comments |
提取所有批注 | filename |
get_comments_by_author |
按作者提取批注 | filename, author |
get_comments_for_paragraph |
按段落提取批注 | filename, paragraph_index |
6. 脚注与尾注(10个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
add_footnote_to_document |
添加脚注到指定段落 | filename, paragraph_index, footnote_text |
add_footnote_enhanced |
增强版脚注(保证上标格式) | filename, paragraph_index, footnote_text, output_filename |
add_footnote_after_text |
在指定文本后添加脚注 | filename, search_text, footnote_text, output_filename |
add_footnote_before_text |
在指定文本前添加脚注 | filename, search_text, footnote_text, output_filename |
add_footnote_robust |
健壮版脚注(验证+自动修复) | filename, search_text, paragraph_index, footnote_text, validate_location, auto_repair |
delete_footnote_from_document |
删除脚注(按ID或文本定位) | filename, footnote_id, search_text, output_filename |
delete_footnote_robust |
健壮版删除脚注(清理孤立内容) | filename, footnote_id, search_text, clean_orphans |
add_endnote_to_document |
添加尾注到指定段落 | filename, paragraph_index, endnote_text |
customize_footnote_style |
自定义脚注编号格式和字体 | filename, numbering_format, start_number, font_name, font_size |
validate_document_footnotes |
验证所有脚注的完整性和合规性 | filename |
7. 表格操作(14个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
add_table |
添加表格 | filename, rows, cols, data |
format_table |
格式化表格(边框/底纹/表头) | filename, table_index, has_header_row, border_style, shading |
format_table_cell_text |
格式化单元格文本(加粗/斜体/下划线/颜色/字号/字体) | filename, table_index, row_index, col_index, text_content, bold, italic, underline, color, font_size, font_name |
merge_table_cells |
合并矩形区域单元格 | filename, table_index, start_row, start_col, end_row, end_col |
merge_table_cells_horizontal |
水平合并单元格 | filename, table_index, row_index, start_col, end_col |
merge_table_cells_vertical |
垂直合并单元格 | filename, table_index, col_index, start_row, end_row |
set_table_alignment_all |
设置全表文字对齐 | filename, table_index, horizontal, vertical |
set_table_cell_alignment |
设置单元格文字对齐 | filename, table_index, row_index, col_index, horizontal, vertical |
set_table_cell_padding |
设置单元格内边距 | filename, table_index, row_index, col_index, top, bottom, left, right, unit |
set_table_cell_shading |
设置单元格底纹 | filename, table_index, row_index, col_index, fill_color, pattern |
set_table_column_width |
设置单列宽度 | filename, table_index, col_index, width, width_type |
set_table_column_widths |
设置多列宽度 | filename, table_index, widths, width_type |
set_table_width |
设置表格总宽度 | filename, table_index, width, width_type |
auto_fit_table_columns |
自动适应列宽 | filename, table_index |
apply_table_alternating_rows |
隔行变色 | filename, table_index, color1, color2 |
highlight_table_header |
表头高亮 | filename, table_index, header_color, text_color |
8. 段落间距(1个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
set_paragraph_spacing |
设置段落间距/行距 | filename, paragraph_index, start_paragraph, end_paragraph, space_before_pt, space_after_pt, line_spacing, line_spacing_rule |
9. 页面布局(2个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
set_page_layout |
页面布局(方向/尺寸/页边距) | filename, section_index, orientation, page_width_inches, page_height_inches, margin_top_inches, margin_bottom_inches, margin_left_inches, margin_right_inches |
add_section_break |
插入分节符 | filename, break_type |
10. 页眉页脚与页码(3个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
add_header_footer |
添加页眉/页脚 | filename, section_index, header_text, footer_text, header_alignment, footer_alignment |
add_page_numbers |
添加页码 | filename, section_index, position, alignment, prefix, suffix, include_total |
add_watermark |
添加水印 | filename, text, font_size, font_color, rotation, section_index |
11. 目录与书签(3个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
add_table_of_contents |
添加目录 | filename, title, max_level |
add_bookmark |
添加书签 | filename, paragraph_index, bookmark_name |
add_picture |
添加图片 | filename, image_path, width |
12. 样式与超链接(3个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
create_custom_style |
创建自定义样式 | filename, style_name, bold, italic, font_size, font_name, color, base_style |
manage_hyperlinks |
添加/管理超链接 | filename, action, text, url, paragraph_index |
13. 锚点段落插入(3个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
insert_header_near_text |
在目标段落附近插入标题 | filename, target_text, header_title, position, header_style, target_paragraph_index |
insert_line_or_paragraph_near_text |
在目标段落附近插入段落 | filename, target_text, line_text, position, line_style, target_paragraph_index |
insert_numbered_list_near_text |
在目标段落附近插入编号列表 | filename, target_text, list_items, position, target_paragraph_index, bullet_type |
14. 块替换(2个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
replace_block_between_manual_anchors |
替换两个锚点之间的内容 | filename, start_anchor_text, new_paragraphs, end_anchor_text, new_paragraph_style |
replace_paragraph_block_below_header |
替换标题下的段落块 | filename, header_text, new_paragraphs |
15. 文档保护(4个)
| 工具 | 说明 | 关键参数 |
|---|---|---|
protect_document |
添加密码保护 | filename, password |
unprotect_document |
移除密码保护 | filename, password |
add_digital_signature |
添加数字签名 | filename, signer_name, reason |
verify_document |
验证保护和/或签名 | filename, password |
add_restricted_editing |
限制编辑(仅允许指定区域) | filename, password, editable_sections |
三、实时模式段落级能力详解
这是之前文章中的知识盲区,补全。
实时模式虽然没有独立的 word_live_get_paragraph_text 工具,但段落级能力分布在多个工具中:
| 能力 | 工具 | 段落定位方式 |
|---|---|---|
| 读取段落文本 | word_live_get_page_text |
返回每段带 index(全文段落索引) |
| 读取段落格式 | word_live_get_paragraph_format |
start_paragraph + end_paragraph(1-indexed) |
| 插入段落 | word_live_insert_paragraphs |
target_paragraph_index(0-based)或 target_text |
| 格式化段落 | word_live_format_text |
start_paragraph + end_paragraph(1-indexed) |
| 设置间距 | word_live_set_paragraph_spacing |
start_paragraph + end_paragraph(1-indexed) |
| 应用列表 | word_live_apply_list |
start_paragraph + end_paragraph(1-indexed) |
| 添加书签 | word_live_add_bookmark |
paragraph_index(1-indexed) |
| 添加批注 | word_live_add_comment |
paragraph_index(1-indexed) |
| 插入图片 | word_live_insert_image |
paragraph_index(1-indexed) |
| 插入公式 | word_live_insert_equation |
paragraph_index(1-indexed) |
| 插入交叉引用 | word_live_insert_cross_reference |
paragraph_index(1-indexed) |
注意索引基准不统一:
word_live_get_text/word_live_insert_paragraphs→ 0-basedword_live_get_paragraph_format/word_live_format_text/word_live_set_paragraph_spacing→ 1-basedword_live_get_page_text返回的index字段 → 与word_live_get_text一致(0-based)
⚠️ 这是实际使用中最容易踩的坑:不同工具的段落索引基准不同,混用时会差1。建议统一从
word_live_get_page_text或word_live_get_text的返回值中读取index,再根据目标工具的基准做偏移。