psychquant avatar

Che Word Mcp

psychquant/che-word-mcp

A pure Swift OOXML implementation that manipulates Word documents without any Microsoft or Node.js dependencies. You get 234 tools covering everything from basic text replacement to programmatic track changes, content controls, and table manipulation. The round trip fidelity is production grade: untouched parts stay byte identical, and it handles complex documents with nested tables, comment threads, and equation LaTeX. Particularly notable for the autosave snapshots and atomic rename saves that guard against corruption during multi step edits. Ships as a single universal binary. Reach for this when you need Claude to read or modify docx files directly, whether that's batch processing manuscripts, generating reviewable redlines, or maintaining document templates with proper styles and numbering.

GitHub stars
5
tools
80
transport
STDIO
last updated
Mar 13, 2026

Tools

80 tools

Public tool metadata for what this MCP can expose to an agent.

create_documentCreate a new Word document

Create a new Word document

No parameter schema in public metadata yet.

open_documentOpen an existing .docx file (track_changes default false since v3.0.0)

Open an existing .docx file (track_changes default false since v3.0.0)

No parameter schema in public metadata yet.

save_documentSave document to .docx file

Save document to .docx file

No parameter schema in public metadata yet.

close_documentClose an open document (pass discard_changes: true to drop dirty edits)

Close an open document (pass discard_changes: true to drop dirty edits)

No parameter schema in public metadata yet.

finalize_documentSave and close in one guarded step

Save and close in one guarded step

No parameter schema in public metadata yet.

list_open_documentsList all open documents

List all open documents

No parameter schema in public metadata yet.

get_session_stateSnapshot { source_path, disk_hash_hex, disk_mtime_iso8601, is_dirty, track_changes_enabled }

Snapshot { source_path, disk_hash_hex, disk_mtime_iso8601, is_dirty, track_changes_enabled }

No parameter schema in public metadata yet.

get_document_session_stateLegacy session snapshot (preserved for backward compat)

Legacy session snapshot (preserved for backward compat)

No parameter schema in public metadata yet.

revert_to_diskRe-read source path, discard in-memory edits (destructive-by-design)

Re-read source path, discard in-memory edits (destructive-by-design)

No parameter schema in public metadata yet.

reload_from_diskCooperative reload; requires force: true on dirty doc

Cooperative reload; requires force: true on dirty doc

No parameter schema in public metadata yet.

check_disk_driftInformational — returns { drifted, disk_mtime, stored_mtime, disk_hash_matches }

Informational — returns { drifted, disk_mtime, stored_mtime, disk_hash_matches }

No parameter schema in public metadata yet.

get_textGet plain text content

Get plain text content

No parameter schema in public metadata yet.

get_paragraphsGet all paragraphs with formatting

Get all paragraphs with formatting

No parameter schema in public metadata yet.

estimate_paragraph_for_pageEstimate a Word UI page number to a get_paragraphs candidate range (heuristic JSON with confidence + warning)

Estimate a Word UI page number to a get_paragraphs candidate range (heuristic JSON with confidence + warning)

No parameter schema in public metadata yet.

insert_paragraphInsert a new paragraph

Insert a new paragraph

No parameter schema in public metadata yet.

update_paragraphUpdate paragraph content

Update paragraph content

No parameter schema in public metadata yet.

delete_paragraphDelete a paragraph

Delete a paragraph

No parameter schema in public metadata yet.

