492 lines
12 KiB
Markdown
492 lines
12 KiB
Markdown
# 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
|
|
|
|
```javascript
|
|
// 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
|
|
|
|
```javascript
|
|
// 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
|
|
|
|
```javascript
|
|
// 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
|
|
|
|
```javascript
|
|
// 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
|
|
|
|
```bash
|
|
# Start server in readonly mode for document review only
|
|
export DOCX_MCP_READONLY=true
|
|
./target/release/docx-mcp
|
|
```
|
|
|
|
```javascript
|
|
// 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
|
|
|
|
```bash
|
|
# 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
|
|
```
|
|
|
|
```javascript
|
|
// 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
|
|
|
|
```javascript
|
|
// 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
|
|
|
|
```javascript
|
|
// 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
|
|
|
|
```bash
|
|
#!/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
|
|
|
|
```bash
|
|
#!/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. |