DOCX红线MCP
本地 stdio 用于检查和编辑Microsoft的MCP服务器 .docx 通过OOXML包部件创建文件。
它适用于需要以下功能的代理工作流:
- 打开本地
.docx - 检查OOXML部件,例如
word/document.xml - 通过以下方式应用真实的Word跟踪更改
@ansonlai/docx-redline-js - 安全地添加注释和维护操作
- 保存回原位或保存到新的输出路径
状态
当前的行为是围绕端到端Word测试中发现的故障模式而强化的:
- MCP日志记录被路由到
stderr因此stdio传输不会损坏 - 在提交内存会话之前,会验证包更新
- 无效的注释/修订组合将被拒绝并回滚
delete_all_comments清除两个内联锚word/comments.xml- 红线作业规范暗场脚手架(
w:fldChar,w:instrText)和校对标记(w:proofErr)在差异化之前,在匹配的目标段落中 - 通过以下方式支持批量红线应用程序
apply_operations
需求
- Node.js 18或更新版本
安装
npm install跑
node src/index.js包二进制:
npx docx-redline-mcpMCP工具
open_docx
打开一个 .docx 归档并创建一个工作句柄。
{
"path": "C:/contracts/master-services-agreement.docx"
}list_parts
列出开放式手柄的包装零件。
{
"handle": "doc_..."
}read_part
将OOXML部分读取为XML文本或获取二进制摘要。
{
"handle": "doc_...",
"partPath": "word/document.xml",
"maxChars": 12000
}二进制导出:
{
"handle": "doc_...",
"partPath": "word/media/image1.png",
"includeBase64": true
}write_part
替换内存中的可写XML部分。
{
"handle": "doc_...",
"partPath": "word/document.xml",
"xml": "..."
}可写XML部分:
word/document.xmlword/comments.xmlword/numbering.xmlword/header*.xmlword/footer*.xml[Content_Types].xml
apply_operation
将一个结构化操作应用于 word/document.xml.
红线示例:
{
"handle": "doc_...",
"author": "Roo",
"operation": {
"type": "redline",
"target": "Original text",
"modified": "Updated text"
}
}评论示例:
{
"handle": "doc_...",
"author": "Roo",
"operation": {
"type": "comment",
"target": "Original paragraph text",
"textToComment": "Original",
"commentContent": "Explain the change"
}
}维护操作:
accept_all_tracked_changesreject_all_tracked_changesdelete_all_comments
apply_operations
在单个批处理中应用多个结构化操作。当一个编辑会话需要针对同一打开的文档设置多条红线/注释时,这是首选路径。
{
"handle": "doc_...",
"author": "Roo",
"operations": [
{
"type": "redline",
"target": "Original text",
"modified": "Updated text"
},
{
"type": "comment",
"target": "Other paragraph",
"textToComment": "Other",
"commentContent": "Reasoning"
}
]
}save_docx
保存工作包。
到位:
{
"handle": "doc_..."
}转到单独的文件:
{
"handle": "doc_...",
"outputPath": "C:/contracts/master-services-agreement-copy.docx"
}行为说明
- 每
open_docx调用将创建内存中的工作会话。 save_docx写回原始文件,除非outputPath供应。- 非XML部分是只读的。
write_part在接受XML之前对其进行验证。apply_operation和apply_operations在更新会话状态之前验证生成的包。- 发生故障时,服务器会回滚受影响的
word/document.xml和word/comments.xml国家。 - 对于红线,服务器会保留可见的Word交叉引用输出,例如
9.1或10.6但在差异化之前,删除了隐藏的现场指令脚手架。 - 交叉跟踪插入/删除边界的注释锚点被拒绝,因为Word通常拒绝打开这些包。
日志记录
- 默认MCP日志级别为
warn - 日志被写入
stderr,不stdout - 为了安全地启用发动机诊断:
$env:DOCX_REDLINE_MCP_LOG_LEVEL = "info"
node src/index.js故障排除
Transport closed在工具调用期间:
- 检查是否存在任何依赖关系或本地日志写入 stdout
- 即使XML看起来有效,Word也会拒绝保存的文件:
- 检查修订后的段落中是否存在隐藏字段(w:fldChar, w:instrText)或校对标记(w:proofErr) - 更喜欢服务器红线路径而不是直接的XML操作,这样规范化步骤就会运行
- 由于跟踪的更改边界,注释操作被拒绝:
- 将评论重新锚定到修订跨度外的稳定文本
测试
npm test测试套件包括:
- 基本工具处理程序行为
- 包读/写/保存
- 无效注释/修订标记回滚
- 批量操作处理
- 真正的DOCX诊断生成
- 现场/打样归一化回归
许可证
MIT。看 许可证.