replace_textCross-run-safe find & replace with scope (body|al

Cross-run-safe find & replace with scope (body|al

No parameter schema in public metadata yet.

insert_tableInsert a table with optional data

Insert a table with optional data

No parameter schema in public metadata yet.

get_tablesGet all tables information

Get all tables information

No parameter schema in public metadata yet.

update_cellUpdate cell content

Update cell content

No parameter schema in public metadata yet.

delete_tableDelete a table

Delete a table

No parameter schema in public metadata yet.

merge_cellsMerge cells horizontally or vertically

Merge cells horizontally or vertically

No parameter schema in public metadata yet.

set_table_styleSet table borders and shading

Set table borders and shading

No parameter schema in public metadata yet.

add_row_to_tableRow management

Row management

No parameter schema in public metadata yet.

delete_row_from_tableRow management

Row management

No parameter schema in public metadata yet.

add_column_to_tableColumn management

Column management

No parameter schema in public metadata yet.

delete_column_from_tableColumn management

Column management

No parameter schema in public metadata yet.

set_cell_widthCell sizing + alignment

Cell sizing + alignment

No parameter schema in public metadata yet.

set_cell_vertical_alignmentCell sizing + alignment

Cell sizing + alignment

No parameter schema in public metadata yet.

set_row_heightRow height + table alignment

Row height + table alignment

No parameter schema in public metadata yet.

set_table_alignmentRow height + table alignment

Row height + table alignment

No parameter schema in public metadata yet.

set_table_conditional_styleApply firstRow / lastRow / bandedRows etc. (10 region types) via <w:tblStylePr>

Apply firstRow / lastRow / bandedRows etc. (10 region types) via <w:tblStylePr>

No parameter schema in public metadata yet.

insert_nested_tableInsert table-in-cell, depth-limited to 5 (throws nested_too_deep)

Insert table-in-cell, depth-limited to 5 (throws nested_too_deep)

No parameter schema in public metadata yet.

set_table_layoutSwitch fixed / autofit

Switch fixed / autofit

No parameter schema in public metadata yet.

set_header_rowMark row as <w:tblHeader/> for repeat-on-page-break

Mark row as <w:tblHeader/> for repeat-on-page-break

No parameter schema in public metadata yet.

set_table_indentTable-level left indent (<w:tblInd>)

Table-level left indent (<w:tblInd>)

No parameter schema in public metadata yet.

list_stylesList all available styles (Direct Mode supported)

List all available styles (Direct Mode supported)

No parameter schema in public metadata yet.

create_styleCreate custom style — extended with 6 v3.10 args

Create custom style — extended with 6 v3.10 args

No parameter schema in public metadata yet.

update_styleUpdate style definition — same 6 extended args

Update style definition — same 6 extended args

No parameter schema in public metadata yet.

delete_styleDelete custom style

Delete custom style

No parameter schema in public metadata yet.

get_style_inheritance_chainTraverse basedOn chain upward to root with cycle detection

Traverse basedOn chain upward to root with cycle detection

No parameter schema in public metadata yet.

link_stylesBidirectional <w:link> between paragraph and character style pair

Bidirectional <w:link> between paragraph and character style pair

No parameter schema in public metadata yet.

set_latent_stylesControl Quick Style Gallery defaults via <w:latentStyles> block

Control Quick Style Gallery defaults via <w:latentStyles> block

No parameter schema in public metadata yet.

add_style_name_aliasLocalized <w:name> alias per BCP 47 lang code

Localized <w:name> alias per BCP 47 lang code

No parameter schema in public metadata yet.

insert_bullet_listInsert bullet list

Insert bullet list

No parameter schema in public metadata yet.

insert_numbered_listInsert numbered list

Insert numbered list

No parameter schema in public metadata yet.

set_list_levelSet list indentation level

Set list indentation level

No parameter schema in public metadata yet.

set_outline_levelSet paragraph outline level (TOC inclusion)

Set paragraph outline level (TOC inclusion)

No parameter schema in public metadata yet.

list_numbering_definitionsEnumerate every abstractNum + num pair

Enumerate every abstractNum + num pair

No parameter schema in public metadata yet.

get_numbering_definitionFetch single num by id

Fetch single num by id

No parameter schema in public metadata yet.

create_numbering_definitionNew abstractNum + paired num (max 9 levels)

New abstractNum + paired num (max 9 levels)

No parameter schema in public metadata yet.

override_numbering_level<w:lvlOverride> for per-level start values

<w:lvlOverride> for per-level start values

No parameter schema in public metadata yet.

assign_numbering_to_paragraph<w:numPr> attachment by paragraph index

<w:numPr> attachment by paragraph index

No parameter schema in public metadata yet.

continue_listResume numbering across paragraphs

Resume numbering across paragraphs

No parameter schema in public metadata yet.

start_new_listReset numbering to start

Reset numbering to start

No parameter schema in public metadata yet.

gc_orphan_numberingSweep unreferenced num definitions (abstractNums preserved)

Sweep unreferenced num definitions (abstractNums preserved)

No parameter schema in public metadata yet.

set_page_sizeSet page size (A4, Letter, etc.)

Set page size (A4, Letter, etc.)

No parameter schema in public metadata yet.

set_page_marginsSet page margins

Set page margins

No parameter schema in public metadata yet.

set_page_orientationSet portrait or landscape

Set portrait or landscape

No parameter schema in public metadata yet.

insert_page_breakInsert page break

Insert page break

No parameter schema in public metadata yet.

insert_section_breakInsert section break

Insert section break

No parameter schema in public metadata yet.

get_all_sectionsReturn SectionInfo array per section in document order

Return SectionInfo array per section in document order

No parameter schema in public metadata yet.

set_section_break_typenextPage / continuous / evenPage / oddPage

nextPage / continuous / evenPage / oddPage

No parameter schema in public metadata yet.

set_section_vertical_alignment<w:vAlign> for cover pages

<w:vAlign> for cover pages

No parameter schema in public metadata yet.

set_page_number_format<w:pgNumType w:fmt> for Roman numerals etc.

<w:pgNumType w:fmt> for Roman numerals etc.

No parameter schema in public metadata yet.

set_line_numbers_for_section<w:lnNumType> for legal documents

<w:lnNumType> for legal documents

No parameter schema in public metadata yet.

set_title_page_distinctToggle <w:titlePg/> per section

Toggle <w:titlePg/> per section

No parameter schema in public metadata yet.

set_section_header_footer_referencesAssign per-type rId (default/first/even)

Assign per-type rId (default/first/even)

No parameter schema in public metadata yet.

add_headerAdd header content

Add header content

No parameter schema in public metadata yet.

update_headerUpdate header content (preserves filename + rId; in-place tempDir overwrite)

Update header content (preserves filename + rId; in-place tempDir overwrite)

No parameter schema in public metadata yet.

add_footerAdd footer content

Add footer content

No parameter schema in public metadata yet.

update_footerUpdate footer content

Update footer content

No parameter schema in public metadata yet.

insert_page_numberInsert page number field

Insert page number field

No parameter schema in public metadata yet.

list_headersEnumerate header parts with type (default/first/even) + section_id + has_watermark

Enumerate header parts with type (default/first/even) + section_id + has_watermark

No parameter schema in public metadata yet.

get_headerRead text + full XML + watermark structure

Read text + full XML + watermark structure

No parameter schema in public metadata yet.

delete_headerRemove typed model entry + tempDir file + Relationship + Content_Types Override

Remove typed model entry + tempDir file + Relationship + Content_Types Override

No parameter schema in public metadata yet.

list_watermarksScan all headers for VML watermark shapes — text or image

Scan all headers for VML watermark shapes — text or image

No parameter schema in public metadata yet.

get_watermarkSingle-header watermark detail (returns null if no watermark)

Single-header watermark detail (returns null if no watermark)

No parameter schema in public metadata yet.

list_footersEnumerate footer parts with type + section_id + has_page_number

Enumerate footer parts with type + section_id + has_page_number

No parameter schema in public metadata yet.

Sponsors

Readme

che-word-mcp

A Swift-native MCP (Model Context Protocol) server for Microsoft Word document (.docx) manipulation. This is the first Swift OOXML library that directly manipulates Office Open XML without any third-party Word dependencies.

中文說明

文件格式 profile(原始碼建置功能,尚未發布)

create_document、open_document、execute_script 新增可選 profile: "inherit" | "official"。此功能需要以 SwiftPM editable dependency 整合尚未發布的 OOXMLSwift profile/store;本機最終驗收使用 OOXMLSwift 3aa221aa3bba3657af68f1c8d22416d3efe9863e,追蹤中的遠端 pin 並非此修補。目前發布 binary 不提供,本次未更新 release 版本。

與新版 macdoc 共用 ~/.config/macdoc/config.json:新建依明示 profile → document.defaultProfile → inherit;開啟既有文件及 replay 僅採明示 profile。以新版 macdoc config document import-official --template /path/to/Normal.dotm 匯入安全快照,再以 config document set-default official 選擇新建預設。匯入不複製正文、不修改 Normal、不自動切換預設;來源變更不影響已保存的快照。


View the full README on GitHub

Details

Repository
github.com/psychquant/che-word-mcp
Categories
Documents & Knowledge, Mobile Development, Productivity & Office
Package
https://github.com/PsychQuant/che-word-mcp/releases/download/v1.17.0/CheWordMCP
Transport
STDIO
Registry
MCP registry, active

Related Documents & Knowledge MCP servers

View all
1adelelo13 avatarNeuromcpadelelo13/neuromcpSemantic memory for AI agents with hybrid search, knowledge graph, and consolidation4stars
2getalai avatarPresentationsgetalai/alai-mcp-serverGenerate, edit, and export AI presentations to PDF, PPTX, or a shareable link.4stars
3indhar01 avatarMemographindhar01/memographGraph-based memory system for LLMs with knowledge graphs and semantic search.4stars
4entire-vc avatarEvc Team Relay Mcpentire-vc/evc-team-relay-mcpMCP server for AI agent read/write access to Obsidian vaults via EVC Team Relay.3stars
5lukisch avatarBACH FileCommanderlukisch/bach-filecommander-mcp43 tools for filesystem, process management, sessions, search, OCR, ZIP, and PDF export.3stars
6pvliesdonk avatarScholar MCPpvliesdonk/scholar-mcpScholarly papers, patents, books, standards and PDF conversion3stars