Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Deckbuilder MCP Servercreate a presentation from this markdown about quarterly sales results"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Deckbuilder is currently under active development and should NOT be considered production ready.
π― Deckbuilder
Create professional PowerPoint presentations from Markdown or JSON
Deckbuilder is a Python library, Command Line tool, and MCP server that generates PowerPoint presentations from structured content. Focus on your content - Deckbuilder handles the formatting and layout.
β¨ Key Features
π One-Shot Presentation Generation
Create complete PowerPoint presentations from JSON or Markdown with YAML frontmatter in a single command.
π¨ Rich Content Support
Advanced Formatting:
**bold**,*italic*,___underline___,***bold italic***Language & Font updating: The ability to update the fonts and language of all slide objects using the command line tools using the CLI.
Professional Tables: Custom styling with themes, colors, and precise dimension controls (column widths, row heights, table sizing).
Supported Layouts: Progressive library of templates being added.
π§ Smart Template System
Intelligent Layout Selection: Automatic layout recommendations based on content type
Pattern-Based Architecture: Customize any layout with your own templates
Rich Content Support: Tables, images, multi-column layouts with professional styling
πΌοΈ Smart Image Processing
Automatic Image Fallbacks: Missing images? Deckbuilder generates professional placeholders automatically
Smart Cropping: Face detection and intelligent composition for perfect image sizing
Professional Filters: Business-appropriate styling with grayscale and other effects
β‘ Enhanced CLI Experience
Professional Hierarchical Interface: Clean command structure (
deckbuilder <command> <subcommand>)One-Command Setup:
deckbuilder initcreates templates and configurationContext-Aware Paths: CLI args > env vars > current directory precedence
Always Local Output: CLI outputs to current directory for predictable local development
Global Arguments:
-t/--template-folder,-l/--language,-f/--fontfor complete customisationComprehensive Command Structure:
deckbuilder templateβ analyze, validate, document, enhance, listdeckbuilder configβ show, languages, completiondeckbuilder imageβ generate, cropdeckbuilder remapβ update existing PowerPoint files with language/font changes
Template Management: Analyze, validate, and enhance PowerPoint templates with detailed validation
π Quick Start
Installation
pip install deckbuilderCLI Usage (Standalone)
# Initialize templates (one-time setup) This will create the default template and mapping JSON.
deckbuilder init
# Create presentation from markdown (outputs to current directory)
deckbuilder create presentation.md
# Use custom template folder (CLI arg overrides env vars)
deckbuilder --template-folder /custom/templates create presentation.md
# Create with custom language and font (supports both formats)
deckbuilder create presentation.md --language "es-ES" --font "Arial"
deckbuilder create presentation.md --language "Spanish (Spain)" --font "Times New Roman"
# View supported languages
deckbuilder config languages
# Template management & intelligence
deckbuilder template analyze default --verbose
deckbuilder template validate default
deckbuilder template list
# Smart template recommendations available through MCP tools
# Image generation with crop-first approach
deckbuilder image generate 800 600 --filter grayscale
deckbuilder image crop image.jpg 800 600
# Language and font remapping for existing PowerPoint files
deckbuilder remap existing.pptx --language en-US --font Arial
# View current configuration (shows path sources)
deckbuilder config show
# Get help
deckbuilder --helpMCP Server (Claude Desktop)
Add to your Claude Desktop configuration:
Option 1: Direct installation (recommended)
{
"mcpServers": {
"deckbuilder": {
"command": "deckbuilder-server",
"env": {
"DECK_TEMPLATE_FOLDER": "/Users/username/Documents/Deckbuilder/Templates",
"DECK_TEMPLATE_NAME": "default",
"DECK_OUTPUT_FOLDER": "/Users/username/Documents/Deckbuilder",
"DECK_PROOFING_LANGUAGE": "en-AU",
"DECK_DEFAULT_FONT": "Calibri"
}
}
}
}New Environment Variables:
DECK_PROOFING_LANGUAGE: Set proofing language for spell-check and grammar (accepts both "en-AU" and "English (Australia)" formats)DECK_DEFAULT_FONT: Set default font family for all presentationsDefault Language: Australian English (
en-AU) if not specified
π Usage Examples
Markdown with Frontmatter (Recommended)
---
layout: Title Slide
---
# **Deckbuilder** Presentation
## Creating presentations with *content-first* intelligence
---
layout: Four Columns
title: Feature Comparison
columns:
- title: Performance
content: "**Fast** processing with optimized algorithms"
- title: Security
content: "***Enterprise-grade*** encryption and compliance"
- title: Usability
content: "*Intuitive* interface with minimal learning curve"
- title: Cost
content: "___Transparent___ pricing with proven ROI"
---
---
layout: Picture with Caption
title: Market Analysis
media:
image_path: "charts/revenue_growth.png" # Auto-fallback to PlaceKitten if missing
alt_text: "Revenue growth chart"
caption: "**Q4 Revenue Growth** - 23% increase"
---
---
layout: Title and Content
title: "**Table Dimensions:** Custom Column Widths"
style: dark_blue_white_text
row_style: alternating_light_gray
border_style: thin_gray
column_widths: [8, 6, 4, 5]
row_height: 0.9
content: |
Sales Performance Report with individual column width control:
| **Product Category** | **Q1 Sales** | **Q2** | **Growth %** |
| Enterprise Software | $125,000 | $142,000 | +13.6% |
| SaaS Solutions | $89,500 | $98,200 | +9.7% |
| Cloud Services | $156,000 | $178,000 | +14.1% |
| Mobile Apps | $67,300 | $73,800 | +9.7% |
---
---
layout: Title and Content
title: "**Table Dimensions:** Equal Column Distribution"
style: light_blue_dark_text
row_style: alternating_light_gray
border_style: thin_gray
table_width: 22
row_height: 0.9
content: |
Team Performance Dashboard with equal column distribution:
| **Team Member** | **Projects** | **Completed** | **Success Rate** |
| Alice Johnson | 25 | 24 | 96% |
| Bob Smith | 18 | 17 | 94% |
| Carol Davis | 32 | 31 | 97% |
| David Wilson | 21 | 20 | 95% |JSON Format (Programmatic)
{
"presentation": {
"slides": [
{
"type": "Title Slide",
"title": "**Deckbuilder** Presentation",
"subtitle": "Content-first presentation generation"
},
{
"type": "Title and Content",
"title": "Key Benefits",
"content": [
"**Intelligent** content analysis",
"*Semantic* layout recommendations",
"***Professional*** template system"
]
},
{
"type": "Title and Content",
"title": "Team Performance Dashboard",
"table": {
"column_widths": [6, 4, 5, 3],
"row_height": 1.8,
"data": [
["**Team Member**", "**Projects**", "**Completed**", "**Rate**"],
["Alice Johnson", "25", "24", "96%"],
["Bob Smith", "18", "17", "94%"],
["Carol Davis", "32", "31", "97%"]
],
"header_style": "dark_blue_white_text",
"row_style": "alternating_light_gray",
"border_style": "thin_gray"
}
}
]
}
}Python API
from deckbuilder import Deckbuilder
# Initialize engine
db = Deckbuilder()
# Create from markdown
result = db.create_presentation_from_markdown(
markdown_content=open("presentation.md").read(),
fileName="My_Presentation"
)
# Create from JSON
result = db.create_presentation(
json_data={"presentation": {"slides": [...]}},
fileName="JSON_Presentation"
)
print(f"β
Created: {result}")π Language & Font Support
Supported Languages (20)
Deckbuilder supports 20 proofing languages for spell-check and grammar. You can use either locale codes (en-AU) or full names (English (Australia)):
# View all supported languages (shows both formats)
deckbuilder config languagesAvailable Languages:
English (United States, United Kingdom, Canada, Australia)
Spanish (Spain, Mexico, Latin America)
French (France, Canada)
German (Germany, Austria, Switzerland)
Italian, Portuguese (Brazil, Portugal)
Chinese (Simplified, Traditional), Japanese, Korean
Dutch, Russian, Arabic
Font Customization
# Set language and font globally (supports both formats)
export DECK_PROOFING_LANGUAGE="en-AU" # Locale code format
export DECK_PROOFING_LANGUAGE="English (Australia)" # Full name format
export DECK_DEFAULT_FONT="Arial"
# Or use CLI arguments (both formats work)
deckbuilder create presentation.md --language "fr-CA" --font "Times New Roman"
deckbuilder create presentation.md --language "French (Canada)" --font "Arial"
# Check current settings (shows locale codes and descriptions)
deckbuilder config showπΌοΈ PlaceKitten Image Processing
Smart Image Fallback System - When images are missing or invalid, PlaceKitten automatically generates professional placeholders:
from placekitten import PlaceKitten
pk = PlaceKitten()
placeholder = (pk.generate(1920, 1080, image_id=1)
.smart_crop(1920, 1080)
.apply_filter("grayscale")
.save("professional_placeholder.jpg"))Features:
β File Validation: Checks image existence, format, and accessibility
β Professional Styling: Automatic grayscale filtering for business context
β Smart Cropping: Computer vision-based cropping with face detection
β Performance Optimized: Intelligent caching prevents duplicate processing
β Seamless Integration: Zero user intervention required
π What's New in v1.2.0
Smart Template Recommendations
Content Analysis: Automatically analyzes your content to suggest the best layouts
MCP Integration: Available through Claude Desktop with intelligent recommendations
Enhanced Image Processing
Better Image Sizing: Smart cropping ensures images fit perfectly without distortion
Automatic Fallbacks: Professional placeholder images when your images are missing
Improved Pattern System
User Customization: Create custom layout patterns in
{template_folder}/patterns/Dynamic Loading: All layouts now use flexible pattern files instead of hard-coded templates
ποΈ Architecture
Your Content (Markdown/JSON)
β
βββββββββββββββββββββββ
β Content Analysis β β Analyzes your content type and audience
βββββββββββ¬ββββββββββββ
β
βββββββββββββββββββββββ
β Template Selection β β Recommends best layouts for your content
βββββββββββ¬ββββββββββββ
β
βββββββββββββββββββββββ
β PowerPoint Engine β β Generates professional presentations
βββββββββββ¬ββββββββββββ
β
Your Professional Presentationπ¨ Supported Markdown Layouts
β Currently Implemented
Title Slide - Opening slide with title and subtitle
Title and Content - Rich text with headings, paragraphs, bullets
Four Columns - Quad content areas with structured frontmatter
Two Content - Side-by-side content areas
Comparison - Left vs right comparison layout
Table - Data tables with professional styling
Section Header - Divider slides between topics
Picture with Caption - Image-focused slides with smart fallbacks
π§ Progressive Implementation (50+ Planned)
Big Number displays, SWOT Analysis, Feature Matrix
Timeline, Process Flow, Organizational Chart
Dashboard, Metrics, Financial layouts
And 40+ more business presentation layouts
See Feature Documentation for detailed specifications.
π οΈ Development
Prerequisites
Python 3.11+
Virtual environments are recommended.
Development Install
git clone https://github.com/teknologika/deckbuilder.git
cd deckbuilder
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .[dev]Code Quality Standards
# Format code (required before commits)
black --line-length 100 src/
# Check linting (required)
flake8 src/ tests/ --max-line-length=100 --ignore=E203,W503,E501
# Run tests (required)
pytest tests/Contributing
Fork the repository
Create feature branch:
git checkout -b feature-nameFollow code quality standards
Add comprehensive tests
Submit pull request with clear description
π Documentation
Complete Documentation - Full documentation index
Supported Templates - Complete layout library (26+ patterns)
Deckbuilder Library - Python API reference and classes
Command-Line Interface - CLI commands and usage examples
MCP Server - Smart template recommendations and MCP tools
PlaceKitten Library - Image processing with crop-first approach
PlaceKitten Source - Technical implementation details
π§ Technology Stack
Python 3.11+ with modern type hints and comprehensive error handling
FastMCP for Model Context Protocol server implementation
python-pptx for PowerPoint generation and template manipulation
PyYAML for structured frontmatter processing
OpenCV + Pillow for computer vision and image processing
pytest for unit testing
Anthropic Claude - for most of the development gruntwork :-)
π Troubleshooting
Template not found:
# Create templates folder
deckbuilder init
# Check configuration
deckbuilder configPermission denied when saving:
Verify output folder has write permissions
Ensure files aren't open in PowerPoint
MCP connection failures:
Verify virtual environment is activated
Check Python path in Claude Desktop config
Ensure all dependencies are installed
π License
Apache License 2.0 - See LICENSE file for details.
Built with β€οΈ for intelligent presentation generation - Copyright Bruce McLeod
π Get Started β’ π Documentation β’ π Report Issues