MCP Slides: Dynamic Decks via Model Context Protocol

2025-06-09

Cover image for MCP Slides: Dynamic Decks via Model Context Protocol

The Gap We Saw

Teams love Markdown for its speed, but the jump from .md files to polished slide decks is still clunky. Existing generators are either tightly coupled to a single UI or require manual tweaking for every brand. We wanted a stateless, API-first slide engine that any tool—or CI pipeline—could hit with a Markdown payload and instantly get a standards-compliant, on-brand deck back.

The Solution: MCP Slides

MCP Slides is a headless slide-generation server that speaks the Model Context Protocol (MCP). Any MCP-compliant client—web IDE, CLI, CI job, or chatbot—can POST a Markdown document plus optional theme tokens and receive a ready-to-serve Reveal.js bundle.

Why MCP Makes It Popular

MCP Superpower Benefit in Slide Generation
Content ↔ Layout Separation Clients send only content + minimal context; the server owns all rendering logic.
Streaming Responses Large decks begin displaying while later slides are still rendering.
Language-agnostic MCP is just JSON over HTTP/WebSocket—works from Bash, Python, TypeScript, or low-code tools.
Extensible “context” bags Future add-ons (AI summarization, design tokens, speaker notes) slot in without breaking existing clients.

Key Features

  • Markdown-to-Slide Pipeline – Reveal.js Markdown plugin does the heavy lifting; we wrap it in a deterministic build layer for cacheability.
  • Protocol-Native Themes – Brand colors, fonts, and logos arrive as a JSON “theme context” instead of hard-coded CSS.
  • Zero State – The server never stores decks; every request is idempotent, perfect for serverless deployment.
  • Plug-and-Play Clients – VS Code extension, GitHub Action, and ChatGPT plug-in already live; any MCP client just works.
  • Hot-Reload for Docs – Local dev server watches your .md and refreshes slides in the browser instantly.

Tech Stack (Keep-It-Simple Edition)

  • Server: Python 3.12 + FastAPI (minimal routing, <200 LOC)
  • Renderer: Reveal.js 5 + reveal-markdown
  • Build & Cache: Esbuild, SWC, Cloudflare R2 object cache
  • CI/CD: GitHub Actions → Docker → Cloud Run (auto-scale to zero)
  • Monitoring: OpenTelemetry traces pushed to Grafana Cloud

Why not a database? Every build artifact is deterministic and can be reproduced from the incoming MCP packet, so the CDN is our “database.”

Impact

  • From 30 min to <1 min per deck for our internal docs team.
  • 100% Brand Consistency – Design tokens flow through MCP; no rogue fonts.
  • CI-Driven Docs – Every merged PR ships an updated slide deck next to the README.
  • Future-proof – When Reveal.js releases 6.0, we swap the renderer image; all clients keep working.

Takeaway

MCP Slides shows how an open, context-driven protocol plus a battle-tested presentation engine can erase the friction between raw ideas and shareable slides. If you’re still hand-tuning PowerPoints, it’s time to trade clicks for commits.