docx-mcp
Lee y edita documentos de Word (.docx) con control de cambios, comentarios, notas al pie y validación estructural. 18 herramientas con validación de paraId a nivel OOXML y auditoría de documentos.
Documentación
docx-mcp
Dale a tu agente de IA la capacidad de crear, leer y editar documentos de Word. Las ediciones aparecen como cambios controlados en Microsoft Word — tachado rojo para eliminaciones, subrayado verde para inserciones — y después de cualquier sesión de revisión, tu agente puede generar un registro de cambios listo para enviar por correo que enumera cada inserción, eliminación y reemplazo. O compara dos archivos separados para obtener el mismo resultado automáticamente.
Para Quién Es Esto
Profesionales que producen entregables en Word y quieren que su agente de IA maneje el trabajo documental directamente:
- Legal — revisión de contratos con marcas de cambios, reemplazo de cláusulas por lotes en plantillas, anotaciones de comentarios que explican cada cambio, gestión de notas al pie
- Seguridad y Pruebas de Penetración — generar informes de pentest a partir de hallazgos en markdown, fusionar apéndices de múltiples compromisos, añadir comentarios de resumen ejecutivo, eliminar marcas de agua DRAFT antes de la entrega
- Consultoría — crear propuestas y SOW a partir de plantillas, convertir notas de reuniones en entregables formateados, actualizar términos de pago en masa en conjuntos de documentos
- Cumplimiento y Auditoría — validación estructural de la integridad del documento, verificación de referencias cruzadas, auditorías de nivel de encabezados, aplicación de protección
Qué Puedes Pedirle a Tu Agente Que Haga
Revisar un contrato:
"Abre contract.docx, encuentra cada instancia de 'Net 30', cámbiala a 'Net 60', y añade un comentario en cada una explicando que se actualizó según la Enmienda 3. Guarda como contract_revised.docx."
Generar un informe desde markdown:
"Convierte mi pentest-findings.md a un documento de Word usando la plantilla de informe del cliente. Añade notas al pie para cada referencia CVE."
Editar por lotes una biblioteca de plantillas:
"Abre la plantilla MSA, reemplaza 'ACME Corp' con 'GlobalTech Inc' en todas partes, actualiza la fecha de vigencia en el encabezado, y establece la protección del documento solo para cambios controlados."
Auditar un documento antes de enviarlo:
"Abre el entregable final, ejecuta una auditoría estructural, verifica si hay marcadores DRAFT o TODO, valida todas las referencias cruzadas de notas al pie, y elimina cualquier marca de agua."
Tu agente maneja todo el flujo de trabajo — abrir el archivo, navegar la estructura, hacer ediciones precisas con historial de revisión completo, validar la integridad y guardar — mientras tú te concentras en el contenido.
Instalación
Claude Code (recomendado):
claude mcp add docx-mcp -- uvx docx-mcp-server
Eso es todo. Una skill complementaria se instala automáticamente la primera vez que se inicia el servidor, enseñando a Claude el flujo de trabajo de edición de documentos, las trampas de OOXML y la lista de verificación de auditoría. Se actualiza automáticamente en cada actualización.
Otras plataformas y métodos de instalación
Claude Desktop:
Añade a tu configuración de MCP:
{
"mcpServers": {
"docx-mcp": {
"command": "uvx",
"args": ["docx-mcp-server"]
}
}
}
Cursor / Windsurf / VS Code:
Añade a tu archivo de configuración de MCP:
{
"mcpServers": {
"docx-mcp": {
"command": "uvx",
"args": ["docx-mcp-server"]
}
}
}
OpenClaw:
mcpServers:
docx-mcp:
command: uvx
args:
- docx-mcp-server
Con pip:
pip install docx-mcp-server
Capacidades
| Capacidad | Lo que tu agente puede hacer |
|---|---|
| Crear documentos | Empezar en blanco, desde una plantilla .dotx, o desde markdown — encabezados, tablas, listas, imágenes, notas al pie, bloques de código, tipografía inteligente |
| Cambios controlados | Insertar, eliminar y reemplazar texto como revisiones controladas — inserciones subrayadas, eliminaciones con tachado rojo. Pasa tracked=False a cualquier herramienta de edición para escribir el cambio directamente sin marcas de revisión. Aceptar o rechazar cambios por autor. |
| Registro de cambios | Después de editar con cambios controlados, llama a generate_change_summary para obtener un .txt numerado que enumera cada inserción, eliminación y reemplazo. O usa diff_to_text para comparar dos archivos separados y obtener el mismo resultado automáticamente — útil para versiones de documentos que no editaste tú mismo. |
| Comentarios | Añadir comentarios anclados a párrafos específicos, responder a hilos de comentarios |
| Buscar y reemplazar | Buscar por texto o regex en cuerpo, notas al pie y comentarios — luego hacer ediciones específicas |
| Tablas | Crear tablas, modificar celdas, añadir o eliminar filas — todo con seguimiento de revisiones |
| Notas al pie y notas finales | Añadir, listar y validar referencias cruzadas |
| Formato | Negrita, cursiva, subrayado, color — con seguimiento de revisiones para que los cambios de formato sean visibles |
| Encabezados y pies de página | Leer y editar contenido de encabezados/pies de página con cambios controlados |
| Imágenes | Listar imágenes incrustadas, insertar nuevas con dimensiones especificadas |
| Secciones y diseño | Saltos de página, saltos de sección, tamaño de página, orientación, márgenes |
| Referencias cruzadas | Hipervínculos internos entre párrafos con marcadores |
| Fusión de documentos | Combinar contenido de múltiples archivos DOCX |
| Protección | Bloquear documentos solo para cambios controlados, solo lectura o solo comentarios con contraseñas |
| Auditoría estructural | Validar notas al pie, encabezados, marcadores, imágenes y consistencia interna antes de la entrega |
| Eliminación de marcas de agua | Detectar y eliminar marcas de agua DRAFT de los encabezados |
| Limpieza de PII (experimental) | Detectar nombres, correos electrónicos, números de teléfono, SSN y más usando Presidio + spaCy NER. Produce redacción XML real — el texto original se elimina permanentemente, reemplazado con un rectángulo negro sólido. No apto para uso en producción — ver limitaciones. |
Ejemplo: Revisión de Contrato con Marcas de Cambios
1. open_document("services-agreement.docx")
2. get_headings() → see document structure
3. search_text("30 days") → find the payment clause
4. delete_text(para_id, "30 days") → tracked deletion (red strikethrough)
5. insert_text(para_id, "60 days") → tracked insertion (green underline)
6. add_comment(para_id, "Extended per client request — see Amendment 3")
7. audit_document() → verify structural integrity
8. save_document("services-agreement_redlined.docx")
Abre el resultado en Word y verás exactamente lo que produciría un revisor humano — marcas de revisión, comentarios en el margen, estructura de documento limpia.
Ejemplo: Registro de Cambios Después de una Sesión de Revisión
1. open_document("contract.docx")
2. replace_text(para_id, "30 days", "60 days") → tracked revision (del + ins)
3. add_comment(para_id, "Extended per Amendment 3")
4. save_document("contract_redlined.docx")
5. generate_change_summary("contract_changes.txt")
La salida de .txt se lee así:
1. REPLACEMENT by Claude on 2026-05-25
Deleted: "30 days"
Inserted: "60 days"
Pégalo en un correo, una descripción de PR o una nota de traspaso.
Ejemplo: Comparar Dos Versiones Separadas de Documentos
No se requiere sesión de edición — apúntalo a dos archivos cualesquiera:
1. diff_to_text("proposal_v1.docx", "proposal_v2.docx")
Devuelve dos archivos:
proposal_v1_diff.docx— ábrelo en Word para ver los cambios controlados en líneaproposal_v1_diff.txt— resumen en texto plano, listo para pegar en cualquier lugar
Ejemplo: Informe de Pentest desde Markdown
1. create_from_markdown("pentest-report.docx",
md_path="findings.md",
template_path="client-template.dotx")
2. audit_document() → verify integrity
3. save_document() → ready for delivery
Tus hallazgos en markdown — encabezados, tablas de hosts afectados, bloques de código con salida de prueba de concepto, clasificaciones de severidad — se convierten en un documento de Word formateado que coincide con la plantilla del cliente. La tipografía inteligente se aplica automáticamente (comillas curvas, guiones largos, elipsis correctas).
Limpieza de PII (Experimental)
Esta función es experimental y NO es adecuada para uso en producción ni como único control para documentos privilegiados, regulados o legalmente sensibles.
scrub_pii usa Microsoft Presidio con un modelo NER de spaCy (en_core_web_lg, ~560 MB, descargado en la primera llamada) para detectar y redactar permanentemente información personal. Los tramos redactados se reemplazan con rectángulos DrawingML negros sólidos — el texto original se elimina del XML, no solo se oculta.
Lo que detecta de forma fiable (mediante coincidencia de patrones/regex, alta confianza):
- Direcciones de correo electrónico, números de teléfono, números de tarjetas de crédito, SSN, IBAN, direcciones IP, números de pasaporte de EE. UU.
Lo que detecta estadísticamente (mediante NER, tendrá fallos):
- Nombres de personas, nombres de organizaciones, ubicaciones, fechas
Brechas conocidas de NER — estos se omitirán:
- Nombres en MAYÚSCULAS (común en libros de contabilidad, encabezados de tablas, designaciones de partes legales)
- Nombres de un solo token sin contexto circundante
- Nombres no ingleses (los patrones de nombres árabes, CJK y africanos tienen baja recuperación en este modelo inglés)
- Nombres incrustados en texto legal estándar (
Lender: Jane Doe,Authorized Signatory: John Smith)
Flujo de trabajo recomendado:
1. open_document("sensitive.docx")
2. scrub_pii(dry_run=True) → review detected entities — check for misses
3. scrub_pii("sensitive_redacted.docx") → produce redacted copy
4. open the output in Word and verify manually before sharing
Trata siempre la salida como un primer paso que requiere revisión humana, no como una redacción terminada.
Cómo Funciona
Un archivo .docx es un archivo ZIP de archivos XML. Este servidor desempaqueta el archivo, edita el XML directamente y lo vuelve a empaquetar. Esto es lo que le da la capacidad de producir cambios controlados reales, comentarios y notas al pie — cosas que las bibliotecas de documentos de nivel superior no pueden hacer.
Cada edición se valida contra la especificación OOXML antes de guardar, detectando problemas como notas al pie huérfanas, IDs internos duplicados y referencias cruzadas rotas que de otro modo harían que Word "repare" (y reescriba silenciosamente) tu documento.
Inventario completo de herramientas (más de 200 herramientas)
Ciclo de Vida del Documento
| Herramienta | Descripción |
|---|---|
open_document | Abrir un archivo .docx para lectura y edición |
create_document | Crear un nuevo .docx en blanco (o desde una plantilla .dotx) |
create_from_markdown | Crear un .docx desde Markdown con sabor GitHub |
close_document | Cerrar el documento actual y limpiar |
get_document_info | Obtener estadísticas generales (párrafos, encabezados, notas al pie, comentarios) |
save_document | Guardar cambios de vuelta a .docx (puede sobrescribir o guardar en una nueva ruta) |
Lectura
| Herramienta | Descripción |
|---|---|
get_headings | Obtener estructura de encabezados con niveles y texto |
search_text | Buscar en cuerpo, notas al pie y comentarios (texto o regex) |
get_paragraph | Obtener texto completo y estilo de un párrafo |
Cambios Controlados
| Herramienta | Descripción |
|---|---|
insert_text | Insertar texto como revisión controlada (subrayado en Word) — o directamente con tracked=False |
delete_text | Marcar texto como eliminado (tachado rojo en Word) — o eliminar directamente con tracked=False |
replace_text | Reemplazar texto como par del+ins controlado — o directamente con tracked=False |
modify_cell | Modificar una celda de tabla — controlado por defecto, tracked=False para escrituras directas |
edit_header_footer | Editar texto de encabezado/pie de página — controlado por defecto, tracked=False para escrituras directas |
set_formatting | Aplicar negrita/cursiva/subrayado/color con marcado de cambios controlados |
set_track_changes | Activar o desactivar la bandera de grabación de cambios controlados integrada de Word |
get_tracked_changes | Listar todos los cambios controlados pendientes (autor, fecha, tipo, texto) |
accept_changes | Aceptar cambios controlados, opcionalmente filtrados por autor |
reject_changes | Rechazar cambios controlados, opcionalmente filtrados por autor |
Registro de Cambios
| Herramienta | Descripción |
|---|---|
generate_change_summary | Exportar todos los cambios controlados en el documento abierto como un archivo .txt numerado — inserciones, eliminaciones y pares del+ins adyacentes agrupados como reemplazos |
compare_documents | Comparar dos archivos DOCX y producir un DOCX con cambios controlados (abrible en Word) |
diff_to_text | Comparar dos archivos DOCX y producir tanto un DOCX con cambios controlados como un resumen .txt en texto plano |
Tablas
| Herramienta | Descripción |
|---|---|
get_tables | Obtener todas las tablas con recuentos de filas/columnas y contenido de celdas |
add_table | Insertar una nueva tabla después de un párrafo |
modify_cell | Modificar una celda de tabla con cambios controlados |
add_table_row | Añadir una fila a una tabla |
delete_table_row | Eliminar una fila de tabla con cambios controlados |
Listas
| Herramienta | Descripción |
|---|---|
add_list | Aplicar formato de lista con viñetas o numerada a párrafos |
Comentarios
| Herramienta | Descripción |
|---|---|
get_comments | Listar todos los comentarios con ID, autor, fecha y texto |
add_comment | Añadir un comentario anclado a un párrafo |
reply_to_comment | Responder a un comentario existente (en hilo) |
Notas al Pie y Notas Finales
| Herramienta | Descripción |
|---|---|
get_footnotes | Listar todas las notas al pie con ID y texto |
add_footnote | Añadir una nota al pie con referencia en superíndice |
validate_footnotes | Validar referencias cruzadas de notas al pie |
get_endnotes | Listar todas las notas finales con ID y texto |
add_endnote | Añadir una nota final con referencia en superíndice |
validate_endnotes | Validar referencias cruzadas de notas finales |
Encabezados, Pies de Página y Estilos
| Herramienta | Descripción |
|---|---|
get_headers_footers | Obtener todos los encabezados y pies de página con contenido de texto |
edit_header_footer | Editar texto de encabezado/pie de página con cambios controlados |
get_styles | Obtener todos los estilos definidos |
Propiedades e Imágenes
| Herramienta | Descripción |
|---|---|
get_properties | Obtener propiedades principales del documento (título, creador, fechas) |
set_properties | Establecer propiedades principales del documento |
get_images | Obtener todas las imágenes incrustadas con dimensiones |
insert_image | Insertar una imagen después de un párrafo |
Secciones y referencias cruzadas
| Herramienta | Descripción |
|---|---|
add_page_break | Insertar un salto de página después de un párrafo |
add_section_break | Agregar un salto de sección (nextPage, continuous, evenPage, oddPage) |
set_section_properties | Establecer tamaño de página, orientación y márgenes |
add_cross_reference | Agregar un enlace de referencia cruzada entre párrafos |
Protección y combinación
| Herramienta | Descripción |
|---|---|
set_document_protection | Establecer protección del documento con contraseña opcional |
merge_documents | Combinar contenido de otro DOCX |
Validación y auditoría
| Herramienta | Descripción |
|---|---|
validate_paraids | Verificar unicidad de ID internos en todas las partes del documento |
remove_watermark | Eliminar marcas de agua VML de los encabezados del documento |
audit_document | Auditoría estructural integral |
Requisitos
- Python 3.10+
- Funciona en macOS, Linux y Windows
Política de privacidad · Términos de servicio · © 2026 Security Ronin Ltd
