MCP Office Interop Word Server
一个 MCP 服务器,它通过 COM Interop 实现与 Windows 上 Microsoft Word 文档的程序化交互,从而允许诸如文档创建、文本操作、格式设置和表格管理等操作。
README
MCP Office Interop Word Server
本项目实现了一个 模型上下文协议 (MCP) 服务器,允许在 Windows 上使用 COM Interop 与 Microsoft Word 文档进行交互。
它提供了 MCP 工具,可以以编程方式执行常见的 Word 处理任务。
功能
- 通过 COM Interop (
winax) 封装常见的 Microsoft Word 操作。 - 将功能公开为 MCP 工具。
- 支持
stdio和sse传输方式进行 MCP 通信。 - 使用 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 Inspector),指向 node dist/index.js 命令。
SSE (服务器发送事件) 传输
此模式使用 HTTP 和服务器发送事件,适用于基于 Web 或远程客户端。
PowerShell:
$env:MCP_TRANSPORT="sse"; npm start
Bash / Cmd:
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(string): 文档的绝对路径。
word_saveActiveDocument: 保存当前活动文档。word_saveActiveDocumentAs: 将活动文档保存到新路径/格式。filePath(string): 要保存到的绝对路径。fileFormat(number, optional): 数字WdSaveFormat值(例如,docx 为 16,pdf 为 17)。
word_closeActiveDocument: 关闭活动文档。saveChanges(number, optional):WdSaveOptions值 (0=No, -1=Yes, -2=Prompt)。默认值:0。
文本操作:
word_insertText: 在选定内容处插入文本。text(string): 要插入的文本。
word_deleteText: 相对于选定内容删除文本。count(number, optional): 要删除的单位数(默认值:1)。正数=向前,负数=向后。unit(number, optional):WdUnits值 (1=Char, 2=Word, etc.)。默认值:1。
word_findAndReplace: 查找和替换文本。findText(string): 要查找的文本。replaceText(string): 替换文本。matchCase(boolean, optional): 默认值:false。matchWholeWord(boolean, optional): 默认值:false。replaceAll(boolean, optional): 默认值:true。
word_toggleBold: 切换选定内容的粗体格式。word_toggleItalic: 切换选定内容的斜体格式。word_toggleUnderline: 切换选定内容的下划线格式。underlineStyle(number, optional):WdUnderline值 (default: 1=Single)。
段落格式:
word_setParagraphAlignment: 设置段落对齐方式。alignment(number):WdParagraphAlignment值 (0=Left, 1=Center, 2=Right, 3=Justify)。
word_setParagraphLeftIndent: 设置左缩进。indentPoints(number): 缩进值,以磅为单位。
word_setParagraphRightIndent: 设置右缩进。indentPoints(number): 缩进值,以磅为单位。
word_setParagraphFirstLineIndent: 设置首行/悬挂缩进。indentPoints(number): 缩进值,以磅为单位(正数=缩进,负数=悬挂)。
word_setParagraphSpaceBefore: 设置段前间距。spacePoints(number): 间距值,以磅为单位。
word_setParagraphSpaceAfter: 设置段后间距。spacePoints(number): 间距值,以磅为单位。
word_setParagraphLineSpacing: 设置行距。lineSpacingRule(number):WdLineSpacing值 (0=Single, 1=1.5, 2=Double, 3=AtLeast, 4=Exactly, 5=Multiple)。lineSpacingValue(number, optional): 规则 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(number, optional): 在此基于 1 的行索引之前插入(如果省略,则在末尾插入)。
word_insertTableColumn: 在表格中插入一列。tableIndex(number): 基于 1 的表格索引。beforeColIndex(number, optional): 在此基于 1 的列索引之前插入(如果省略,则在最右端插入)。
word_applyTableAutoFormat: 将样式应用于表格。tableIndex(number): 基于 1 的表格索引。formatName(string | number): 样式名称或WdTableFormat值。
图像操作:
word_insertPicture: 插入嵌入式图片。filePath(string): 图像文件的绝对路径。linkToFile(boolean, optional): 默认值:false。saveWithDocument(boolean, optional): 默认值:true。
word_setInlinePictureSize: 调整嵌入式图片的大小。shapeIndex(number): 基于 1 的嵌入式形状索引。heightPoints(number): 高度,以磅为单位(-1 或 0 表示自动调整大小)。widthPoints(number): 宽度,以磅为单位(-1 或 0 表示自动调整大小)。lockAspectRatio(boolean, optional): 默认值:true。
页眉/页脚操作:
word_setHeaderFooterText: 设置页眉或页脚中的文本。text(string): 文本内容。isHeader(boolean): 如果是页眉,则为 True,如果是页脚,则为 False。sectionIndex(number, optional): 基于 1 的节索引(默认值:1)。headerFooterType(number, optional):WdHeaderFooterIndex值 (1=Primary, 2=FirstPage, 3=EvenPages)。默认值:1。
页面设置操作:
word_setPageMargins: 设置页面边距。topPoints(number): 上边距,以磅为单位。bottomPoints(number): 下边距,以磅为单位。leftPoints(number): 左边距,以磅为单位。rightPoints(number): 右边距,以磅为单位。
word_setPageOrientation: 设置页面方向。orientation(number):WdOrientation值 (0=Portrait, 1=Landscape)。
word_setPaperSize: 设置纸张大小。paperSize(number):WdPaperSize值(例如,1=Letter,8=A4)。
注意事项
- 此服务器需要安装 Microsoft Word,并且可以通过 COM Interop 在运行服务器的计算机上访问。
- COM 操作的错误处理是基本的。 强大的生产用途可能需要更详细的错误检查和恢复。
- Word 对象模型常量(如
WdSaveFormat、WdUnits等)在工具参数中由其数值表示。 您可能需要参考 Word VBA 文档以获取特定值。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。