VOOZH about

URL: https://glama.ai/mcp/servers/bailangcheng818/docx-mcp?locale=ru-RU

⇱ docx-comparison-mcp by bailangcheng818 | Glama


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"
 }
 }
 }
}

Список эндпоинтов

Метод

Путь

Описание

GET

/health

Проверка работоспособности сервера

GET

/schema

Документация API (статическая)

GET

/schema/comparison

Схема для внедрения LLM в сравнительную таблицу

GET

/schema/manual

Схема для внедрения LLM в спецификацию

POST

/generate

Генерация сравнительной таблицы (локальное сохранение)

POST

/generate/download

Генерация сравнительной таблицы (прямая потоковая передача файла)

POST

/generate/manual

Генерация спецификации (локальное сохранение)

POST

/generate/manual/download

Генерация спецификации (прямая потоковая передача файла)


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: содержимое, отображаемое в баллоне комментария 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

Переменные окружения

Переменная

По умолчанию

Описание

OUTPUT_DIR

~/Desktop/docx-output

Место сохранения сгенерированных файлов

PORT

3456

Номер порта для HTTP-режима

F
license - not found
A
quality
C
maintenance

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