🎨 PPTX MCP Server
A Model Context Protocol (MCP) server that lets any AI model create standardised, high-quality PowerPoint presentations via a clean JSON API.
Plug it in once — every AI that connects gets the same consistent, on-brand slide quality every time, with zero design knowledge required.
---
Features
| Capability | Detail | |---|---| | 13 slide layouts | title, section, two-column, icon trio, stat callout, bullet, quote, timeline, comparison, chart, full image, text body, thank you | | 6 brand themes | Midnight Executive, Coral Energy, Forest Calm, Teal Trust, Charcoal Minimal, Berry & Cream | | Chart types | Bar, Column, Line, Area, Pie, Doughnut | | Design rules baked in | No AI-looking stripe accents, no cream defaults, safe font stack, shadow cards, proper contrast | | Transports | stdio (Claude Desktop / local) and SSE (hosted/remote) |
---
Quick Start
1. Install dependencies
# Python
pip install mcp
# Node (pptxgenjs is the rendering engine)
npm install -g pptxgenjs
2. Run the server (stdio)
python pptx_mcp_server.py
3. Run as HTTP/SSE server
python pptx_mcp_server.py --transport sse --port 8000
---
Claude Desktop Config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pptx-maker": {
"command": "python",
"args": ["/absolute/path/to/pptx_mcp_server.py"]
}
}
}
---
Tools
list_themes()
Returns all brand themes with colour swatches and font choices.
list_slide_layouts()
Returns all 13 supported layout types with descriptions.
preview_theme(theme_id)
Returns the full colour/font spec for a theme (useful for AI to reference).
create_presentation(spec)
The main tool. Accepts a JSON spec, generates a .pptx in ./output/.
---
Spec Schema
{
"title": "My Deck",
"author": "Arbaz",
"subject": "Product Pitch",
"theme_id": "midnight_executive",
"filename": "my_deck.pptx",
"slides": [ ...slide objects... ]
}
Slide objects by layout
title_slide
{ "layout": "title_slide", "title": "...", "subtitle": "...", "tagline": "..." }
section_divider
{ "layout": "section_divider", "number": "01", "title": "...", "caption": "..." }
two_column
{
"layout": "two_column",
"title": "...",
"left_heading": "...", "left_body": "...",
"right_heading": "...", "right_body": "..."
}
icon_trio
{
"layout": "icon_trio",
"title": "...",
"items": [
{"heading": "...", "body": "..."},
{"heading": "...", "body": "..."},
{"heading": "...", "body": "..."}
]
}
stat_callout
{
"layout": "stat_callout",
"title": "...",
"stats": [
{"value": "94%", "label": "Customer Satisfaction", "delta": "+12% YoY"},
{"value": "£2.4M", "label": "Revenue", "delta": ""}
]
}
bullet_list
{ "layout": "bullet_list", "title": "...", "bullets": ["Point 1", "Point 2"] }
quote_highlight
{ "layout": "quote_highlight", "quote": "...", "attribution": "— Name, Role" }
timeline
{
"layout": "timeline",
"title": "...",
"steps": [
{"label": "Phase 1", "text": "Discovery"},
{"label": "Phase 2", "text": "Build"}
]
}
comparison
{
"layout": "comparison",
"title": "...",
"left_heading": "Option A", "left_points": ["Pro 1", "Pro 2"],
"right_heading": "Option B", "right_points": ["Pro 1", "Pro 2"]
}
chart_slide
{
"layout": "chart_slide",
"title": "...",
"caption": "Source: ...",
"chart_type": "bar",
"chart_data": {
"series_name": "Revenue",
"labels": ["Q1", "Q2", "Q3", "Q4"],
"values": [120, 145, 162, 198]
}
}
Supported chart_type values: bar, line, pie, doughnut, area
image_full
{ "layout": "image_full", "title": "...", "caption": "...", "image_url": "https://..." }
text_body
{ "layout": "text_body", "title": "...", "body": "...", "note": "Optional footnote" }
thank_you
{ "layout": "thank_you", "message": "Thank You", "contact": "...", "website": "..." }
---
Available Themes
| ID | Name | Vibe | |---|---|---| | midnight_executive | Midnight Executive | Navy + ice blue — professional, authoritative | | coral_energy | Coral Energy | Coral + gold — bold, startup-friendly | | forest_calm | Forest Calm | Green + moss — sustainability, wellness | | teal_trust | Teal Trust | Teal + seafoam — fintech, SaaS, healthcare | | charcoal_minimal | Charcoal Minimal | Charcoal + off-white — luxury, editorial | | berry_cream | Berry & Cream | Berry + cream — fashion, lifestyle |
---
Design Principles (enforced automatically)
- No decorative stripe accents (AI-generated tell)
- No cream/beige defaults
- No accent underlines under titles
- Cards use shadow + tint, never edge borders
- Safe font stack (Calibri, Cambria, Bookman Old Style)
- Minimum 0.5" margins throughout
- Every layout has a visual element — no text-only slides
---
Output
Files are saved to ./output/<filename>.pptx relative to the server directory.












