Files
mcp-docx/example/advanced_usage.md
T
2025-08-11 14:31:51 +08:00

12 KiB

Advanced DOCX MCP Server Usage Examples

This document demonstrates the advanced capabilities of the DOCX MCP server with real-world examples.

Professional Document Templates

Creating a Business Report

// Ask your AI: "Create a professional quarterly report with our sales data"

// 1. Create from report template
const doc = await mcp.call("create_from_template", {
  template: "Report"
});

// 2. Set document properties
await mcp.call("set_document_properties", {
  document_id: doc.document_id,
  properties: {
    title: "Q3 2024 Sales Report",
    subject: "Quarterly Business Review",
    author: "Sales Team",
    company: "TechCorp Inc",
    keywords: ["sales", "quarterly", "2024", "revenue"]
  }
});

// 3. Add custom sections with advanced formatting
await mcp.call("add_section", {
  document_id: doc.document_id,
  section_config: {
    page_size: "Letter",
    landscape: false,
    margins: {
      top: 25.4,
      bottom: 25.4, 
      left: 31.8,
      right: 25.4
    },
    columns: 1
  }
});

// 4. Add charts and data visualization
await mcp.call("add_chart", {
  document_id: doc.document_id,
  chart_type: "Column",
  data: {
    title: "Quarterly Revenue Growth",
    categories: ["Q1", "Q2", "Q3"],
    series: [{
      name: "Revenue ($M)",
      values: [1.2, 1.5, 1.8]
    }]
  }
});

Advanced Mail Merge Campaign

// Ask your AI: "Create personalized letters for our client list with custom fields"

// 1. Create template with merge fields
const template = await mcp.call("create_from_template", {
  template: "BusinessLetter"
});

await mcp.call("prepare_mail_merge_template", {
  document_id: template.document_id,
  fields: ["ClientName", "Company", "LastOrderDate", "AccountManager", "SpecialOffer"]
});

// 2. Process each recipient
const recipients = [
  {
    ClientName: "John Smith", 
    Company: "ABC Corp",
    LastOrderDate: "2024-02-15",
    AccountManager: "Sarah Johnson",
    SpecialOffer: "20% off next order"
  }
  // ... more recipients
];

for (const recipient of recipients) {
  // Create personalized document
  const personalDoc = await mcp.call("merge_template", {
    template_id: template.document_id,
    data: recipient
  });
  
  // Add watermark for draft review
  await mcp.call("add_watermark", {
    document_id: personalDoc.document_id,
    text: "CONFIDENTIAL",
    style: "Diagonal"
  });
}

Document Analysis & Review

Comprehensive Document Analysis

// Ask your AI: "Analyze this contract for structure, formatting, and key terms"

const doc = await mcp.call("open_document", {
  path: "./contracts/service_agreement.docx"
});

// 1. Get document structure
const structure = await mcp.call("get_document_structure", {
  document_id: doc.document_id
});

// 2. Analyze formatting consistency
const formatting = await mcp.call("analyze_formatting", {
  document_id: doc.document_id
});

// 3. Get detailed statistics
const stats = await mcp.call("get_word_count", {
  document_id: doc.document_id
});

// 4. Search for key legal terms
const terms = ["liability", "indemnification", "termination", "confidential"];
for (const term of terms) {
  const results = await mcp.call("search_text", {
    document_id: doc.document_id,
    search_term: term,
    case_sensitive: false,
    whole_word: true
  });
  
  console.log(`Found "${term}" ${results.total_matches} times`);
}

// 5. Export analysis to Markdown
await mcp.call("export_to_markdown", {
  document_id: doc.document_id,
  output_path: "./analysis/contract_analysis.md"
});

Collaborative Review Process

// Ask your AI: "Set up this document for review with comments and track changes"

// 1. Enable track changes
await mcp.call("enable_track_changes", {
  document_id: doc.document_id,
  author: "Legal Review Team"
});

// 2. Add review comments
await mcp.call("add_comment", {
  document_id: doc.document_id,
  text: "Payment terms in section 3.2",
  comment: "Consider reducing payment terms from 60 to 30 days",
  author: "Finance Team"
});

