dcc-mcp-word
Word adapter for the DCC-MCP ecosystem — thin application layer over dcc-mcp-office.
Status: v0.1.0 — headless compile path live. Word IR → Open XML compile →
read-back verification runs end to end with no Word installation, and the
gate runs headless in CI. Field/TOC refresh, document reflow and
track-changes inspection are host_limited: declared, graded, and never
claimed as verified.
The old blocker note ("blocked on the
dcc-mcp-officeM1 release") is stale and removed.dcc-mcp-officeshipped M1 in v0.2.0 (2026-08-16) and is now at v0.2.3; the Word IR (crates/office-ir,pub mod word, proposal §13.3) and theWordBackend.csCOM backend have been present since then. The three placeholder repos stalled on an unreviewed blocker note, not on a technical wall.
Part of the DCC-MCP host matrix
dcc-mcp-word — Word adapter for DCC-MCP — headless Word IR to DOCX compile with read-back verification over the dcc-mcp-office runtime.
It is one of 47 host adapters in the DCC-MCP catalog. Every adapter speaks the same MCP protocol and builds on the same core runtime contract; each one exposes the tools its own host needs on top of that.
This block is generated from the catalog entry in
dcc-mcp-catalog.yml.
Re-run the generator after changing the catalog.
What v0.1.0 does
| Capability | Grade | Meaning |
|---|---|---|
word.document.compile |
verified |
Word IR → DOCX, headless, CI-green |
word.document.read_back |
verified |
Reopen the artifact; compare every paragraph and table cell |
word.paragraphs.write, word.lists.write, word.tables.write |
verified |
Structured content writes |
word.headers_footers.write, word.fields.write |
verified |
Per-section headers/footers; real Word field instructions |
word.fields.update, word.toc.rebuild |
host_limited |
Word computes field results — needs the desktop app |
word.document.reflow, word.track_changes.inspect |
host_limited |
Needs the Word COM object model |
word.content_controls.fill, word.figures.inline |
unimplemented |
Parsed and validated by the IR, not emitted by the writer |
Run dcc-mcp-word capabilities for the machine-readable report, or
dcc-mcp-word preflight for the per-machine self-check.
Install
pip install dcc-mcp-word # adapter only (stdlib + dcc-mcp-core)
pip install "dcc-mcp-word[headless]" # + python-docx, for the compile path
python-docx is an opt-in extra, matching how dcc-mcp-excel treats
openpyxl: importing the package never pulls it, so the adapter stays
installable inside DCCs that pin their own version. A test enforces this
(tests/test_runtime_purity.py).
Quick start
# 1. a Word IR envelope (office-ir/1.0, kind: word)
cat > call-sheet.json <<'JSON'
{
"schema_version": "office-ir/1.0",
"kind": "word",
"document_id": "fpt:call-sheet-2026-10-07",
"metadata": {"title": "Call sheet — 2026-10-07", "author": "pipeline"},
"document": {
"sections": [{"title": "Schedule", "paragraphs": [{"text": "Call 07:00"}]}],
"tables": [{"header": true, "rows": [["Shot", "Status"], ["sh010", "ip"]]}],
"footers": [{"section_index": 0, "text": "Page"}],
"fields": [{"kind": "toc"}, {"kind": "page"}]
}
}
JSON
# 2. compile + read back
python -m dcc_mcp_word.skills.word-document.scripts.generate_document \
--input call-sheet.json --out output
The script prints JSON: artifact path, read-back verdict (paragraphs and cells checked, mismatches), validation checks and warnings.
Input contract
The adapter mirrors the Rust dcc-mcp-office-ir word schema 1:1 — styles,
sections, paragraphs, lists, tables, figures, content controls,
headers/footers, fields and review policy. See
src/dcc_mcp_word/word_ir.py for the
annotated contract, or word-document/SKILL.md for the agent-facing guide.
The honest boundary
python-docx writes a valid DOCX but has no layout engine. That is why the
two halves of word.document.reflow are graded separately:
- Compiling (IR → DOCX) is headless and
verified. - Reflowing, re-paginating, and refreshing field results needs Word, and is
host_limited.
A TOC field is written as a real field instruction. Word fills in the
entries when the document is opened — verified on a Word 365 host: before
Fields.Update() the TOC shows its placeholder, after it shows
Schedule→1, Safety→2. See
examples/com-verification.json.
Test
pip install -e ".[dev]"
pytest
ruff check src tests
The headless gate must stay green without Word installed — that is the proof the adapter does not depend on a desktop Word installation.
Upstream
dcc-mcp-office— protocol, IR, C# COM runtime, jobs, security policydcc-mcp-core— gateway, skills runtime, sidecar lifecycle
License
MIT
Metadata
Release files for dcc-mcp-word 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| dcc_mcp_word-0.1.2.tar.gz | 79.9 kB | With provenance | Details for dcc_mcp_word-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dcc_mcp_word-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for dcc_mcp_word-0.1.2-py3-none-any.whl |
Total release size: 120.3 kB
Release files / dcc_mcp_word-0.1.2.tar.gz
| Download URL | dcc_mcp_word-0.1.2.tar.gz |
|---|---|
| Size | 79.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c85969a96370cc7b9b2f90d2e5c8635bd5a01dcd6cecb3287bf2abc1b261bd4b
|
|
BLAKE2b-256 checksum How to use checksums |
7a92a857b84152093a500df2ea9ef2371c2e0e8edc0a2b23d6792d4ce1122ff8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / dcc_mcp_word-0.1.2-py3-none-any.whl
| Download URL | dcc_mcp_word-0.1.2-py3-none-any.whl |
|---|---|
| Size | 40.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f4ac79722b4ad653b0acd9844fa1a992994e8a8935f2a65bb7d473376c833a5c
|
|
BLAKE2b-256 checksum How to use checksums |
ed9e95453a48bbeda3a2971fd8d5598105673cf245c793cc43f2ab2280521ebb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logSecurity for dcc-mcp-word 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for dcc_mcp_word-0.1.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.