docxredline について
docxredlineは、エージェント向けのローカルな.docx読み取り・編集ツールです。CLIまたはstdio MCPから利用でき、Wordの変更履歴を作成して文書メタデータを消去できますが、Wordの画面操作やコメントには対応しません。
主な機能
- 01変更履歴付きで.docxを段落ごとに読み取り
- 02変更履歴を付けた一括編集
- 03指定した変更履歴の承認または却下
- 04作成者情報と変更識別子の削除
- 05CLIとstdio MCPのインターフェース
活用シーン
- 01契約書の支払条件の確認
- 02変更履歴を残した契約文書の一括修正
- 03配布前の文書メタデータ消去
MCP 対応
stdio MCPサーバーとして、文書の読み取り、一括処理、最終化のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| page | number | いいえ | 返す仮想ページ番号(段落はページごとにグループ化されます)。 |
| path | string | はい | .docx ファイルへのパス。 |
| clean_view | boolean | いいえ | 最終版のクリーンな内容を読み込みます(すべての変更履歴を承認します)。 |
| search_query | string | いいえ | このテキストを含む段落のみを返します。 |
詳細
docxredline
docxredline は、エージェントが必要とする形で Word の .docx ファイルを扱います。内容を推論できるプレーンテキストとして読み取り、Word 上で変更履歴として表示されるように編集し、ファイルを外部に出す前に情報をきれいに削除できます。すべての処理はローカルで行われ、ドキュメントがマシンの外に出ることはありません。また、stdio MCP フェイス以外にサーバーコンポーネントはありません。
これはラベル付きのコアサブセットで、3 つのドキュメントツール(read_docx、process_document_batch、finalize_document)のみを対象とします。実行中の Word インスタンスを操作したり、UI を表示したり、ドキュメントのコメントを処理したりはしません(詳細は各ツールの説明を参照してください)。
インストール
npx @reneturcios/docxredline read agreement.docx
または、コンテナイメージを実行します。
docker run -i ghcr.io/cloudcorprecords/docxredline
コンテナはデフォルトで MCP サーバーを起動します(下記参照)。CLI として使用するには、CLI 引数を渡してください。CLI はパスを指定してファイルを読み書きするため、ドキュメントを格納したボリュームをコンテナにマウントしてください。
CLI
# Read a document (tracked changes shown as CriticMarkup)
docxredline read agreement.docx
# Read the final clean version instead
docxredline read agreement.docx --clean
# Only paragraphs mentioning payment terms; synthetic page 2
docxredline read agreement.docx --search "payment"
docxredline read agreement.docx --page 2
# Apply a batch of edits from a JSON file
docxredline batch agreement.docx changes.json --author "Review Bot"
# Pre-send scrub, locked read-only
docxredline finalize agreement.docx --protection read_only
docxredline --version
終了コード:成功時は 0、ファイルを読み取れない場合、またはバッチ内の変更が適用されない場合は 1、使用方法に誤りがある場合は 2 です。すべてのコマンドで --json を指定できます。
変更ファイルは、変更オブジェクトの JSON 配列です。
[
{ "type": "modify", "target_text": "thirty days", "new_text": "sixty days" },
{ "type": "modify", "target_text": "old clause", "new_text": "new clause", "match_mode": "all" },
{ "type": "accept", "target_text": "12" },
{ "type": "reject", "target_text": "13" }
]
MCP サーバー
1 つのバイナリで両方のインターフェイスを提供します。mcp サブコマンドで stdio MCP サーバーを起動します。
npx -y @reneturcios/docxredline mcp
MCP クライアントの設定:
{
"mcpServers": {
"docxredline": {
"command": "npx",
"args": ["-y", "@reneturcios/docxredline", "mcp"]
}
}
}
ツール
| ツール | 入力 | 機能 |
|---|---|---|
read_docx | path(文字列、必須)、clean_view(ブール値)、search_query(文字列)、page(数値)は任意 | ドキュメントを段落ごとに、Markdown に似たテキストとして返します。既存の変更履歴は、clean_view によって解決されない限り、CriticMarkup の {++挿入++} と {--削除--} の形式で表示されます。search_query を指定すると、そのテキストを含む段落のみが返されます。 |
process_document_batch | path(文字列、必須)、changes(配列、必須)、output_path と author は任意 | 変更のバッチを適用し、結果を書き出します(デフォルト:入力ファイルと同じ場所にある <name>.redlined.docx)。適用された変更の数と、残りの変更ごとのエラー一覧を返します。変更が 1 つ以上適用された場合にのみ、出力ファイルが書き込まれます。 |
finalize_document | path(文字列、必須)、output_path と protection_mode は任意 | 配布可能なコピーを書き出します(デフォルト:<name>.scrubbed.docx)。docProps/core.xml の作成者フィールドを空にし、本文から w:rsid* 属性を削除します。また、protection_mode: "read_only" を指定した場合は、documentProtection ロックを追加します。 |
このサブセットでの編集と ID の仕組み
modify変更は、単一段落のテキスト内からtarget_textを見つけ、該当するランを書き換えます。元のテキストは<w:del>要素で、新しいテキストは<w:ins>要素で囲まれます。どちらにもバッチのauthorと新しいw:idが付与されるため、Word 上で実際の変更履歴として表示されます。- 安全性チェック:デフォルトの
match_mode"first"を使った正規表現ではないmodifyで、ターゲットが複数の段落に一致する場合、推測した段落に適用するのではなく、曖昧さエラーとして拒否されます。より長いターゲットを使うか、match_mode: "all"を指定して、一致するすべての段落内の出現箇所を編集してください。regex: trueを指定すると、target_textは正規表現として扱われます。 - 段落内の複数のランにまたがるターゲットは、このサブセットでは書き換えられず、変更ごとの失敗として報告されます。
accept/rejectでは、変更履歴のw:id文字列をtarget_textとして指定します。承認すると挿入テキストが残り、削除部分は取り除かれます。却下するとその逆になります。(元のツールが備える、コメントや範囲に対応したより豊富な ID モデルは再現されていません。)replyはこのサブセットではサポートされていません。変更ごとの失敗として"comments not supported in this subset"が返され、適用済みとして暗黙に数えられることはありません。
合成ページ分け
.docx にはページの概念がないため、page はこのツール独自の仕様です。段落を 40 個ずつまとめて 1 ページとし、ページ番号は 1 から始まります。read_docx は、呼び出し側が意図的にページ分けできるよう、各結果とともにドキュメントの総段落数と合成ページ数を報告します。
最終メモ
ドキュメントに word/settings.xml パーツがなく、保護が要求された場合、docxredline は保護要素のみを含む最小限のパーツを作成します。完全なパッケージでは、このパーツを [Content_Types].xml とパッケージのリレーションシップにも登録しますが、このサブセットではそれらのパーツを書き換えず、既知の不足事項として記録します。
開発
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network
npm run dev # run the CLI from source via tsx
テストでは、ツールに同梱されているものと同じストア形式の ZIP 書き込み機能を使って、一時ディレクトリに独自の最小限の .docx フィクスチャを生成します。そのため、テストスイートでは実際のアーカイブリーダーをエンドツーエンドで検証できます。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。