mario-andreschak/mcp-msoffice-interop-word
If you are the rightful owner of mcp-msoffice-interop-word and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
MCP Office Interop Word Server allows interaction with Microsoft Word documents using COM Interop on Windows.
MCP Office Interop Word Server
This project implements a Model Context Protocol (MCP) server that allows interaction with Microsoft Word documents using COM Interop on Windows.
It provides MCP tools to perform common Word processing tasks programmatically.
Features
- Wraps common Microsoft Word operations via COM Interop (
winax). - Exposes functionality as MCP tools.
- Supports both
stdioandssetransports for MCP communication. - Built with TypeScript and uses the
@modelcontextprotocol/sdk.
Prerequisites
- Node.js (v18 or later recommended)
- npm
- Microsoft Word installed on a Windows machine.
Installation
- Clone the repository or download the source code.
- Navigate to the project directory in your terminal.
- Install dependencies:
npm install
Building
To compile the TypeScript code to JavaScript:
npm run build
This will output the compiled files to the dist directory.
Running the Server
The server can run using two different MCP transports: stdio or sse.
stdio Transport
This is the default mode. It's suitable for local clients that communicate via standard input/output.
npm start
or
node dist/index.js
Connect your MCP client (e.g., MCP Inspector) using the stdio method, pointing to the node dist/index.js command.
SSE (Server-Sent Events) Transport
This mode uses HTTP and Server-Sent Events, suitable for web-based or remote clients.
PowerShell:
$env:MCP_TRANSPORT="sse"; npm start
Bash / Cmd:
MCP_TRANSPORT=sse npm start
The server will start an HTTP server, typically on port 3001 (or the port specified by the PORT environment variable).
- SSE Endpoint:
http://localhost:3001/sse - Message Endpoint (for client POSTs):
http://localhost:3001/messages
Connect your MCP client using the SSE method, providing the SSE endpoint URL.
Available Tools
The server exposes the following tools (tool names are prefixed with word_):
Document Operations:
word_createDocument: Creates a new, blank Word document.word_openDocument: Opens an existing document.filePath(string): Absolute path to the document.
word_saveActiveDocument: Saves the currently active document.word_saveActiveDocumentAs: Saves the active document to a new path/format.filePath(string): Absolute path to save to.fileFormat(number, optional): NumericWdSaveFormatvalue (e.g., 16 for docx, 17 for pdf).
word_closeActiveDocument: Closes the active document.saveChanges(number, optional):WdSaveOptionsvalue (0=No, -1=Yes, -2=Prompt). Default: 0.
Text Manipulation:
word_insertText: Inserts text at the selection.text(string): Text to insert.
word_deleteText: Deletes text relative to the selection.count(number, optional): Number of units to delete (default: 1). Positive=forward, negative=backward.unit(number, optional):WdUnitsvalue (1=Char, 2=Word, etc.). Default: 1.
word_findAndReplace: Finds and replaces text.findText(string): Text to find.replaceText(string): Replacement text.matchCase(boolean, optional): Default: false.matchWholeWord(boolean, optional): Default: false.replaceAll(boolean, optional): Default: true.
word_toggleBold: Toggles bold formatting for the selection.word_toggleItalic: Toggles italic formatting for the selection.word_toggleUnderline: Toggles underline formatting for the selection.underlineStyle(number, optional):WdUnderlinevalue (default: 1=Single).
Paragraph Formatting:
word_setParagraphAlignment: Sets paragraph alignment.alignment(number):WdParagraphAlignmentvalue (0=Left, 1=Center, 2=Right, 3=Justify).
word_setParagraphLeftIndent: Sets left indent.indentPoints(number): Indent value in points.
word_setParagraphRightIndent: Sets right indent.indentPoints(number): Indent value in points.
word_setParagraphFirstLineIndent: Sets first line/hanging indent.indentPoints(number): Indent value in points (positive=indent, negative=hanging).
word_setParagraphSpaceBefore: Sets space before paragraphs.spacePoints(number): Space value in points.
word_setParagraphSpaceAfter: Sets space after paragraphs.spacePoints(number): Space value in points.
word_setParagraphLineSpacing: Sets line spacing.lineSpacingRule(number):WdLineSpacingvalue (0=Single, 1=1.5, 2=Double, 3=AtLeast, 4=Exactly, 5=Multiple).lineSpacingValue(number, optional): Value needed for rules 3, 4, 5.
Table Operations:
word_addTable: Adds a table at the selection.numRows(number): Number of rows.numCols(number): Number of columns.
word_setTableCellText: Sets text in a table cell.tableIndex(number): 1-based table index.rowIndex(number): 1-based row index.colIndex(number): 1-based column index.text(string): Text to set.
word_insertTableRow: Inserts a row into a table.tableIndex(number): 1-based table index.beforeRowIndex(number, optional): Insert before this 1-based row index (or at end if omitted).
word_insertTableColumn: Inserts a column into a table.tableIndex(number): 1-based table index.beforeColIndex(number, optional): Insert before this 1-based column index (or at right end if omitted).
word_applyTableAutoFormat: Applies a style to a table.tableIndex(number): 1-based table index.formatName(string | number): Style name orWdTableFormatvalue.
Image Operations:
word_insertPicture: Inserts an inline picture.filePath(string): Absolute path to the image file.linkToFile(boolean, optional): Default: false.saveWithDocument(boolean, optional): Default: true.
word_setInlinePictureSize: Resizes an inline picture.shapeIndex(number): 1-based index of the inline shape.heightPoints(number): Height in points (-1 or 0 to auto-size).widthPoints(number): Width in points (-1 or 0 to auto-size).lockAspectRatio(boolean, optional): Default: true.
Header/Footer Operations:
word_setHeaderFooterText: Sets text in a header or footer.text(string): Text content.isHeader(boolean): True for header, false for footer.sectionIndex(number, optional): 1-based section index (default: 1).headerFooterType(number, optional):WdHeaderFooterIndexvalue (1=Primary, 2=FirstPage, 3=EvenPages). Default: 1.
Page Setup Operations:
word_setPageMargins: Sets page margins.topPoints(number): Top margin in points.bottomPoints(number): Bottom margin in points.leftPoints(number): Left margin in points.rightPoints(number): Right margin in points.
word_setPageOrientation: Sets page orientation.orientation(number):WdOrientationvalue (0=Portrait, 1=Landscape).
word_setPaperSize: Sets paper size.paperSize(number):WdPaperSizevalue (e.g., 1=Letter, 8=A4).
Notes
- This server requires Microsoft Word to be installed and accessible via COM Interop on the machine where the server runs.
- Error handling for COM operations is basic. Robust production use might require more detailed error checking and recovery.
- Word object model constants (like
WdSaveFormat,WdUnits, etc.) are represented by their numeric values in the tool arguments. You may need to refer to the Word VBA documentation for specific values.