Enhanced Word Document MCP Server

Enhanced Word Document MCP Server

A consolidated MCP server for creating, reading, and manipulating Microsoft Word documents with 25 tools including search/replace, track changes, and document protection.

Category
Visit Server

README

Enhanced Word Document MCP Server

smithery badge

A powerful, consolidated Model Context Protocol (MCP) server for creating, reading, and manipulating Microsoft Word documents (.docx). This enhanced version registers 25 tools for comprehensive Word document operations through a standardized interface.

<a href="https://glama.ai/mcp/servers/@GongRzhe/Office-Word-MCP-Server"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@GongRzhe/Office-Word-MCP-Server/badge" alt="Office Word Server MCP server" /> </a>

Overview

Enhanced-Word-MCP-Server implements the Model Context Protocol with a focus on comprehensive document operations. It registers 25 tools, including:

  • Session management for multi-document workflows
  • Consolidated operations for better usability
  • Enhanced functionality with regex support and advanced formatting
  • Academic and professional workflow optimization
  • Comprehensive error handling and validation

Example Usage

Creating Academic Documents

# Create document with proper structure
create_document("thesis.docx", title="AI in Healthcare", author="John Doe")

# Add structured content
add_text_content("thesis.docx", "Introduction", content_type="heading", level=1)
add_text_content("thesis.docx", "This paper explores...", content_type="paragraph")

# Footnotes/endnotes are not supported by python-docx and are disabled in this server.

Features Overview

šŸŽÆ Consolidated Tools (6 Tools)

Unified operations that replace multiple individual functions:

  • get_text - Unified text extraction (replaces 3 tools)
  • manage_track_changes - Track changes management (replaces 2 tools)
  • add_note - Footnote/endnote tool (currently disabled; python-docx limitation)
  • add_text_content - Paragraph/heading creation (replaces 2 tools)
  • get_sections - Section extraction (replaces 2 tools)
  • manage_protection - Document protection (replaces 2 tools)

šŸ“„ Essential Document Tools (7 Tools)

Core document management functionality:

  • Document Lifecycle: create_document, copy_document, merge_documents
  • Content Operations: enhanced_search_and_replace, add_table, add_picture
  • Export: convert_to_pdf

šŸ”§ Advanced Features (6 Tools)

Specialized functionality for professional workflows:

  • Collaboration: manage_comments, extract_track_changes, generate_review_summary
  • Document Structure: generate_table_of_contents
  • Security: add_digital_signature, verify_document

Key Enhancements

šŸš€ Enhanced Search & Replace

  • Regex support for complex pattern matching
  • Case-insensitive search options
  • Whole word matching
  • Advanced formatting application to replaced text
  • Group substitutions for regex patterns
# Regex date format conversion
enhanced_search_and_replace("doc.docx", 
    find_text=r"(\d{4})-(\d{2})-(\d{2})", 
    replace_text=r"$2/$3/$1", 
    use_regex=True)

# Case-insensitive formatting
enhanced_search_and_replace("doc.docx", 
    find_text="important", 
    replace_text="CRITICAL",
    match_case=False, 
    apply_formatting=True, 
    bold=True, color="red")

šŸ“ Unified Text Extraction

# Extract full document with formatting
get_text("doc.docx", scope="all", include_formatting=True)

# Search within document
get_text("doc.docx", scope="search", search_term="methodology", match_case=False)

# Extract specific paragraph
get_text("doc.docx", scope="paragraph", paragraph_index=5)

šŸ“‘ Flexible Section Management

# Extract all sections with formatting
get_sections("doc.docx", mode="overview", include_formatting=True)

# Get specific section content
get_sections("doc.docx", mode="content", section_title="Results")

šŸ”’ Advanced Protection Management

# Password protection
manage_protection("doc.docx", action="protect", protection_type="password", password="secure123")

# Restricted editing with editable sections (metadata + optional encryption depending on environment)
manage_protection("doc.docx", action="protect", protection_type="restricted",
                 password="review123", editable_sections=["Introduction", "Conclusion"])

Installation

NPX Installation (Recommended)

# Install via NPX (latest version)
npx enhanced-word-mcp-server

# Or install globally
npm install -g enhanced-word-mcp-server

Python Dependencies

The server requires Python 3.10+ with the following dependencies:

# Install Python dependencies (including MCP with CLI support)
pip install mcp[cli] python-docx msoffcrypto-tool docx2pdf

# Or install from requirements.txt if cloning the repository
pip install -r requirements.txt

Add to Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "word-mcp": {
      "command": "npx",
      "args": ["enhanced-word-mcp-server"]
    }
  }
}

Manual Installation

# Clone repository
git clone https://github.com/your-username/enhanced-word-mcp-server.git
cd enhanced-word-mcp-server

# Install dependencies
npm install

# Global installation
npm install -g .

Usage Examples

Academic Writing Workflow

# Create research paper structure
create_document("research_paper.docx", title="Machine Learning Analysis", author="Dr. Smith")

# Add structured content
add_text_content("research_paper.docx", "Abstract", content_type="heading", level=1)
add_text_content("research_paper.docx", "This study examines...", content_type="paragraph", 
                style="Normal", position="end")

# Footnotes/endnotes are disabled (python-docx limitation). Insert notes manually in Word if needed.

# Format academic terms
format_research_paper_terms("research_paper.docx")

# Extract structure for review
sections = get_sections("research_paper.docx", mode="overview", max_level=2)

Document Review Workflow

# Extract review elements
comments = manage_comments("draft.docx", action="list")  # list-only (legacy in-text markers)
changes = extract_track_changes("draft.docx")

