docx-comparison-mcp
A3 横向新旧对比表 / A4 纵向规格说明书 Word 文档生成 MCP 服务器
这是一个本地 MCP 服务器,可从 Dify / LangFlow / LangChain / Claude Desktop 等任意 AI 框架中调用。
设计理念:GET schema → POST generate
采用了与 excel-mcp 相同的“先获取模式(Schema)再生成”的模式。
但与 excel-mcp 有根本区别:
excel-mcp | docx-mcp | |
模式来源 | 运行时读取 Excel 文件标题行(动态) | 编译时固定的输出格式(静态) |
“写入目标” | 固定的 Excel 文件(路径始终相同) | 每次新建(每次 PDF 上传生成新文档) |
追加概念 | 有(追加到现有行) | 无(PDF 1 次 = 1 份新 docx) |
在 Dify 工作流中的定位:
[HTTP ノード] GET /schema/comparison
↓ prompt_context(列定義の代わりに出力フォーマット定義)
[LLM ノード] アップロードされた PDF を Gemini が読む + schema context を注入
↓ { doc_title, sections: [...] } の JSON
[HTTP ノード] POST /generate { spec: { ... } }
↓ download_url
[End]prompt_context 字段的格式可直接粘贴到 Dify 的 LLM 节点的系统提示词中。
功能
A3 横向,旧/新/备注 3 列格式(新旧对比表)
A4 纵向,封面、制定修订记录表、正文(规格说明书)
红色文本(变更/新增部分)
带有蓝色下划线的 Word 注释锚点
支持多个章节(封面、制定修订记录、各条款)
stdio 模式(面向 Claude Desktop / Claude Code)
HTTP 模式(面向 Dify / LangFlow)
设置
# 1. 依存パッケージのインストール
npm install
# 2. テスト実行
npm test
# → test-output.docx が生成されます
# 3a. MCP (stdio) モード起動 — Claude Desktop / Claude Code 向け
npm start
# 3b. HTTP モード起動 — Dify / LangFlow / REST 向け
npm run start:http
# → http://localhost:3456 で起動注册到 Claude Desktop
添加到 ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"docx-comparison": {
"command": "node",
"args": ["/absolute/path/to/docx-mcp/src/index.js"],
"env": {
"OUTPUT_DIR": "/Users/yourname/Desktop/docx-output"
}
}
}
}接口列表
方法 | 路径 | 说明 |
|
| 服务器存活检查 |
|
| API 文档(静态) |
|
| 用于 LLM 注入的新旧对比表模式 |
|
| 用于 LLM 注入的规格说明书模式 |
|
| 生成新旧对比表(本地保存) |
|
| 生成新旧对比表(文件直接流式传输) |
|
| 生成规格说明书(本地保存) |
|
| 生成规格说明书(文件直接流式传输) |
GET /schema/comparison — 新旧对比表模式
返回注入给 LLM 的格式定义。请将 prompt_context 字段粘贴到 Dify 的 LLM 节点的系统提示词中。
响应概要:
{
"doc_type": "comparison",
"description": "新旧比較表(A3横、旧/新/備考 3カラム)Word文書の生成スキーマ",
"prompt_context": "## 新旧比較表 生成形式\n\nPOST /generate に渡す spec を...",
"required_fields": ["doc_title", "sections"],
"sections_schema": { ... },
"paragraph_schema": { ... },
"example": { ... }
}GET /schema/manual — 规格说明书模式
{
"doc_type": "manual",
"description": "仕様書(A4縦、表紙・経歴表・本文)Word文書の生成スキーマ",
"prompt_context": "## 仕様書 生成形式\n\nPOST /generate/manual に渡す spec を...",
"required_fields": ["doc_title", "sections"],
"sections_schema": { ... },
"history_schema": { ... },
"example": { ... }
}Dify 工作流集成模式
新旧对比表(PDF 对比)
[ファイルアップロード] ユーザーが PDF をアップロード
↓
[HTTP ノード] GET /schema/comparison
↓ body.prompt_context を変数に格納
[LLM ノード]
システムプロンプト: {{schema_prompt_context}}
ユーザーメッセージ: {{uploaded_pdf_content}}
↓ spec JSON(新旧比較表形式)
[HTTP ノード] POST /generate { "spec": {{llm_output}} }
↓ { "download_url": "http://...", "filename": "...", "sections": N }
[End]Gemini 通过多模态读取上传的 PDF。无需在服务器端进行 PDF 解析。
规格说明书生成
[HTTP ノード] GET /schema/manual
↓ prompt_context
[LLM ノード] 仕様書内容の構造化
[HTTP ノード] POST /generate/manual { "spec": {...} }JSON 规格说明(新旧对比表)
段落规格(old_paragraphs / new_paragraphs 的各元素)
{
"text": "テキスト(シンプルな場合)",
"segments": [
{ "text": "通常テキスト" },
{ "text": "赤い変更箇所", "color": "red", "underline": true },
{ "text": "続き" }
],
"bold": false,
"color": "black",
"underline": false,
"align": "justify",
"indent": 0,
"sz": 19
}text 和 segments 二选一使用。当一个段落内包含多种格式时使用 segments。
注释锚点
{
"anchor": "作業手順確認書類",
"text": "名称変更:作業手順確認書類→作業安全確認表",
"column": "old"
}anchor: 想要添加注释的文本(完全匹配)text: 显示在 Word 注释气泡中的内容column:"old"|"new"|"both"
LangFlow / Python 使用示例
import requests
# 1. スキーマ取得(Dify HTTP ノードの代替)
schema = requests.get("http://localhost:3456/schema/comparison").json()
print(schema["prompt_context"]) # → LLM に注入するテキスト
# 2. 新旧比較表生成
spec = {
"doc_title": "通信関係請負工事共通仕様書 比較表",
"sections": [
{
"id": "section19",
"title": "【19.施工方法】",
"status": "changed",
"old_paragraphs": [{"text": "19.施工方法および工事工程", "bold": True}],
"new_paragraphs": [{"text": "20.施工方法および工事工程", "bold": True}],
"notes": ["・名称変更に伴う見直し"],
"comments": [{"anchor": "作業手順確認書類", "text": "名称変更", "column": "old"}],
}
]
}
# ローカル保存 + パス返却
response = requests.post("http://localhost:3456/generate", json={
"spec": spec,
"output_filename": "比較表_第3回改正",
})
print(response.json())
# → {"success": true, "path": ".../比較表_第3回改正.docx", "download_url": "...", ...}文件结构
docx-mcp/
├── src/
│ ├── index.js # MCP stdio サーバー(Claude Desktop / Code)
│ ├── http-server.js # HTTP REST サーバー(Dify / LangFlow)
│ ├── docx-generator.js # コア: JSON → 新旧比較表 .docx 変換エンジン
│ ├── manual-generator.js # コア: JSON → 仕様書 .docx 変換エンジン
│ ├── schema.js # Zod バリデーション + LLM 注入用スキーマ定義
│ └── test.js # テスト
├── docs/
│ └── dify-tool.yaml # Dify Custom Tool / OpenAPI 定義
├── package.json
└── README.md环境变量
变量 | 默认值 | 说明 |
|
| 生成文件的保存路径 |
|
| HTTP 模式的端口号 |
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/bailangcheng818/docx-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
