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.

Servidor de Word de interoperabilidad de MCP Office

Este proyecto implementa un servidor de Protocolo de Contexto de Modelo (MCP) que permite la interacción con documentos de Microsoft Word utilizando interoperabilidad COM en Windows.

Proporciona herramientas MCP para realizar tareas comunes de procesamiento de textos mediante programación.

Características

  • Envuelve operaciones comunes de Microsoft Word a través de interoperabilidad COM ( winax ).
  • Expone la funcionalidad como herramientas MCP.
  • Admite transportes stdio y sse para la comunicación MCP.
  • Creado con TypeScript y utiliza @modelcontextprotocol/sdk .

Prerrequisitos

  • Node.js (se recomienda v18 o posterior)
  • npm
  • Microsoft Word instalado en una máquina Windows.

Instalación

  1. Clonar el repositorio o descargar el código fuente.
  2. Navegue hasta el directorio del proyecto en su terminal.
  3. Instalar dependencias:
    npm install

Edificio

Para compilar el código TypeScript en JavaScript:

npm run build

Esto enviará los archivos compilados al directorio dist .

Ejecución del servidor

El servidor puede ejecutarse utilizando dos transportes MCP diferentes: stdio o sse .

Transporte de stdio

Este es el modo predeterminado. Es adecuado para clientes locales que se comunican mediante entrada/salida estándar.

npm start

o

node dist/index.js

Conecte su cliente MCP (por ejemplo, MCP Inspector) utilizando el método stdio, apuntando al comando node dist/index.js .

Transporte SSE (eventos enviados por el servidor)

Este modo utiliza HTTP y eventos enviados por el servidor, adecuados para clientes remotos o basados en la web.

Potencia Shell:

$env:MCP_TRANSPORT="sse"; npm start

Bash / Cmd:

MCP_TRANSPORT=sse npm start

El servidor iniciará un servidor HTTP, normalmente en el puerto 3001 (o el puerto especificado por la variable de entorno PORT ).

  • Punto final de SSE: http://localhost:3001/sse
  • Punto final del mensaje (para POST del cliente): http://localhost:3001/messages

Conecte su cliente MCP utilizando el método SSE, proporcionando la URL del punto final SSE.

Herramientas disponibles

El servidor expone las siguientes herramientas (los nombres de las herramientas tienen el prefijo word_ ):

Operaciones de documentos:

  • word_createDocument : crea un nuevo documento de Word en blanco.
  • word_openDocument : abre un documento existente.
    • filePath (cadena): ruta absoluta al documento.
  • word_saveActiveDocument : guarda el documento actualmente activo.
  • word_saveActiveDocumentAs : guarda el documento activo en una nueva ruta/formato.
    • filePath (cadena): ruta absoluta donde guardar.
    • fileFormat (número, opcional): valor numérico WdSaveFormat (por ejemplo, 16 para docx, 17 para pdf).
  • word_closeActiveDocument : Cierra el documento activo.
    • saveChanges (número, opcional): valor de WdSaveOptions (0=No, -1=Sí, -2=Preguntar). Valor predeterminado: 0.

Manipulación de texto:

  • word_insertText : Inserta texto en la selección.
    • text (cadena): Texto a insertar.
  • word_deleteText : elimina el texto relativo a la selección.
    • count (número, opcional): Número de unidades a eliminar (predeterminado: 1). Positivo=hacia adelante, negativo=hacia atrás.
    • unit (número, opcional): valor de WdUnits (1=carácter, 2=palabra, etc.). Valor predeterminado: 1.
  • word_findAndReplace : busca y reemplaza texto.
    • findText (cadena): Texto a buscar.
    • replaceText (cadena): Texto de reemplazo.
    • matchCase (booleano, opcional): Predeterminado: falso.
    • matchWholeWord (booleano, opcional): predeterminado: falso.
    • replaceAll (booleano, opcional): Predeterminado: verdadero.
  • word_toggleBold : alterna el formato de negrita para la selección.
  • word_toggleItalic : alterna el formato de cursiva para la selección.
  • word_toggleUnderline : alterna el formato de subrayado para la selección.
    • underlineStyle (número, opcional): valor WdUnderline (predeterminado: 1=Único).

