Deckbuilder

by teknologika

Not rated
GitHub

About

Generate intelligent PowerPoint presentations using a content-first design philosophy.

Details

Author
teknologika
Categories
Productivity, Other

Setup

Install Deckbuilder in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/teknologika/Deckbuilder

Follow the installation instructions in the repository README, then restart your MCP client.

[!IMPORTANT]
Deckbuilder is currently under active development and should NOT be considered production ready.

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.

Create complete PowerPoint presentations from JSON or Markdown with YAML frontmatter in a single command.

- 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.

- 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

- 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

- Professional Hierarchical Interface: Clean command structure (deckbuilder <command> <subcommand>)
- One-Command Setup:deckbuilder initcreates templates and configuration
- Context-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 customisation
- Comprehensive Command Structure:

- deckbuilder template→ analyze, validate, document, enhance, list
- deckbuilder config→ show, languages, completion
- deckbuilder image→ generate, crop
- deckbuilder remap→ update existing PowerPoint files with language/font changes

# 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 --help

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" } } } }

- 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 presentations
- Default Language: Australian English (en-AU) if not specified

--- 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% |
{ "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" } } ] } }
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}")

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 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

# 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

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"))

- ✅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

- Content Analysis: Automatically analyzes your content to suggest the best layouts
- MCP Integration: Available through Claude Desktop with intelligent recommendations

- Better Image Sizing: Smart cropping ensures images fit perfectly without distortion
- Automatic Fallbacks: Professional placeholder images when your images are missing

- User Customization: Create custom layout patterns in{template_folder}/patterns/
- Dynamic Loading: All layouts now use flexible pattern files instead of hard-coded templates

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

- 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

SeeFeature Documentationfor detailed specifications.

- Python 3.11+
- Virtual environments are recommended.

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]
# 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/

- Fork the repository
- Create feature branch:git checkout -b feature-name
- Follow code quality standards
- Add comprehensive tests
- Submit pull request with clear description

- 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

- Python 3.11+with modern type hints and comprehensive error handling
- FastMCPfor Model Context Protocol server implementation
- python-pptxfor PowerPoint generation and template manipulation
- PyYAMLfor structured frontmatter processing
- OpenCV + Pillowfor computer vision and image processing
- pytestfor unit testing
- Anthropic Claude- for most of the development gruntwork :-)

# Create templates folder deckbuilder init # Check configuration deckbuilder config

- Verify output folder has write permissions
- Ensure files aren't open in PowerPoint

- Verify virtual environment is activated
- Check Python path in Claude Desktop config
- Ensure all dependencies are installed

Apache License 2.0 - SeeLICENSEfile for details.

Built with ❤️ for intelligent presentation generation - Copyright Bruce McLeod

🚀 Get Started•📖 Documentation•🐛 Report Issues

This is the 1st, easiest, and cheapest PPT, slides, presentation AI generation MCP Server in the world.

An MCP server for WordPress plugin audits

Create online, editable presentations from any MCP-compatible AI assistant.

An MCP server to connect and interact with all your social media

On-device tools to detect AI-generated text and images, score readability, and strip AI artifacts, running locally on Apple silicon.

Your YouTube AI Assistant To Create More Videos And Save 10+ Hours A Week

Turn YouTube playlists into AI-generated flashcards with spaced repetition — create, search, and export decks via MCP.

A free WordPress plugin that turns your site into a governed MCP server: 153 abilities that are all off until you switch them on, bound to a least-privilege WordPress user, with every call audited.

Compare LLM cost & latency on one prompt, translate PDF keeping layout, cited research, make PPTX

Create high quality presentations using AI

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.