Labsco
teknologika logo

Deck Builder MCP

โ˜… 7

from teknologika

Create and manipulate PowerPoint presentations programmatically using JSON or Markdown.

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup

[!IMPORTANT]
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 init creates 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/--font for 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
  • Template Management: Analyze, validate, and enhance PowerPoint templates with detailed validation

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)

```json
{
  "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 languages

Available 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

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

๐Ÿ“š Documentation

๐Ÿ”ง 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 :-)

๐Ÿ“„ License

Apache License 2.0 - See LICENSE file for details.


Built with โค๏ธ for intelligent presentation generation - Copyright Bruce McLeod

๐Ÿš€ Get Started โ€ข ๐Ÿ“– Documentation โ€ข ๐Ÿ› Report Issues