Formato de párrafo:

  • word_setParagraphAlignment : establece la alineación del párrafo.
    • alignment (número): valor de WdParagraphAlignment (0=Izquierda, 1=Centro, 2=Derecha, 3=Justificar).
  • word_setParagraphLeftIndent : Establece sangría izquierda.
    • indentPoints (número): valor de sangría en puntos.
  • word_setParagraphRightIndent : Establece sangría derecha.
    • indentPoints (número): valor de sangría en puntos.
  • word_setParagraphFirstLineIndent : Establece la sangría de primera línea/colgante.
    • indentPoints (número): valor de sangría en puntos (positivo=sangría, negativo=colgante).
  • word_setParagraphSpaceBefore : establece el espacio antes de los párrafos.
    • spacePoints (número): Valor de espacio en puntos.
  • word_setParagraphSpaceAfter : Establece espacio después de los párrafos.
    • spacePoints (número): Valor de espacio en puntos.
  • word_setParagraphLineSpacing : Establece el espacio entre líneas.
    • lineSpacingRule (número): valor de WdLineSpacing (0=Simple, 1=1,5, 2=Doble, 3=Al menos, 4=Exactamente, 5=Múltiple).
    • lineSpacingValue (número, opcional): valor necesario para las reglas 3, 4, 5.

Operaciones de tabla:

  • word_addTable : Agrega una tabla en la selección.
    • numRows (número): Número de filas.
    • numCols (número): Número de columnas.
  • word_setTableCellText : establece texto en una celda de la tabla.
    • tableIndex (número): índice de tabla basado en 1.
    • rowIndex (número): índice de fila basado en 1.
    • colIndex (número): índice de columna basado en 1.
    • text (cadena): Texto a establecer.
  • word_insertTableRow : Inserta una fila en una tabla.
    • tableIndex (número): índice de tabla basado en 1.
    • beforeRowIndex (número, opcional): insertar antes de este índice de fila basado en 1 (o al final si se omite).
  • word_insertTableColumn : inserta una columna en una tabla.
    • tableIndex (número): índice de tabla basado en 1.
    • beforeColIndex (número, opcional): insertar antes de este índice de columna basado en 1 (o en el extremo derecho si se omite).
  • word_applyTableAutoFormat : aplica un estilo a una tabla.
    • tableIndex (número): índice de tabla basado en 1.
    • formatName (cadena | número): Nombre de estilo o valor de WdTableFormat .

Operaciones de imagen:

  • word_insertPicture : inserta una imagen en línea.
    • filePath (cadena): ruta absoluta al archivo de imagen.
    • linkToFile (booleano, opcional): Predeterminado: falso.
    • saveWithDocument (booleano, opcional): Predeterminado: verdadero.
  • word_setInlinePictureSize : cambia el tamaño de una imagen en línea.
    • shapeIndex (número): índice basado en 1 de la forma en línea.
    • heightPoints (número): Altura en puntos (-1 o 0 para ajustar el tamaño automáticamente).
    • widthPoints (número): Ancho en puntos (-1 o 0 para ajustar el tamaño automáticamente).
    • lockAspectRatio (booleano, opcional): Predeterminado: verdadero.

Operaciones de encabezado/pie de página:

  • word_setHeaderFooterText : Establece texto en un encabezado o pie de página.
    • text (cadena): Contenido del texto.
    • isHeader (booleano): Verdadero para el encabezado, falso para el pie de página.
    • sectionIndex (número, opcional): índice de sección basado en 1 (predeterminado: 1).
    • headerFooterType (número, opcional): valor de WdHeaderFooterIndex (1=Principal, 2=Primera página, 3=Páginas pares). Valor predeterminado: 1.

Operaciones de configuración de página:

  • word_setPageMargins : establece los márgenes de la página.
    • topPoints (número): Margen superior en puntos.
    • bottomPoints (número): Margen inferior en puntos.
    • leftPoints (número): Margen izquierdo en puntos.
    • rightPoints (número): Margen derecho en puntos.
  • word_setPageOrientation : establece la orientación de la página.
    • orientation (número): valor de WdOrientation (0=Vertical, 1=Horizontal).
  • word_setPaperSize : Establece el tamaño del papel.
    • paperSize (número): valor de WdPaperSize (por ejemplo, 1=Carta, 8=A4).

Notas

  • Este servidor requiere que Microsoft Word esté instalado y sea accesible a través de COM Interop en la máquina donde se ejecuta el servidor.
  • La gestión de errores en operaciones COM es básica. Un uso robusto en producción podría requerir una comprobación y recuperación de errores más detallada.
  • Las constantes del modelo de objetos de Word (como WdSaveFormat , WdUnits , etc.) se representan mediante sus valores numéricos en los argumentos de la herramienta. Puede que necesite consultar la documentación de VBA de Word para obtener valores específicos.
-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor MCP que permite la interacción programática con documentos de Microsoft Word en Windows a través de interoperabilidad COM, lo que permite operaciones como creación de documentos, manipulación de texto, formato y gestión de tablas.

  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