docx-comparison-mcp
MCP-сервер для создания документов Word: сравнительные таблицы (A3, альбомная ориентация) / спецификации (A4, книжная ориентация)
Локальный MCP-сервер, который можно вызывать из любого AI-фреймворка, такого как Dify, LangFlow, LangChain или Claude Desktop.
Концепция проектирования: GET schema → POST generate
Используется тот же паттерн, что и в excel-mcp: «сначала получаем схему, затем генерируем».
Однако есть фундаментальное отличие от excel-mcp:
excel-mcp | docx-mcp | |
Происхождение схемы | Чтение заголовков файла Excel во время выполнения (динамическое) | Фиксированный формат вывода при компиляции (статический) |
«Место записи» | Определенный файл Excel (всегда один и тот же путь) | Каждый раз создается новый (новый документ при каждой загрузке PDF) |
Концепция append | Есть (добавление в существующие строки) | Нет (1 PDF = 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 представлено в формате, который можно напрямую вставить в системный промпт узла LLM в Dify.
Функции
Формат 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 в системный промпт узла LLM в Dify.
Обзор ответа:
{
"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: содержимое, отображаемое в баллоне комментария Wordcolumn:"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
