MCP Office Interop Word Server

by mario-andreschak
Verified

Integrations

  • Requires Node.js runtime (v18 or later) to execute the MCP server that interfaces with Microsoft Word.

  • Uses npm for dependency management and running scripts to build and start the Word integration server.

  • Server built with TypeScript to provide programmatic interaction with Microsoft Word documents through MCP tools.

MCP Office 互操作 Word 服务器

该项目实现了一个模型上下文协议 (MCP)服务器,允许使用 Windows 上的 COM Interop 与 Microsoft Word 文档进行交互。

它提供 MCP 工具以编程方式执行常见的文字处理任务。

特征

  • 通过 COM Interop ( winax ) 包装常见的 Microsoft Word 操作。
  • 将功能公开为 MCP 工具。
  • 支持 MCP 通信的stdiosse传输。
  • 使用 TypeScript 构建并使用@modelcontextprotocol/sdk

先决条件

  • Node.js(建议使用 v18 或更高版本)
  • npm
  • 安装在 Windows 机器上的 Microsoft Word。

安装

  1. 克隆存储库或下载源代码。
  2. 导航到终端中的项目目录。
  3. 安装依赖项:
    npm install

建筑

将 TypeScript 代码编译为 JavaScript:

npm run build

这会将编译后的文件输出到dist目录。

运行服务器

服务器可以使用两种不同的 MCP 传输运行: stdiosse

stdio 传输

这是默认模式。适用于通过标准输入/输出进行通信的本地客户端。

npm start

或者

node dist/index.js

使用 stdio 方法连接您的 MCP 客户端(例如,MCP Inspector),指向node dist/index.js命令。

SSE(服务器发送事件)传输

此模式使用 HTTP 和服务器发送事件,适用于基于 Web 或远程客户端。

PowerShell:

$env:MCP_TRANSPORT="sse"; npm start

Bash/命令:

MCP_TRANSPORT=sse npm start

服务器将启动一个 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 对象模型常量(例如WdSaveFormatWdUnits等)在工具参数中以数值形式表示。您可能需要参考 Word VBA 文档来了解具体值。
-
security - not tested
A
license - permissive license
-
quality - not tested

MCP 服务器可通过 COM Interop 与 Windows 上的 Microsoft Word 文档进行编程交互,允许执行文档创建、文本操作、格式化和表格管理等操作。

  1. Features
    1. Prerequisites
      1. Installation
        1. Building
          1. Running the Server
            1. stdio Transport
            2. SSE (Server-Sent Events) Transport
          2. Available Tools
            1. Notes
              ID: r3c578vipu