Safe DOCX suite: docx-primitives, docx-comparison, safe-docx MCP server
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
claude mcp add safe-docx -- npx -y @usejunior/safe-docx{
"mcpServers": {
"safe-docx": {
"command": "npx",
"args": ["-y", "@usejunior/safe-docx"]
}
}
}Resumen de MCP Servers
# Edit Word documents (.docx) with coding agents via MCP — with OpenDocument (.odt) support
<!-- SYNC:badges BEGIN -->
[](https://github.com/usejunior/safe-docx/actions/workflows/ci.yml)
[](https://app.codecov.io/gh/usejunior/safe-docx)
[](https://www.npmjs.com/package/@usejunior/safe-docx)
[](https://github.com/UseJunior/safe-docx/blob/main/LICENSE)
[](https://github.com/UseJunior/safe-docx/commits/main)
[](https://github.com/UseJunior/safe-docx/issues?q=is%3Aissue+is%3Aclosed)
<!-- SYNC:badges END -->
<!-- SYNC:issue-quick-links BEGIN -->
[Report Bug](https://github.com/usejunior/safe-docx/issues/new?template=bug_report.yml) · [Request Feature](https://github.com/usejunior/safe-docx/issues/new?template=feature_request.yml)
<!-- SYNC:issue-quick-links END -->
<!-- SYNC:lang-nav BEGIN -->
[English](./README.md) | [Español](./README.es.md) | [简体中文](./README.zh.md) | [Português (Brasil)](./README.pt-br.md) | [Deutsch](./README.de.md)
<!-- SYNC:lang-nav END -->
<!-- SYNC:architecture-diagram BEGIN -->
```mermaid
%%{init: {"flowchart": {"htmlLabels": true, "curve": "basis", "nodeSpacing": 30, "rankSpacing": 50}, "themeVariables": {"fontSize": "14px"}} }%%
flowchart LR
DocInLeft["<b>Existing .docx</b><br/>on disk"]
subgraph Server["@usejunior/safe-docx — local MCP server"]
direction LR
subgraph ReadParse["<b>1. Read</b>"]
direction TB
RPTool["<code>read_file(file_path,<br/> format)</code>"]
end
subgraph Locate["<b>2. Locate</b>"]
direction TB
LocTool["<code>grep(file_path,<br/> pattern)</code>"]
end
subgraph Edit["<b>3. Edit</b>"]
direction TB
EditTool["<code>replace_text(<br/> target_paragraph_id,<br/> old_string, new_string,<br/> instruction)</code>"]
end
subgraph Save["<b>4. Save</b>"]
direction TB
SaveTool["<code>save(save_to_local_path,<br/> save_format)</code>"]
end
ReadParse --> Locate
Locate --> Edit
Edit --> Save
end
DocInRight["<b>Saved .docx output</b><br/>on disk"]
subgraph Client [" "]
direction TB
Prompt["<b>Prompt</b><br/>'Change NDA governing law to Delaware'"]
Agent["<b>Coding agent / MCP client</b><br/>Claude Code · Cursor · Gemini CLI"]
Prompt --> Agent
end
DocInLeft --> RPTool
SaveTool --> DocInRight
Agent <-->|tool call / tool result| Server
classDef io fill:#f5f5f5,stroke:#888,color:#222
classDef server fill:#eff6ff,stroke:#3b82f6,color:#1e3a8a
classDef stage fill:#eef2ff,stroke:#6366f1,color:#1e1b4b
classDef tools fill:#ecfdf5,stroke:#10b981,color:#064e3b
classDef ext fill:#ddd6fe,stroke:#7c3aed,color:#3b0764
classDef hidden fill:none,stroke:none
class DocInLeft,DocInRight io
class Server server
class ReadParse,Locate,Edit,Save stage
class RPTool,LocTool,EditTool,SaveTool tools
class Prompt,Agent ext
class Client hidden
```
<!-- SYNC:architecture-diagram END -->
Safe Docx is an open-source TypeScript stack for surgical editing of existing Microsoft Word `.docx` files — and, through the same tool surface, OpenDocument `.odt` files. It is built for workflows where an agent proposes changes and a human still needs reliable, formatting-preserving document edits.
If you review contracts with AI, the slowest step is often applying accepted recommendations in Word. Safe Docx turns that into deterministic tool calls.
## Why This Exists
AI coding CLIs are great with code and text files but weak on brownfield `.docx` editing. Business and legal workflows still run on Word documents, so we built a native TypeScript path for:
- reading and searching existing documents in token-efficient formats
- making surgical edits without destroying formatting
- producing clean/tracked outputs and revision extraction artifacts
Mission: enable coding agents to do paperwork too. Safe Docx focuses on deterministic edits to existing Word files where formatting and review semantics must survive automation.
## How Safe Docx is Different from other Docx Editors
Safe Docx is optimized for agent workflows that need deterministic, local-first edits on existing `.docx` files:
- typed MCP tools for edit, compare, revision extraction, comments, footnotes, and layout
- auditable behavior with test evidence and traceability artifacts
- TypeScript runtime distribution without requiring Python or LibreOffice for supported usage
Safe Docx is not intended to replace generation-first `.docx` libraries.
## Standards Conformance
<!-- AUTO-GENERATED:conformance-summary START — generated by scripts/generate_conformance_doc.mjs; do not edit by hand -->
safe-docx targets a defined subset of **ECMA-376 5th edition**. The full surface
(targeted sections, Non-Goals, and verification status) lives at
[spec-compliance/CONFORMANCE.md](spec-compliance/CONFORMANCE.md).
- **65** sections claimed
- **5** sections explicitly out-of-scope (Non-Goals)
- **0** known gaps under `@conformance-gap`
- Vendored normative schemas: `spec-compliance/ecma-376/schemas/`
<!-- AUTO-GENERATED:conformance-summary END -->
## Trusted By
- **Am Law top-10 firm** — multistep contract translation pipeline
- **150-lawyer regional firm** — 22M+ tokens of contract markup processed
- **Gemini CLI** — compatible Word editing MCP extension
## Start Here
```bash
npx -y @usejunior/safe-docx
```
For detailed setup and tool reference, see `packages/docx-mcp/README.md`.
### Example: Agent Editing a Contract
When you prompt a coding agent (Claude Code, Cursor, Gemini CLI) with Safe Docx installed, the agent makes MCP tool calls like these:
```text
User: Edit the NDA at ~/docs/NDA.docx — change the governing law
from "State of New York" to "State of Delaware" and save both
a clean copy and a tracked-changes copy.
Agent calls:
1. read_file(file_path="~/docs/NDA.docx", format="toon")
→ Returns paragraphs with stable IDs:
_bk_a3f29c10b8e4, _bk_7d2e8f1a4c5b, ...
(12-char hex hashes derived from intrinsic w14:paraId
or normalized text — byte-identical across reopens
for identical stored DOCX bytes)
2. grep(file_path="~/docs/NDA.docx", pattern="State of New York")
→ Match in paragraph _bk_e4c8a91f2d36
3. replace_text(
file_path="~/docs/NDA.docx",
target_paragraph_id="_bk_e4c8a91f2d36",
old_string="State of New York",
new_string="State of Delaware",
instruction="Change governing law to Delaware"
)
4. save(
file_path="~/docs/NDA.docx",
save_to_local_path="~/docs/NDA-clean.docx",
tracked_save_to_local_path="~/docs/NDA-tracked.docx",
save_format="both"
)
```
The agent handles the tool calls automatically. You get a clean file and a tracked-changes file for human review.
## MCP Quickstart
### Claude Code
```bash
claude mcp add safe-docx -- npx -y @usejunior/safe-docx
```
### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"safe-docx": {
"command": "npx",
"args": ["-y", "@usejunior/safe-docx"]
}
}
}
```
### Gemini CLI
```json
{
"mcpServers": {
"safe-docx": {
"command": "npx",
"args": ["-y", "@usejunior/safe-docx"]
}
}
}
```
### Any MCP Client
- **Command:** `npx`
- **Args:** `["-y", "@usejunior/safe-docx"]`
- **Transport:** stdio
## What Safe Docx Is Optimized For
- Brownfield editing of existing `.docx` files
- Formatting-preserving text replacement and paragraph insertion
- Comment and footnote workflows
- Tracked-changes outputs for review (`download`, `compare_documents`)
- Revision extraction as structured JSON (`extract_revisions`)
- OpenDocument (`.odt`) sessions: read, search, edit, comment, save, and `compare_documents` redlines (see below)
## From-Scratch Generation
`@usejunior/docx-core` also generates new `.docx` files from a declarative, JSON-serializable `DocumentSpec` — sections with headers/footers and PAGE/NUMPAGES fields, named styles, tables, multi-level numbering, plus legal-document recipes (`coverTermsTable`, `signatureBlock`) and a separable drafting-note layer compiled to OOXML comments. Generation is deterministic (identical specs produce byte-identical packages) and held to the same ECMA-376 conformance discipline as the editing path:
```ts
import { generateDocx } from '@usejunior/docx-core';
const buffer = await generateDocx({
sections: [{ blocks: [{ kind: 'paragraph', runs: [{ kind: 'text', text: 'Hello' }] }] }],
});
```
Generation is currently a library API; the MCP server does not yet expose a `generate_document` tool.
## What Safe Docx Is Not Optimized For
The local Safe Docx runtime intentionally rejects Word template files (`.dotx`) for now. Convert the template to a normal `.docx` document before opening it here. Safe Docx also makes no rendering, layout, or pagination guarantees — generated and edited documents are validated structurally and against ECMA-376, not pixel-by-pixel.
## OpenDocument (`.odt`) Support
Teams on LibreOffice have the same problem as teams on Word: edits without a record. The core session tools — `read_file`, `grep`, `replace_text`, `insert_paragraph`, `add_comment`, `get_comments`, `save` — work directly on `.odt` files, and `compare_dLo que la gente pregunta sobre safe-docx
¿Qué es UseJunior/safe-docx?
+
UseJunior/safe-docx es mcp servers para el ecosistema de Claude AI. Safe DOCX suite: docx-primitives, docx-comparison, safe-docx MCP server Tiene 32 estrellas en GitHub y se actualizó por última vez today.
¿Cómo se instala safe-docx?
+
Puedes instalar safe-docx clonando el repositorio (https://github.com/UseJunior/safe-docx) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar UseJunior/safe-docx?
+
Nuestro agente de seguridad ha analizado UseJunior/safe-docx y le ha asignado un Trust Score de 82/100 (tier: Trusted). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene UseJunior/safe-docx?
+
UseJunior/safe-docx es mantenido por UseJunior. La última actividad registrada en GitHub es de today, con 41 issues abiertos.
¿Hay alternativas a safe-docx?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega safe-docx en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/usejunior-safe-docx)<a href="https://claudewave.com/repo/usejunior-safe-docx"><img src="https://claudewave.com/api/badge/usejunior-safe-docx" alt="Featured on ClaudeWave: UseJunior/safe-docx" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。