# Generate comprehensive review summary
summary = generate_review_summary("draft.docx")

# Manage track changes selectively
manage_track_changes("draft.docx", action="accept", change_type="insertions")
manage_track_changes("draft.docx", action="reject", change_type="deletions", author="Reviewer1")

Document Security Workflow

# Apply comprehensive protection
manage_protection("confidential.docx", action="protect", 
                 protection_type="password", password="secure123")

# Add digital signature
add_digital_signature("contract.docx", signer_name="John Doe", 
                     reason="Document approval")

# Verify document integrity
verification = verify_document("contract.docx")

Tool Reference

Consolidated Tools

get_text(filename, scope, **options)

Unified text extraction with multiple modes:

  • scope: "all" | "paragraph" | "search" | "range"
  • include_formatting: Extract formatting information
  • search_term: Text to search for (when scope="search")
  • paragraph_index: Specific paragraph (when scope="paragraph")

manage_track_changes(filename, action, **filters)

Comprehensive track changes management:

  • action: "accept" | "reject" | "extract"
  • change_type: "all" | "insertions" | "deletions" | "formatting"
  • author: Filter by specific author
  • date_range: Filter by date range

add_note(...)

Footnotes/endnotes are disabled in this server (python-docx limitation). Insert notes manually in Word.

add_text_content(filename, text, content_type, **options)

Unified content creation:

  • content_type: "paragraph" | "heading"
  • level: Heading level (1-6)
  • style: Apply document style
  • position: "beginning" | "end" | "before" | "after"

get_sections(filename, mode, **options)

Advanced section extraction:

  • mode: "overview" | "content"
  • section_title: Optional section to target
  • max_level: Maximum heading level
  • output_format: "text" | "json"

manage_protection(filename, action, protection_type, **options)

Document protection management:

  • action: "protect" | "unprotect" | "verify" | "status"
  • protection_type: "password" | "restricted" | "signature"
  • password: Protection password
  • editable_sections: Section names editable under restricted mode

Safety Guardrails

enhanced_search_and_replace and get_text(scope="search") apply configurable limits to avoid runaway searches, oversized responses, and memory pressure:

  • EW_MAX_MATCHES_PER_CALL (default 1000)
  • EW_MAX_SEARCH_OUTPUT_CHARS (default 200000)
  • EW_MAX_REGEX_PATTERN_CHARS (default 5000)
  • EW_MAX_REGEX_SCAN_CHARS (default 2000000)
  • EW_MAX_DOC_BYTES_PER_OPERATION (default 50000000)
  • EW_MAX_UNDO_BYTES_TOTAL (default 200000000)
  • EW_LONG_SESSION_OP_LIMIT (default 2000)
  • EW_REGEX_TIMEOUT_MS (default 0; if set and timeout runtime is unavailable, operation is refused explicitly)

When limits are hit, tools return explicit guardrail codes/messages, including:

  • LIMIT_EXCEEDED
  • REGEX_COMPLEXITY_BLOCKED
  • DOC_TOO_LARGE
  • UNDO_BUDGET_EXCEEDED
  • SESSION_CONSISTENCY_WARNING

Mutation-heavy operations use fail-before-mutate semantics for preflight guardrail failures.

Session Consistency Contract

  • Disk path is authoritative for document state.
  • document_id is a routing alias to file paths.
  • In-memory session metadata is advisory and may lag; tools read from file paths each call.

Error Handling

All tools provide comprehensive error handling:

# Typical error responses
{
  "status": "error",
  "message": "Document not found: nonexistent.docx",
  "error_type": "FileNotFoundError",
  "suggestions": ["Check file path", "Ensure file exists"]
}

Development

Project Structure

enhanced-word-mcp-server/
ā”œā”€ā”€ word_document_server/
│   ā”œā”€ā”€ main.py              # MCP server entry point
│   ā”œā”€ā”€ tools/               # Tool implementations
│   │   ā”œā”€ā”€ document_tools.py      # Document management
│   │   ā”œā”€ā”€ content_tools.py       # Content creation
│   │   ā”œā”€ā”€ review_tools.py        # Review and collaboration
│   │   ā”œā”€ā”€ section_tools.py       # Document structure
│   │   ā”œā”€ā”€ protection_tools.py    # Security features
│   │   └── footnote_tools.py      # Notes and references
│   └── utils/               # Utility modules
ā”œā”€ā”€ bin/
│   └── enhanced-word-mcp-server.js  # NPX entry point
ā”œā”€ā”€ package.json
└── README.md

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Submit a pull request

Testing

# Run test suite
python test_enhanced_features.py
pytest -q -m "not stress"

# Run only end-to-end MCP stdio tests
pytest -q -m e2e

# Run stress/performance/soak tier (nightly/manual)
pytest -q -m stress --durations=30

# Test specific functionality
python -c "from word_document_server.tools.content_tools import enhanced_search_and_replace; print(enhanced_search_and_replace('test.docx', 'old', 'new'))"

License

MIT License - see LICENSE file for details.

Version History

v2.0.0 (Enhanced)

  • šŸŽÆ 25 registered tools for comprehensive document operations
  • šŸš€ Enhanced search & replace with regex support
  • šŸ“ Consolidated operations for better usability
  • šŸ”§ Improved error handling and validation
  • šŸ“š Comprehensive documentation with examples

v1.0.0 (Original)

  • Initial release with 47 individual tools
  • Basic Word document operations
  • Simple MCP server implementation

Support

For issues, feature requests, or questions:

  • šŸ“§ Create an issue on GitHub
  • šŸ“– Check the documentation and examples
  • šŸ” Review error messages for troubleshooting guidance

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured