MCP Office互操作Word服务器
该项目实现了 模型上下文协议(MCP) 允许在Windows上使用COM Interop与Microsoft Word文档交互的服务器。
它提供MCP工具,以编程方式执行常见的文字处理任务。
特性
- 通过COM Interop封装常见的Microsoft Word操作(
winax). - 将功能作为MCP工具公开。
- 支持两者
stdio和sseMCP通信的传输。 - 使用TypeScript构建并使用
@modelcontextprotocol/sdk.
先决条件
- Node.js(建议使用v18或更高版本)
- npm
- Windows计算机上安装了Microsoft Word。
安装
- 克隆存储库或下载源代码。
- 导航到终端中的项目目录。
- 安装依赖项:
npm install建筑
要将TypeScript代码编译为JavaScript:
npm run build这将把编译后的文件输出到 dist 目录。
运行服务器
服务器可以使用两种不同的MCP传输运行: stdio 或 sse.
stdio运输
这是默认模式。它适用于通过标准输入/输出进行通信的本地客户。
npm start或
node dist/index.js使用stdio方法连接您的MCP客户端(例如MCP检查器),指向 node dist/index.js 命令。
SSE(服务器发送事件)传输
此模式使用HTTP和服务器发送事件,适用于基于web或远程客户端。
PowerShell:
$env:MCP_TRANSPORT="sse"; npm startBash/Cmd:
MCP_TRANSPORT=sse npm start服务器将启动HTTP服务器,通常在端口3001(或由 PORT 环境变量)。
- SSE端点:
http://localhost:3001/sse - 消息端点(用于客户端POS):
http://localhost:3001/messages
使用SSE方法连接MCP客户端,提供SSE端点URL。
可用工具
服务器公开以下工具(工具名称前缀为 word_):
文档操作:
word_createDocument:创建新的空白Word文档。word_openDocument:打开现有文档。
- filePath (string):文档的绝对路径。
word_saveActiveDocument:保存当前活动文档。word_saveActiveDocumentAs:将活动文档保存到新的路径/格式。
- filePath (string):保存到的绝对路径。 - fileFormat (数字,可选):数字 WdSaveFormat 值(例如,docx为16,pdf为17)。
word_closeActiveDocument:关闭活动文档。
- saveChanges (数字,可选): WdSaveOptions 值(0=否,-1=是,-2=提示)。默认值:0。
文本操作:
word_insertText:在所选内容处插入文本。
- text (string):要插入的文本。
word_deleteText:删除与所选内容相关的文本。
- count (number,可选):要删除的单位数(默认值:1)。正向=正向,负向=反向。 - unit (数字,可选): WdUnits 值(1=字符,2=单词等)。默认值:1。
word_findAndReplace:查找和替换文本。
- findText (string):要查找的文本。 - replaceText (string):替换文本。 - 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 (number):缩进值(正数=缩进,负数=挂起)。
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 (number):行数。 - numCols (number):列数。
word_setTableCellText:设置表格单元格中的文本。
- tableIndex (number):基于1的表索引。 - rowIndex (number):基于1的行索引。 - colIndex (number):基于1的列索引。 - text (string):要设置的文本。
word_insertTableRow:在表中插入行。
- tableIndex (number):基于1的表索引。 - beforeRowIndex (数字,可选):在此从1开始的行索引之前插入(如果省略,则在末尾插入)。
word_insertTableColumn:在表中插入列。
- tableIndex (number):基于1的表索引。 - beforeColIndex (数字,可选):在此从1开始的列索引之前插入(如果省略,则在右端插入)。
word_applyTableAutoFormat:将样式应用于表。
- tableIndex (number):基于1的表索引。 - formatName (string | number):样式名称或 WdTableFormat 价值。
图像操作:
word_insertPicture:插入内联图片。
- filePath (string):图像文件的绝对路径。 - linkToFile (布尔值,可选):默认值:false。 - saveWithDocument (布尔值,可选):默认值:true。
word_setInlinePictureSize:调整内联图片的大小。
- shapeIndex (number):内联形状的基于1的索引。 - heightPoints (数字):高度(-1或0到自动大小)。 - widthPoints (数字):以点为单位的宽度(-1或0可自动调整大小)。 - lockAspectRatio (布尔值,可选):默认值:true。
页眉/页脚操作:
word_setHeaderFooterText:设置页眉或页脚中的文本。
- text (string):文本内容。 - isHeader (boolean):页眉为True,页脚为false。 - sectionIndex (数字,可选):基于1的节索引(默认值:1)。 - headerFooterType (数字,可选): WdHeaderFooterIndex 值(1=初级,2=第一页,3=偶数页)。默认值:1。
页面设置操作:
word_setPageMargins:设置页边距。
- topPoints (数字):以点为单位的最高利润。 - bottomPoints (数字):底部边距(以点为单位)。 - leftPoints (数字):以点为单位的左边距。 - rightPoints (数字):以点为单位的右边距。
word_setPageOrientation:设置页面方向。
- orientation (编号): WdOrientation 值(0=纵向,1=横向)。
word_setPaperSize:设置纸张大小。
- paperSize (编号): WdPaperSize 值(例如,1=字母,8=A4)。
备注
- 此服务器要求在运行服务器的计算机上安装Microsoft Word并通过COM Interop进行访问。
- COM操作的错误处理是基本的。稳健的生产使用可能需要更详细的错误检查和恢复。
- Word对象模型常量(如
WdSaveFormat,WdUnits等等)由它们在工具参数中的数值表示。您可能需要参考Word VBA文档以获取特定值。
