Initial Commit
This commit is contained in:
@@ -0,0 +1,492 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user