VOOZH about

URL: https://glama.ai/mcp/servers/bailangcheng818/docx-mcp?locale=es-ES

⇱ docx-comparison-mcp by bailangcheng818 | Glama


docx-comparison-mcp

Servidor MCP para generar documentos de Word: Tabla comparativa antiguo/nuevo (A3 horizontal) / Especificaciones (A4 vertical)

Es un servidor MCP local que puede ser invocado desde cualquier marco de trabajo de IA como Dify, LangFlow, LangChain o Claude Desktop.


Filosofía de diseño: GET schema → POST generate

Adopta el mismo patrón que excel-mcp: "obtener primero el esquema y luego generar".

Sin embargo, existen diferencias fundamentales con excel-mcp:

excel-mcp

docx-mcp

Origen del esquema

Lee la fila de encabezado del archivo Excel en tiempo de ejecución (dinámico)

Formato de salida fijo en tiempo de compilación (estático)

"Destino de escritura"

Archivo Excel determinado (siempre la misma ruta)

Generación nueva cada vez (un documento nuevo por cada carga de PDF)

Concepto de append

Sí (añadir a filas existentes)

No (1 PDF = 1 nuevo docx)

Posicionamiento en el flujo de trabajo de Dify:

[HTTP ノード] GET /schema/comparison
 ↓ prompt_context(列定義の代わりに出力フォーマット定義)
[LLM ノード] アップロードされた PDF を Gemini が読む + schema context を注入
 ↓ { doc_title, sections: [...] } の JSON
[HTTP ノード] POST /generate { spec: { ... } }
 ↓ download_url
[End]

El campo prompt_context tiene un formato que se puede pegar directamente en el prompt del sistema del nodo LLM de Dify.


Funcionalidades

  • Formato A3 horizontal, 3 columnas: Antiguo/Nuevo/Notas (Tabla comparativa)

  • Formato A4 vertical, portada, tabla de historial de revisiones, cuerpo del documento (Especificaciones)

  • Texto en rojo (secciones modificadas/añadidas)

  • Anclas de comentarios de Word con subrayado azul

  • Soporte para múltiples secciones (portada, historial de revisiones, cláusulas individuales)

  • Modo stdio (para Claude Desktop / Claude Code)

  • Modo HTTP (para Dify / LangFlow)


Configuración

# 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 で起動

Registro en Claude Desktop

Añadir a ~/.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"
 }
 }
 }
}

Lista de endpoints

Método

Ruta

Descripción

GET

/health

Verificación de estado del servidor

GET

/schema

Documentación de la API (estática)

GET

/schema/comparison

Esquema para inyección de LLM en tabla comparativa

GET

/schema/manual

Esquema para inyección de LLM en especificaciones

POST

/generate

Generación de tabla comparativa (guardado local)

POST

/generate/download

Generación de tabla comparativa (flujo directo de archivo)

POST

/generate/manual

Generación de especificaciones (guardado local)

POST

/generate/manual/download

Generación de especificaciones (flujo directo de archivo)


GET /schema/comparison — Esquema de tabla comparativa

Devuelve la definición de formato para inyectar en el LLM. Por favor, pegue el campo prompt_context en el prompt del sistema del nodo LLM de Dify.

Resumen de respuesta:

{
 "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 — Esquema de especificaciones

{
 "doc_type": "manual",
 "description": "仕様書(A4縦、表紙・経歴表・本文)Word文書の生成スキーマ",
 "prompt_context": "## 仕様書 生成形式\n\nPOST /generate/manual に渡す spec を...",
 "required_fields": ["doc_title", "sections"],
 "sections_schema": { ... },
 "history_schema": { ... },
 "example": { ... }
}

Patrón de integración de flujo de trabajo de Dify

Tabla comparativa (comparación de 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 lee el PDF cargado de forma multimodal. No es necesario analizar el PDF en el lado del servidor.

Generación de especificaciones

[HTTP ノード] GET /schema/manual
 ↓ prompt_context
[LLM ノード] 仕様書内容の構造化
[HTTP ノード] POST /generate/manual { "spec": {...} }

Especificaciones de JSON (Tabla comparativa)

Especificaciones de párrafo (cada elemento de 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
}

Se utiliza text o segments. segments se usa cuando hay múltiples formatos mezclados dentro de un mismo párrafo.

Anclas de comentarios

{
 "anchor": "作業手順確認書類",
 "text": "名称変更:作業手順確認書類→作業安全確認表",
 "column": "old"
}
  • anchor: Texto al que se desea añadir un comentario (coincidencia exacta)

  • text: Contenido que se mostrará en el globo de comentario de Word

  • column: "old" | "new" | "both"


Ejemplo de uso en 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": "...", ...}

Estructura de archivos

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

Variables de entorno

Variable

Predeterminado

Descripción

OUTPUT_DIR

~/Desktop/docx-output

Destino de guardado de archivos generados

PORT

3456

Número de puerto para el modo 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