Skip to main content
Glama
siennag-mcp

FlowPresentationMCP

by siennag-mcp

FlowPresentationMCP

A custom Model Context Protocol (MCP) server that lets people generate polished, on-brand presentations on demand — styled with the Peach State Truck Centers theme in a clean, modern look, and built from a library of prebuilt graphics. It exports both PowerPoint (.pptx) and HTML presentations.

What it does

FlowPresentationMCP exposes presentation-building tools to any MCP-compatible client (Cursor, Claude Desktop, etc.). Instead of starting from a blank slide, you describe the deck — title, sections, bullets, icon columns, images — and the server assembles a complete, branded presentation in both formats.

  • Modern Peach State theme — brand red #E1251B and gray with generous whitespace, large type, and a refreshed icon set.

  • Prebuilt graphics — the brand logo, the signature chevron accent, and 25 modern line-icons (red + gray hexagon tiles).

  • Two output formats from one spec:

    • PowerPoint (.pptx) — fully editable in Office / Keynote / Google Slides.

    • HTML — a single self-contained file (icons/images inlined) that runs in any browser, with keyboard navigation.

Related MCP server: Slidespeak

Requirements

  • Python 3.9+

  • pip install -r requirements.txt (installs python-pptx and Pillow)

No external MCP SDK is required — the server speaks the MCP stdio JSON-RPC protocol directly.

Install

cd /Users/siennagalli/Documents/FlowPresentationMCP
python3 -m pip install -r requirements.txt

Connect it to an MCP client

Add this to your client's MCP config (see examples/mcp-config.json):

{
  "mcpServers": {
    "flowpresentation": {
      "command": "python3",
      "args": ["-m", "flowpresentation"],
      "cwd": "/Users/siennagalli/Documents/FlowPresentationMCP",
      "env": { "FLOWPRESENTATION_OUTPUT": "/Users/siennagalli/Documents/FlowPresentations" }
    }
  }
}

FLOWPRESENTATION_OUTPUT sets the default folder for generated files (defaults to ./output).

Tools

Tool

Purpose

create_presentation

Build a deck from a spec and write .pptx and/or .html.

list_themes

List themes with their colors and fonts.

list_layouts

List slide layouts and the fields each accepts.

list_icons

List the prebuilt modern icon names.

create_presentation arguments

  • spec (object, required) — the deck (see below)

  • formats (array) — ["pptx", "html"] (default: both)

  • filename (string) — base name (default: derived from title)

  • output_dir (string) — target folder (default: FLOWPRESENTATION_OUTPUT)

Deck spec

{
  "title": "Peach State Service Update",
  "theme": "peach-modern",
  "slides": [
    { "layout": "title", "kicker": "Quarterly Review", "title": "Service & Parts Update", "subtitle": "Q3 performance and what's ahead" },
    { "layout": "section", "number": "01", "title": "Where we are today" },
    { "layout": "bullets", "title": "Highlights", "bullets": ["Turnaround down 18%", "Parts fill rate at a high"] },
    { "layout": "columns", "title": "Built around our customers", "columns": [
      { "icon": "wrench", "heading": "Expert Service", "body": "Factory-trained technicians." },
      { "icon": "truck",  "heading": "Fleet Ready",   "body": "Uptime support for every truck." }
    ]},
    { "layout": "big-idea", "title": "Uptime is everything." },
    { "layout": "image", "side": "right", "image": "dealership-hero", "title": "Built for the long haul", "bullets": ["Locations statewide", "Genuine parts in stock"] },
    { "layout": "quote", "quote": "They get our trucks back faster than anyone.", "attribution": "Fleet Manager" },
    { "layout": "closing", "title": "Thank you", "subtitle": "peachstatetrucks.com" }
  ]
}

A full example lives in examples/sample_deck.json.

Layouts

Content: title, section, bullets, columns (2–4 icon cards), big-idea, quote, closing.

Photos: image (left/right split), photo-full (full-bleed photo with overlaid caption), gallery (2–6 photo grid with captions).

Graphs & reporting: chart (bar / line / pie) and kpi (a row of 2–4 big metric cards).

Run list_layouts for exact fields. Friendly aliases are accepted (e.g. divider → section, cards → columns, bar/line/pie → chart, stats/metrics → kpi, photos → gallery).

Charts & reporting standards

Charts use a fixed brand series palette so every report looks consistent: red #E1251B → dark gray #53575A → near-black → mid gray → red tint → light gray. In PowerPoint these are native, editable charts; in HTML they're crisp inline SVG.

{ "layout": "chart", "title": "Service revenue by month",
  "chart": { "type": "bar", "unit": "$",
    "categories": ["Jul", "Aug", "Sep"],
    "series": [{ "name": "Revenue", "values": [820000, 910000, 1020000] }] } }
  • chart.type: bar | line | pie

  • chart.unit: "$", "%", or any suffix (formats axis + labels)

  • chart.series: one or more { name, values[] } (multi-series → legend); categories[] are the x-axis labels

  • value_labels: show value on each bar (default true for single-series)

{ "layout": "kpi", "title": "Quarter at a glance",
  "stats": [
    { "value": "98%",   "label": "Fleet Uptime",   "caption": "+3 pts vs Q2", "icon": "truck" },
    { "value": "$2.4M", "label": "Parts Revenue",   "caption": "+12% YoY",     "icon": "money" }
  ] }

A full reporting example lives in examples/reporting_deck.json.

Themes

  • peach-modern (default) — light, modern, brand red accent

  • peach-dark — modern dark background

  • peach-classic — closer to the original template look

Icons

check, click, clock, close, email, employee, fleet, gear, globe, insight, keys, location, mechanic, money, peak, people, presenter, star, swoosh, target, top-performer, truck, user, video, wrench — each in red and gray. Common aliases work too (e.g. settings → gear, dollar → money).

Try it without a client

python3 -c "import json; from flowpresentation.models import normalize_deck; \
from flowpresentation.pptx_builder import build_pptx; from flowpresentation.html_builder import build_html; \
d=normalize_deck(json.load(open('examples/sample_deck.json'))); \
print(build_pptx(d,'output/sample.pptx')); print(build_html(d,'output/sample.html'))"

Project layout

flowpresentation/      MCP server package
  server.py            stdio JSON-RPC MCP server + tools
  models.py            deck spec validation/normalization
  theme.py             theme definitions
  assets.py            icon/logo/chevron/photo resolver
  pptx_builder.py      Deck -> PowerPoint
  html_builder.py      Deck -> self-contained HTML
assets/                brand assets (logo, chevron, photos, icons, template)
  icons-modern/        new modern icons (SVG, red + gray)
Modern Icons/          modern icons as PNG + SVG (easy to browse)
brand/                 theme.json, assets.json
examples/              sample_deck.json, mcp-config.json
scripts/               icon + slide generators, GitHub push helper
output/                generated decks (gitignored)

License

TBD

Related MCP Connectors

Related MCP Servers