// 3. Add footnotes for clarification
await mcp.call("add_footnote", {
  document_id: doc.document_id,
  reference_text: "governing law",
  footnote_text: "This clause should specify the state jurisdiction for legal disputes"
});

// 4. Create bookmarks for easy navigation
await mcp.call("add_bookmark", {
  document_id: doc.document_id,
  bookmark_name: "payment_terms",
  text: "3.2 Payment Terms"
});

// 5. Add cross-references
await mcp.call("add_cross_reference", {
  document_id: doc.document_id,
  bookmark_name: "payment_terms",
  display_text: "See Payment Terms section"
});

Security & Compliance Examples

Readonly Document Review

# Start server in readonly mode for document review only
export DOCX_MCP_READONLY=true
./target/release/docx-mcp
// In readonly mode, these operations are available:
const doc = await mcp.call("open_document", {
  path: "./confidential/annual_report.docx"
});

// ✅ Allowed: Extract and analyze content
const text = await mcp.call("extract_text", {
  document_id: doc.document_id
});

const structure = await mcp.call("get_document_structure", {
  document_id: doc.document_id
});

// ✅ Allowed: Export for analysis
await mcp.call("export_to_markdown", {
  document_id: doc.document_id,
  output_path: "./analysis/report_content.md"
});

// ❌ Blocked: Any modification attempts
// These would return security errors:
// - add_paragraph
// - save_document  
// - find_and_replace

Sandboxed Environment

# Run in sandbox mode - restricts file operations to temp directory
export DOCX_MCP_SANDBOX=true
export DOCX_MCP_NO_EXTERNAL_TOOLS=true
./target/release/docx-mcp
// All file operations restricted to temporary directory
// Perfect for untrusted document processing

const doc = await mcp.call("create_document", {});

// ✅ Allowed: Operations in temp directory
await mcp.call("save_document", {
  document_id: doc.document_id,
  output_path: "/tmp/docx-mcp/safe_output.docx"
});

// ❌ Blocked: Operations outside temp directory
// This would return a security error:
await mcp.call("save_document", {
  document_id: doc.document_id,
  output_path: "/home/user/documents/output.docx" // BLOCKED
});

Advanced Automation Workflows

Automated Report Generation Pipeline

// Ask your AI: "Create an automated monthly report generation system"

class ReportGenerator {
  async generateMonthlyReport(month, year, data) {
    // 1. Create from template
    const doc = await mcp.call("create_from_template", {
      template: "Report"
    });
    
    // 2. Set up custom styles
    await mcp.call("add_custom_style", {
      document_id: doc.document_id,
      style: {
        id: "CompanyHeading",
        name: "Company Heading",
        font: "Arial",
        size: 18,
        bold: true,
        color: "#2E86C1",
        spacing: {
          before: 12,
          after: 6,
          line: 1.15
        }
      }
    });
    
    // 3. Add dynamic content with bookmarks
    await mcp.call("add_bookmark", {
      document_id: doc.document_id,
      bookmark_name: "executive_summary",
      text: "Executive Summary"
    });
    
    // 4. Insert data charts
    for (const metric of data.metrics) {
      await mcp.call("add_chart", {
        document_id: doc.document_id,
        chart_type: metric.type,
        data: {
          title: metric.title,
          categories: metric.categories,
          series: metric.series
        }
      });
    }
    
    // 5. Add table of contents
    await mcp.call("add_table_of_contents", {
      document_id: doc.document_id
    });
    
    // 6. Apply watermark
    await mcp.call("add_watermark", {
      document_id: doc.document_id,
      text: "INTERNAL USE ONLY",
      style: "Horizontal"
    });
    
    // 7. Generate multiple formats
    const filename = `monthly_report_${year}_${month}`;
    
    // Save DOCX
    await mcp.call("save_document", {
      document_id: doc.document_id,
      output_path: `./reports/${filename}.docx`
    });
    
    // Convert to PDF
    await mcp.call("convert_to_pdf", {
      document_id: doc.document_id,
      output_path: `./reports/${filename}.pdf`
    });
    
    // Generate preview images
    await mcp.call("convert_to_images", {
      document_id: doc.document_id,
      output_dir: `./reports/previews/`,
      format: "png",
      dpi: 150
    });
    
    return {
      docx: `./reports/${filename}.docx`,
      pdf: `./reports/${filename}.pdf`,
      preview: `./reports/previews/`
    };
  }
}

