MCP Slides: Dynamic Decks via Model Context Protocol
2025-06-09

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