MCP Office Interop Word サーバー
このプロジェクトは、Windows 上の COM Interop を使用して Microsoft Word ドキュメントとの対話を可能にするモデル コンテキスト プロトコル (MCP)サーバーを実装します。
一般的な Word 処理タスクをプログラムで実行するための MCP ツールを提供します。
特徴
COM Interop (
winax) を介して一般的な Microsoft Word 操作をラップします。MCP ツールとして機能を公開します。
MCP 通信用の
stdioおよびsseトランスポートの両方をサポートします。TypeScript で構築され、
@modelcontextprotocol/sdkを使用します。
Related MCP server: Deskaid
前提条件
Node.js (v18以降を推奨)
npm
Windows マシンにインストールされた Microsoft Word。
インストール
リポジトリをクローンするか、ソースコードをダウンロードします。
ターミナルでプロジェクト ディレクトリに移動します。
依存関係をインストールします:
npm install
建物
TypeScript コードを JavaScript にコンパイルするには:
これにより、コンパイルされたファイルがdistディレクトリに出力されます。
サーバーの実行
サーバーは、 stdioまたはsseという 2 つの異なる MCP トランスポートを使用して実行できます。
stdioトランスポート
これはデフォルトのモードです。標準入出力を介して通信するローカルクライアントに適しています。
または
node dist/index.jsコマンドを指定して、stdio メソッドを使用して MCP クライアント (MCP Inspector など) を接続します。
SSE(サーバー送信イベント)トランスポート
このモードでは、Web ベースまたはリモート クライアントに適した HTTP および Server-Sent Events が使用されます。
パワーシェル:
バッシュ/コマンド:
サーバーは通常、ポート 3001 (またはPORT環境変数で指定されたポート) で HTTP サーバーを起動します。
SSEエンドポイント:
http://localhost:3001/sseメッセージエンドポイント(クライアントPOST用):
http://localhost:3001/messages
SSE エンドポイント URL を指定して、SSE メソッドを使用して MCP クライアントを接続します。
利用可能なツール
サーバーは次のツールを公開します (ツール名には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 = Single)。
段落の書式設定:
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(number): 行数。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(boolean): ヘッダーの場合は 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=レター、8=A4)。
注記
このサーバーでは、サーバーが実行されるマシンに Microsoft Word がインストールされ、COM Interop 経由でアクセスできる必要があります。
COM操作のエラー処理は基本的なものです。堅牢な運用環境では、より詳細なエラーチェックとリカバリが必要になる場合があります。
Wordオブジェクトモデル定数(
WdSaveFormat、WdUnitsなど)は、ツール引数内で数値で表されます。具体的な値については、Word VBAのドキュメントを参照する必要がある場合があります。