Skip to main content
Glama
EXAMPLES.md7.41 kB
# LibreOffice MCP Server - Usage Examples This document provides practical examples of how to use the LibreOffice MCP Server. ## Basic Document Operations ### Creating Documents ```python # Create a Writer document with content result = create_document( path="/path/to/my_document.odt", doc_type="writer", content="Hello, World!\n\nThis is my first LibreOffice document created via MCP." ) # Create a Calc spreadsheet result = create_document( path="/path/to/spreadsheet.ods", doc_type="calc" ) # Create a Presentation result = create_document( path="/path/to/presentation.odp", doc_type="impress" ) ``` ### Reading Documents ```python # Read text content from any LibreOffice document content = read_document_text("/path/to/document.odt") print(f"Document has {content.word_count} words and {content.char_count} characters") print(f"Content: {content.content}") # Get document metadata info = get_document_info("/path/to/document.odt") print(f"File: {info.filename}, Size: {info.size_bytes} bytes") print(f"Format: {info.format}, Modified: {info.modified_time}") ``` ### Document Conversion ```python # Convert ODT to PDF result = convert_document( source_path="/path/to/document.odt", target_path="/path/to/document.pdf", target_format="pdf" ) if result.success: print("Conversion successful!") else: print(f"Conversion failed: {result.error_message}") # Convert to Microsoft Word format result = convert_document( source_path="/path/to/document.odt", target_path="/path/to/document.docx", target_format="docx" ) # Convert to HTML result = convert_document( source_path="/path/to/document.odt", target_path="/path/to/document.html", target_format="html" ) ``` ## Advanced Operations ### Text Manipulation ```python # Add text to the end of a document result = insert_text_at_position( path="/path/to/document.odt", text="\n\nThis text was added to the end of the document.", position="end" ) # Insert text at the beginning result = insert_text_at_position( path="/path/to/document.odt", text="This is a new introduction.\n\n", position="start" ) # Replace entire document content result = insert_text_at_position( path="/path/to/document.odt", text="This completely replaces the document content.", position="replace" ) ``` ### Working with Spreadsheets ```python # Read data from a spreadsheet data = read_spreadsheet_data( path="/path/to/spreadsheet.ods", sheet_name="Sheet1", # Optional max_rows=50 # Optional, default 100 ) print(f"Sheet: {data.sheet_name}") print(f"Dimensions: {data.row_count} rows × {data.col_count} columns") # Access cell data for row_idx, row in enumerate(data.data): for col_idx, cell in enumerate(row): print(f"Cell [{row_idx}][{col_idx}]: {cell}") ``` ### Document Search ```python # Search for documents containing specific text results = search_documents( query="important project", search_path="/home/user/Documents" # Optional ) for doc in results: print(f"Found in: {doc['filename']}") print(f"Path: {doc['path']}") print(f"Context: {doc['match_context']}") ``` ### Batch Operations ```python # Convert all documents in a directory results = batch_convert_documents( source_dir="/path/to/source_documents", target_dir="/path/to/converted_documents", target_format="pdf", source_extensions=[".odt", ".doc", ".docx"] # Optional ) for result in results: if result.success: print(f"✓ Converted {result.source_path}") else: print(f"✗ Failed to convert {result.source_path}: {result.error_message}") # Merge multiple documents merged_doc = merge_text_documents( document_paths=[ "/path/to/doc1.odt", "/path/to/doc2.odt", "/path/to/doc3.odt" ], output_path="/path/to/merged_document.odt", separator="\n\n=== DOCUMENT BREAK ===\n\n" ) ``` ### Document Analysis ```python # Get detailed statistics about a document stats = get_document_statistics("/path/to/document.odt") file_info = stats['file_info'] content_stats = stats['content_stats'] print(f"File: {file_info['filename']}") print(f"Size: {file_info['size_bytes']} bytes") print(f"Words: {content_stats['word_count']}") print(f"Characters: {content_stats['character_count']}") print(f"Sentences: {content_stats['sentence_count']}") print(f"Paragraphs: {content_stats['paragraph_count']}") print(f"Average words per sentence: {content_stats['average_words_per_sentence']:.1f}") ``` ## Using Resources The MCP server also provides resources for document discovery: ### List All Documents ```python # Access via resource URI: documents:// # This will list all LibreOffice documents in common locations: # - ~/Documents # - ~/Desktop # - Current working directory ``` ### Access Document Content ```python # Access specific document content via resource URI: document://{path} # Example: document://tmp/my_document.odt # Returns formatted text content with metadata ``` ## Integration Examples ### Claude Desktop Configuration Add this to your Claude Desktop configuration file: ```json { "mcpServers": { "libreoffice": { "command": "uv", "args": ["run", "python", "/path/to/mcp-libre/main.py"], "cwd": "/path/to/mcp-libre", "env": { "PYTHONPATH": "/path/to/mcp-libre" } } } } ``` ### Common Use Cases 1. **Document Processing Pipeline** - Create documents from templates - Insert generated content - Convert to multiple formats for distribution 2. **Content Analysis** - Extract text from various document formats - Analyze document statistics - Search across document collections 3. **Batch Document Management** - Convert legacy documents to modern formats - Merge related documents - Generate reports from multiple sources 4. **Integration with AI Workflows** - Process documents for AI analysis - Generate summaries and insights - Create formatted reports from AI-generated content ## Error Handling The server provides detailed error messages for common issues: - **File not found**: Clear error message with file path - **Conversion failures**: LibreOffice error output included - **Permission issues**: System-level error details - **Format not supported**: List of supported formats Always check the `success` field in conversion results and handle errors appropriately in your applications. ## Performance Considerations - **Large documents**: Text extraction may take time for very large files - **Batch operations**: Process documents in smaller batches for better performance - **Spreadsheet data**: Use `max_rows` parameter to limit data size - **Concurrent operations**: The server handles one operation at a time ## Troubleshooting 1. **LibreOffice not found**: Ensure LibreOffice is installed and in your PATH 2. **Java warnings**: These are usually non-fatal; core functionality will still work 3. **Permission errors**: Check file and directory permissions 4. **Conversion failures**: Verify target format is supported by LibreOffice

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jwingnut/mcp-libre'

If you have feedback or need assistance with the MCP directory API, please join our Discord server