Document Quality Assurance

// Ask your AI: "Create a document QA system that checks formatting and compliance"

class DocumentQA {
  async auditDocument(documentPath) {
    const doc = await mcp.call("open_document", {
      path: documentPath
    });
    
    const audit = {
      document: documentPath,
      timestamp: new Date().toISOString(),
      issues: [],
      recommendations: []
    };
    
    // 1. Check document structure
    const structure = await mcp.call("get_document_structure", {
      document_id: doc.document_id
    });
    
    if (structure.structure.filter(s => s.type === "heading").length < 2) {
      audit.issues.push("Document lacks proper heading structure");
    }
    
    // 2. Analyze formatting consistency
    const formatting = await mcp.call("analyze_formatting", {
      document_id: doc.document_id
    });
    
    if (formatting.formatting_analysis.fonts_detected.length > 3) {
      audit.issues.push("Too many fonts used - limit to 2-3 for consistency");
    }
    
    // 3. Check for required content
    const requiredTerms = ["confidential", "copyright", "contact"];
    for (const term of requiredTerms) {
      const search = await mcp.call("search_text", {
        document_id: doc.document_id,
        search_term: term,
        case_sensitive: false
      });
      
      if (search.total_matches === 0) {
        audit.recommendations.push(`Consider adding ${term} information`);
      }
    }
    
    // 4. Check document statistics
    const stats = await mcp.call("get_word_count", {
      document_id: doc.document_id
    });
    
    if (stats.statistics.words < 500) {
      audit.issues.push("Document may be too short for professional standards");
    }
    
    // 5. Generate audit report
    const auditDoc = await mcp.call("create_document", {});
    
    await mcp.call("add_heading", {
      document_id: auditDoc.document_id,
      text: "Document Quality Audit Report",
      level: 1
    });
    
    await mcp.call("add_paragraph", {
      document_id: auditDoc.document_id,
      text: `Audit completed for: ${documentPath}`
    });
    
    // Add issues table
    const issuesData = audit.issues.map(issue => ["Issue", issue]);
    await mcp.call("add_table", {
      document_id: auditDoc.document_id,
      rows: [["Type", "Description"], ...issuesData]
    });
    
    await mcp.call("save_document", {
      document_id: auditDoc.document_id,
      output_path: `./qa/audit_${Date.now()}.docx`
    });
    
    return audit;
  }
}

Security Configuration Examples

Enterprise Security Setup

#!/bin/bash
# Enterprise security configuration script

# Readonly mode for document review workstations
export DOCX_MCP_READONLY=true

# Whitelist only analysis and export commands
export DOCX_MCP_WHITELIST="open_document,extract_text,get_metadata,get_document_structure,analyze_formatting,get_word_count,search_text,export_to_markdown,export_to_html,list_documents,get_security_info"

# Sandbox mode for processing untrusted documents
export DOCX_MCP_SANDBOX=true

# Resource limits
export DOCX_MCP_MAX_SIZE=10485760  # 10MB max file size
export DOCX_MCP_MAX_DOCS=5         # Max 5 open documents

# Disable external tools and network
export DOCX_MCP_NO_EXTERNAL_TOOLS=true
export DOCX_MCP_NO_NETWORK=true

echo "🔒 Starting DOCX MCP Server in Enterprise Security Mode"
./target/release/docx-mcp

Development Environment Setup

#!/bin/bash
# Development environment with full features

# Allow all operations but with reasonable limits
export DOCX_MCP_MAX_SIZE=104857600  # 100MB max file size
export DOCX_MCP_MAX_DOCS=25         # Max 25 open documents

# Enable all features
unset DOCX_MCP_READONLY
unset DOCX_MCP_SANDBOX
unset DOCX_MCP_WHITELIST
unset DOCX_MCP_BLACKLIST

echo "🚀 Starting DOCX MCP Server in Development Mode"
./target/release/docx-mcp

These examples demonstrate the full power and flexibility of the DOCX MCP server for professional document workflows, from simple document creation to complex enterprise automation systems.