pptx-mcp-server logo

pptx-mcp-server

arbazpathan91/pptx-mcp-server
0 starsUpdated 2026-06-24Community

Is this your server?

Add your score badge to your README and get your server in front of 45k+ builders a month.

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

A Model Context Protocol (MCP) server that lets any AI model create standardised, high-quality PowerPoint presentations via a clean JSON API.

README.md

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

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use AI & ML servers.