Skip to content

SecurityRonin/docx-mcp

v0.7.0 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

Published 11d MCP Developer Tools
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai-tools comments document-editing docx footnotes mcp
+5 more
mcp-server model-context-protocol ooxml track-changes word

ReleasePort's take

Light signal
editorial:auto 11d

All five editing tools now accept a `tracked` flag to control revision markup; new MCP utilities enhance change tracking and footnote handling.

Why it matters: Enables precise XML edits without unwanted revision metadata, improving version‑control workflows for developers and SREs managing document pipelines.

Summary

AI summary

Updates Footnote Improvements, What's New, and Bug Fixes across a mixed release.

Changes in this release

Feature Medium

All five editing tools now accept `tracked: bool = True`; pass `tracked=False` for direct XML edits without revision markup.

All five editing tools now accept `tracked: bool = True`; pass `tracked=False` for direct XML edits without revision markup.

Source: llm_adapter@2026-05-23

Confidence: high

Feature Medium

`generate_change_summary` tool creates email‑ready numbered change log from tracked changes.

`generate_change_summary` tool creates email‑ready numbered change log from tracked changes.

Source: llm_adapter@2026-05-23

Confidence: low

Feature Medium

`diff_to_text` tool produces plain‑text diff alongside DOCX comparison output.

`diff_to_text` tool produces plain‑text diff alongside DOCX comparison output.

Source: llm_adapter@2026-05-23

Confidence: low

Feature Medium

`add_footnote` gains `url=` parameter to wrap footnote text in a hyperlink.

`add_footnote` gains `url=` parameter to wrap footnote text in a hyperlink.

Source: llm_adapter@2026-05-23

Confidence: low

Feature Medium

`add_footnote_ref` supports internal bookmark cross‑references.

`add_footnote_ref` supports internal bookmark cross‑references.

Source: llm_adapter@2026-05-23

Confidence: low

Feature Medium

Consecutive footnote superscript references are now comma‑delimited (e.g., `¹,²,³`).

Consecutive footnote superscript references are now comma‑delimited (e.g., `¹,²,³`).

Source: llm_adapter@2026-05-23

Confidence: low

Feature Medium

Internal hyperlinks and bookmark cross‑references now function within footnotes.

Internal hyperlinks and bookmark cross‑references now function within footnotes.

Source: llm_adapter@2026-05-23

Confidence: low

Feature Medium

Added 44 real‑world DOCX test fixtures from Apache POI, Pandoc, Mammoth.js, python‑docx, and LibreOffice; all pass `DocxDocument.open()`.

Added 44 real‑world DOCX test fixtures from Apache POI, Pandoc, Mammoth.js, python‑docx, and LibreOffice; all pass `DocxDocument.open()`.

Source: llm_adapter@2026-05-23

Confidence: low

Bugfix Medium

Multilevel list tab stops are now written into every `w:lvl`, preventing rightward drift of heading text.

Multilevel list tab stops are now written into every `w:lvl`, preventing rightward drift of heading text.

Source: llm_adapter@2026-05-23

Confidence: high

Bugfix Medium

Moved `import sys as _sys` to module top and unquoted type annotations (issue UP037).

Moved `import sys as _sys` to module top and unquoted type annotations (issue UP037).

Source: llm_adapter@2026-05-23

Confidence: high

Full changelog

What's New

Direct Edits Without Tracked-Change Markup (tracked=False)

All five editing tools now accept tracked: bool = True. Pass tracked=False to apply changes directly to the XML without emitting w:ins/w:del markup — useful for programmatic clean-up workflows where revision history is unwanted.

Affected tools: insert_text, delete_text, replace_text, modify_cell, edit_header_footer.

generate_change_summary — Email-Ready Change Log

New MCP tool that scans the open document for w:ins/w:del elements and writes a numbered .txt file with author, date, and text per change. Adjacent del+ins sibling pairs are grouped as REPLACEMENT entries. Suitable for pasting directly into an email or pull-request description.

diff_to_text — DOCX Diff With Plain-Text Output

New MCP tool that combines compare_documents (tracked-change DOCX) with a companion plain-text summary. Returns {docx_path, text_path, change_count}.

Multilevel List Tab-Alignment Fix

Explicit w:tabs/w:tab[@w:val="num"] tab stops are now written into every w:lvl in both create_multilevel_list() and the static _NUMBERING_XML template. Without these stops Word uses default tab intervals, causing section-heading text to drift rightward as numbers grow longer (e.g. 24.1 vs 24.1.1).

Footnote Improvements

  • add_footnote gains a url= parameter that wraps the footnote text in a hyperlink
  • add_footnote_ref for internal bookmark cross-references
  • Consecutive superscript refs are comma-delimited (¹,²,³)
  • Internal hyperlinks and bookmark cross-references in footnotes

Real-World DOCX Test Corpus (44 fixtures)

44 .docx files sourced from Apache POI, Pandoc, Mammoth.js, python-docx, and LibreOffice test suites. All 44 pass DocxDocument.open(). These serve as the doer-checker gate — synthetic fixtures alone cannot catch real-world OOXML quirks.

Bug Fixes

  • Fix CI: import sys as _sys moved to module top; quoted type annotations unquoted (UP037)

Full Changelog

https://github.com/SecurityRonin/docx-mcp/compare/v0.6.1...v0.7.0

Full Changelog: https://github.com/SecurityRonin/docx-mcp/compare/v0.6.1...v0.7.0

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track SecurityRonin/docx-mcp

Get notified when new releases ship.

Sign up free

About SecurityRonin/docx-mcp

Read and edit Word (.docx) documents with track changes, comments, footnotes, and structural validation. The only MCP server combining w:ins/w:del tracked changes, threaded comments, and footnotes with OOXML-level paraId validation and document auditing. 18 tools, Python 3.10+.

All releases →

Related context

Earlier breaking changes

  • v0.6.1 Empty `document_handle` resolves to `__default__` slot, maintaining backward compatibility.

Beta — feedback welcome: [email protected]