SethBurkart123/openlp-mcp
If you are the rightful owner of openlp-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Model Context Protocol (MCP) server is a powerful tool that allows AI models to interact with applications like OpenLP, providing full control over service management and media handling.
[!IMPORTANT] Please note, currently I haven't gotten it to work outside of building the plugin bundled with Openlp. Check out the progress here.
OpenLP MCP Plugin
A powerful OpenLP plugin that provides Model Context Protocol (MCP) server functionality, allowing AI models to fully control OpenLP including automated service creation.
š Features
- Complete Service Management: Create, load, save, and manage OpenLP services programmatically
- Smart Media Support: Handle images, videos, and audio with automatic plugin routing
- PowerPoint/PDF Integration: Auto-convert presentations with LibreOffice or fallback converters
- Live Control: Real-time slide navigation and theme management
- URL Downloads: Support for remote media files, services, and theme backgrounds
- AI-Friendly API: Structured MCP interface for seamless AI integration
š Requirements
- OpenLP 3.1+
- No additional Python packages required (all dependencies bundled)
š¦ Installation
Method 1: Download from Releases (Recommended)
-
Go to the
-
Download the latest
mcp-plugin.zip
file -
Extract the ZIP to get the
mcp
folder -
Copy the
mcp
folder to your OpenLP plugins directory:Windows:
C:\Program Files\OpenLP\plugins\mcp\
Linux:
/usr/share/openlp/plugins/mcp/ # OR for user installation: ~/.local/share/openlp/plugins/mcp/
macOS:
Right-click OpenLP.app ā Show Package Contents ā Contents/MacOS/plugins/mcp/
-
Restart OpenLP
-
Go to Settings ā Manage Plugins
-
Find "MCP" in the plugin list and check the box to enable it
-
Click OK to save
Method 2: Build from Source
If you want to build the plugin yourself:
# Clone the repository
git clone https://github.com/yourusername/openLP_mcp_plugin.git
cd openLP_mcp_plugin
# Build using Python script (requires uv)
python build.py
# OR build using shell script (requires uv and zip)
./package.sh
# This creates mcp-plugin.zip which you can install as above
š§ Development Setup
For development and testing:
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and build
git clone https://github.com/yourusername/openLP_mcp_plugin.git
cd openLP_mcp_plugin
python build.py
š¤ Usage with AI Models
The plugin starts an MCP server on http://127.0.0.1:8765
that AI models can connect to. The server provides tools for:
Service Management
create_service
- Create new services with structured dataadd_service_item
- Add songs, images, videos, presentations to servicesload_service
- Load existing service filessave_service
- Save services to specific locationsget_service_items
- Retrieve current service structure
Media Handling
add_image
- Add images with automatic sizing and theme supportadd_video
- Add videos with playback controlsadd_audio
- Add audio files to servicesadd_presentation
- Handle PowerPoint/PDF files with auto-conversion
Live Control
go_to_slide
- Navigate to specific slides during live presentationnext_slide
/previous_slide
- Control slide progressionget_current_slide
- Check current slide position
Example AI Prompt
"Create a church service with the attached PowerPoint presentation and background music. Set up the service order with welcome, songs, sermon slides, and closing prayer."
š Supported File Types
Media Files
- Images: JPG, PNG, GIF, BMP, TIFF, WebP
- Videos: MP4, AVI, MOV, MKV, WMV, FLV
- Audio: MP3, WAV, OGG, FLAC, M4A
Presentations
- PowerPoint: PPT, PPTX (converted to PDF automatically)
- PDF: Direct support for PDF presentations
- LibreOffice: ODP, ODS, ODT (if LibreOffice available)
Remote URLs
- Direct download support for all media types from HTTP/HTTPS/FTP URLs
- Intelligent content-type detection
- Works with modern hosting services (Unsplash, CDNs, etc.)
š Troubleshooting
Plugin Not Loading
- Ensure you copied the entire
mcp
folder (not just its contents) - Check that the folder is in the correct plugins directory
- Verify OpenLP was restarted after installation
- Look for error messages in OpenLP's log files
MCP Server Not Starting
- Check OpenLP logs for MCP-related errors
- Ensure no other service is using port 8765
- Verify the plugin is enabled in Manage Plugins
PowerPoint Conversion Issues
- Install LibreOffice for best conversion quality
- The plugin will fall back to python-pptx + reportlab if LibreOffice unavailable
- Large presentations may cause temporary GUI responsiveness issues
Missing Dependencies
- All dependencies are bundled - no manual installation required
- If you see import errors, rebuild the plugin package
š Plugin Structure
mcp/
āāā __init__.py # Plugin initialization with vendor loading
āāā mcpplugin.py # Main plugin class
āāā worker.py # Qt worker for thread-safe operations
āāā tools.py # MCP tools and server setup
āāā conversion.py # PowerPoint/PDF conversion utilities
āāā url_utils.py # URL download and file handling
āāā vendor/ # Bundled dependencies
āāā fastmcp/ # MCP server library
š¤ Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test with the build script
- Submit a pull request
š License
This project is licensed under the GNU General Public License v3.0 - see the file for details.
š Issues & Support
- Report bugs in the
- For OpenLP-specific questions, visit the OpenLP forums
- For MCP protocol questions, see the MCP documentation
ā” Advanced Features
URL Support
The plugin automatically handles remote files:
# These all work automatically:
add_image("https://example.com/image.jpg")
add_video("https://cdn.example.com/video.mp4")
load_service("https://mysite.com/service.osz")
Theme Integration
- Automatically applies appropriate themes based on content type
- Supports theme background image URLs
- Maintains theme consistency across service items
Batch Operations
- Process multiple files at once
- Efficient handling of large presentations
- Automatic cleanup of temporary files
Error Recovery
- Graceful handling of network issues
- Fallback conversion methods for presentations
- Detailed logging for troubleshooting
Made with ā¤ļø for the OpenLP community