MCP Office 互操作 Word 服务器
该项目实现了一个模型上下文协议 (MCP)服务器,允许使用 Windows 上的 COM Interop 与 Microsoft Word 文档进行交互。
它提供 MCP 工具以编程方式执行常见的文字处理任务。
特征
通过 COM Interop (
winax) 包装常见的 Microsoft Word 操作。将功能公开为 MCP 工具。
支持 MCP 通信的
stdio和sse传输。使用 TypeScript 构建并使用
@modelcontextprotocol/sdk。
Related MCP server: Deskaid
先决条件
Node.js(建议使用 v18 或更高版本)
npm
安装在 Windows 机器上的 Microsoft Word。
安装
克隆存储库或下载源代码。
导航到终端中的项目目录。
安装依赖项:
npm install
建筑
将 TypeScript 代码编译为 JavaScript:
这会将编译后的文件输出到dist目录。
运行服务器
服务器可以使用两种不同的 MCP 传输运行: stdio或sse 。
stdio 传输
这是默认模式。适用于通过标准输入/输出进行通信的本地客户端。
或者
使用 stdio 方法连接您的 MCP 客户端(例如,MCP Inspector),指向node dist/index.js命令。
SSE(服务器发送事件)传输
此模式使用 HTTP 和服务器发送事件,适用于基于 Web 或远程客户端。
PowerShell:
Bash/命令:
服务器将启动一个 HTTP 服务器,通常在端口 3001(或PORT环境变量指定的端口)。
SSE 端点:
http://localhost:3001/sse消息端点(用于客户端 POST):
http://localhost:3001/messages
使用 SSE 方法连接您的 MCP 客户端,并提供 SSE 端点 URL。
可用工具
服务器公开以下工具(工具名称以word_为前缀):
文档操作:
word_createDocument:创建一个新的空白 Word 文档。word_openDocument:打开现有文档。filePath(字符串):文档的绝对路径。
word_saveActiveDocument:保存当前活动文档。word_saveActiveDocumentAs:将活动文档保存到新路径/格式。filePath(字符串):保存到的绝对路径。fileFormat(数字,可选):数字WdSaveFormat值(例如,docx 为 16,pdf 为 17)。
word_closeActiveDocument:关闭活动文档。saveChanges(数字,可选):WdSaveOptions值(0=否,-1=是,-2=提示)。默认值:0。
文本操作:
word_insertText:在选择处插入文本。text(字符串):要插入的文本。
word_deleteText:删除与选择相关的文本。count(数字,可选):要删除的单元数(默认值:1)。正数表示向前,负数表示向后。unit(数字,可选):WdUnits值(1=Char,2=Word,等等)。默认值:1。
word_findAndReplace:查找并替换文本。findText(字符串):要查找的文本。replaceText(字符串):替换文本。matchCase(布尔值,可选):默认值:false。matchWholeWord(布尔值,可选):默认值:false。replaceAll(布尔值,可选):默认值:true。
word_toggleBold:切换所选内容的粗体格式。word_toggleItalic:切换所选内容的斜体格式。word_toggleUnderline:切换选择的下划线格式。underlineStyle(数字,可选):WdUnderline值(默认值:1=单行)。
段落格式:
word_setParagraphAlignment:设置段落对齐方式。alignment(数字):WdParagraphAlignment值(0=左,1=居中,2=右,3=两端对齐)。
word_setParagraphLeftIndent:设置左缩进。indentPoints(数字):缩进值(以点为单位)。
word_setParagraphRightIndent:设置右缩进。indentPoints(数字):缩进值(以点为单位)。
word_setParagraphFirstLineIndent:设置首行/悬挂缩进。indentPoints(数字):缩进值(以点为单位)(正数=缩进,负数=悬挂)。
word_setParagraphSpaceBefore:设置段落前的空间。spacePoints(数字):以点为单位的空间值。
word_setParagraphSpaceAfter:设置段落后的空格。spacePoints(数字):以点为单位的空间值。
word_setParagraphLineSpacing:设置行距。lineSpacingRule(数字):WdLineSpacing值(0=单倍,1=1.5,2=双倍,3=至少,4=精确,5=多重)。lineSpacingValue(数字,可选):规则 3、4、5 所需的值。
表操作:
word_addTable:在选择处添加一个表格。numRows(数字):行数。numCols(数字):列数。
word_setTableCellText:设置表格单元格中的文本。tableIndex(数字):基于 1 的表索引。rowIndex(数字):从 1 开始的行索引。colIndex(数字):基于 1 的列索引。text(字符串):要设置的文本。
word_insertTableRow:在表中插入一行。tableIndex(数字):基于 1 的表索引。beforeRowIndex(数字,可选):在此基于 1 的行索引之前插入(如果省略则插入到末尾)。
word_insertTableColumn:将一列插入表中。tableIndex(数字):基于 1 的表索引。beforeColIndex(数字,可选):在此基于 1 的列索引之前插入(如果省略,则插入到右端)。
word_applyTableAutoFormat:将样式应用于表格。tableIndex(数字):基于 1 的表索引。formatName(字符串 | 数字):样式名称或WdTableFormat值。
图像操作:
word_insertPicture:插入内嵌图片。filePath(字符串):图像文件的绝对路径。linkToFile(布尔值,可选):默认值:false。saveWithDocument(布尔值,可选):默认值:true。
word_setInlinePictureSize:调整内嵌图片的大小。shapeIndex(数字):内联形状的基于 1 的索引。heightPoints(数字):高度(以点为单位)(-1 或 0 为自动调整大小)。widthPoints(数字):宽度(以点为单位)(-1 或 0 为自动调整大小)。lockAspectRatio(布尔值,可选):默认值:true。
页眉/页脚操作:
word_setHeaderFooterText:设置页眉或页脚中的文本。text(字符串):文本内容。isHeader(布尔值):如果为页眉,则为 True;如果为页脚,则为 false。sectionIndex(数字,可选):基于 1 的部分索引(默认值:1)。headerFooterType(数字,可选):WdHeaderFooterIndex值(1=Primary,2=FirstPage,3=EvenPages)。默认值:1。
页面设置操作:
word_setPageMargins:设置页边距。topPoints(数字):顶部边距(以点为单位)。bottomPoints(数字):底部边距(以点为单位)。leftPoints(数字):左边距(以点为单位)。rightPoints(数字):右边距(以点为单位)。
word_setPageOrientation:设置页面方向。orientation(数字):WdOrientation值(0=纵向,1=横向)。
word_setPaperSize:设置纸张大小。paperSize(数字):WdPaperSize值(例如,1=Letter,8=A4)。
笔记
该服务器要求在运行该服务器的机器上安装 Microsoft Word 并可通过 COM Interop 访问。
COM 操作的错误处理很简单。稳健的生产使用可能需要更详细的错误检查和恢复。
Word 对象模型常量(例如
WdSaveFormat、WdUnits等)在工具参数中以数值形式表示。您可能需要参考 Word VBA 文档来了解具体值。