Skip to main content
Glama
Mavline

DOCX MCP Server

by Mavline

DOCX MCP 服务器

通用 DOCX 处理服务器,实现模型上下文协议(MCP),支持完整的 OOXML。

功能

  • 完整 OOXML 支持:读写所有 DOCX 文档部件(document.xml、样式、编号、页眉/页脚等)

  • 文本操作:以字面量或正则模式提取、查找和替换文本

  • 表格编辑:插入/删除行和列、合并单元格、设置单元格内容

  • 结构化数据标签(SDT):按标签或别名获取/设置内容控件

  • 图像:列出图像、插入内联或锚定图像,并控制位置/大小

  • 批注与修订:列出批注、添加/删除批注、接受所有跟踪修订

  • 文档属性:读写元数据(标题、作者、主题等)

  • LRU 缓存:内存高效的文档部件缓存

  • Stdio 传输:通过 stdin/stdout 进行 MCP 通信

安装

npm install
npm run build

运行

开发

npm run dev

生产

npm start

使用 Claude Code

claude mcp add --scope user --transport stdio docx -- node /path/to/dist/index.js

工具

文档管理

docx.open

从文件或 base64 打开 DOCX 文档

{
  "docId": "uuid",
  "parts": ["word/document.xml", "word/styles.xml", ...],
  "partCount": 42,
  "props": { "core": {...}, "app": {...} }
}

docx.close

关闭并卸载文档

docx.save

将文档保存到文件或返回 base64

部件管理

docx.list_parts

列出文档中的所有部件

docx.part_read

读取特定部件的原始 XML

docx.part_write

写入/更新部件的 XML 内容

文本操作

docx.get_text

提取文档中的所有文本

{
  "docId": "uuid",
  "scope": "document" | "headers" | "footers" | "all"
}

docx.find

搜索文本并返回上下文

{
  "docId": "uuid",
  "query": "search term",
  "mode": "literal" | "regex"
}

docx.replace_text

替换文档中的文本

{
  "docId": "uuid",
  "match": "old text",
  "replace": "new text",
  "mode": "literal" | "regex"
}

表格

docx.tables_list

列出所有表格及其尺寸

{
  "tables": [
    {
      "xpath": "/w:document/w:body/w:tbl[1]",
      "rows": 3,
      "colsApprox": 4
    }
  ]
}

docx.table_edit

修改表格结构和内容

{
  "docId": "uuid",
  "tableXPath": "/w:document/w:body/w:tbl[1]",
  "op": {
    "kind": "setCellText",
    "row": 0,
    "col": 1,
    "text": "new value"
  }
}

操作:

  • setCellText(row, col, text) - 设置单元格内容

  • insertRow(at) - 在指定位置插入行

  • deleteRow(at) - 删除行

  • insertCol(at) - 插入列

  • deleteCol(at) - 删除列

结构化数据(SDT)

docx.sdt_get

按标签或别名获取内容控件内容

docx.sdt_put

更新内容控件

图像

docx.images_list

列出所有图像及其元数据

docx.image_add

插入内联或锚定图像

样式与编号

docx.styles_get / docx.styles_set

读写 styles.xml

docx.numbering_get / docx.numbering_set

读写 numbering.xml

页眉/页脚

docx.headers_footers_list

列出所有页眉/页脚部件

批注

docx.comments_list

列出所有批注

docx.comments_add

添加新批注

docx.changes_accept_all

接受文档中的所有跟踪修订

元数据

docx.metadata_get

获取文档属性(标题、作者、创建时间、修改时间等)

测试场景

1. 基本读写

# Open document
docx.open: { "path": "/path/to/document.docx" }

# Get text
docx.get_text: { "docId": "returned-id" }

# Replace text
docx.replace_text: {
  "docId": "returned-id",
  "match": "old text",
  "replace": "new text"
}

# Save
docx.save: { "docId": "returned-id", "returnBase64": true }

2. 表格操作

# List tables
docx.tables_list: { "docId": "id" }

# Edit cell
docx.table_edit: {
  "docId": "id",
  "tableXPath": "/w:document/w:body/w:tbl[1]",
  "op": { "kind": "setCellText", "row": 0, "col": 0, "text": "Hello" }
}

3. 图像

# List images
docx.images_list: { "docId": "id" }

4. 跟踪修订

# Accept all changes
docx.changes_accept_all: { "docId": "id" }

架构

src/
  index.ts                    # Entry point
  errors.ts                   # Error definitions
  logger.ts                   # Logging utilities
  ooxml/
    namespaces.ts            # XML namespace definitions
    emu.ts                    # EMU conversion utilities
    dom.ts                    # XML DOM utilities (xmldom + fontoxpath)
    xmlParser.ts              # fast-xml-parser wrapper
    parts.ts                  # DOCX ZIP part management
    rels.ts                   # Relationships management
    text.ts                   # Text extraction & replacement
    tables.ts                 # Table operations
    sdt.ts                    # Structured Data Tags
    drawings.ts               # Images & DrawingML
    headersFooters.ts         # Headers/Footers
    styles.ts                 # Style operations
    numbering.ts              # Numbering operations
    changes.ts                # Track changes
    comments.ts               # Comments
  store/
    types.ts                  # Type definitions
    docStore.ts               # Document store + LRU cache
  mcp/
    schemas.ts                # Tool input schemas
    tools.ts                  # Tool implementations
    server.ts                 # MCP server setup

依赖

  • @modelcontextprotocol/sdk - MCP 实现

  • jszip - ZIP 归档处理

  • fast-xml-parser - 无损 XML 解析

  • @xmldom/xmldom - DOM 实现

  • fontoxpath - XPath 查询

  • diff-match-patch - 文本差异比较

  • lru-cache - 内存高效缓存

  • uuid - 文档 ID 生成

性能说明

  • 支持最大 10 MB 的文档

  • LRU 缓存限制为 100 个部件,内存上限 1 GB

  • 部件按需加载,不全部载入内存

  • 脏部件优化:仅将修改过的部件保存到 ZIP

  • 不深拷贝 XML 结构

限制

  • 页眉/页脚:基本支持(复杂的节结构可能需要手动调整)

  • 批注:基本列出/添加/删除(回复链未完全支持)

  • 跟踪修订:支持接受全部;详细修订检查有限

  • 样式:获取/设置完整 XML;不支持选择性样式合并

  • EMU/尺寸:已计算,但渲染几何取决于 Word 的布局引擎

许可证

MIT

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Use your own Word templates to convert Markdown → DOCX/PDF/HTML from any MCP-compatible AI.

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • MCP-native collaborative markdown editor with real-time AI document editing

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mavline/docx-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server