ppt-generator
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ppt-generatorGenerate a 5-slide presentation on quantum computing trends."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PPT Generator
An MCP (Model Context Protocol) server that automatically generates presentations from a given topic.
LLM generation is offloaded to the client. The server owns the prompts, the output
JSON schemas, and all deterministic post-processing (validation, layout, lint, HTML/PPTX
render); it never calls a model itself. Each generation step is a prepare_* /
ingest_* pair — prepare_* hands the client the prompt + schema, the client generates
the JSON, and ingest_* validates and post-processes it. This means no AWS/Anthropic
credentials and no per-call model cost on the server side — the client's own model does
the generating. See the ADR index under docs/adr/ for the design rationale.
Prerequisites
Python 3.13+
uv package manager
Claude Code (recommended — the plugin bundles the MCP server + workflow skills). Any MCP client that can generate JSON also works — no model API keys needed on the server.
Related MCP server: marp-agent-mcp
1. Install as a Claude Code plugin (recommended)
The repo ships as a Claude Code plugin (manifest at .claude-plugin/plugin.json) that
registers the MCP server and the ppt-outline / ppt-design / ppt-modify /
ppt-visual-qa skills which drive the prepare→generate→ingest workflow.
Add the marketplace and install the plugin from within Claude Code:
/plugin marketplace add haandol/ppt-generator
/plugin install ppt-generator@ppt-generatorThe plugin runs the MCP server via uv run against the plugin's own checkout
(${CLAUDE_PLUGIN_ROOT}), so uv must be on your PATH and the plugin's dependencies
must be synced. If the server fails to start, sync deps once from the plugin directory:
uv sync # run inside the installed plugin's directoryNo model API keys are required — the client supplies the generation.
Alternative — clone and register the MCP server directly
If you are not using the Claude Code plugin system (e.g. Kiro / Claude Desktop, or you prefer a local clone), clone the repo and register just the MCP server:
git clone https://github.com/haandol/ppt-generator.git
cd ppt-generator
uv sync{
"mcpServers": {
"ppt-generator": {
"command": "uv",
"args": ["--directory", "/path/to/ppt-generator", "run", "ppt-generator"]
}
}
}Replace
/path/to/ppt-generatorwith the actual project path. This registers the MCP server only; the workflow skills are Claude Code plugin skills.
Use it as a skill in Kiro / Codex
The workflow is just the MCP server plus the prepare_*/ingest_* handshake, so any
MCP client that can generate JSON can drive it — including Kiro and Codex. The
repo ships the entry points each harness loads automatically (Kiro steering at
.kiro/steering/ppt-generator.md, Codex guidance in AGENTS.md), so you get the same
skill-level guidance without duplicating the prompts.
First clone and sync once (no model API keys needed):
git clone https://github.com/haandol/ppt-generator.git
cd ppt-generator
uv syncKiro — copy the bundled example and fix the path, then Kiro auto-loads the steering:
cp .kiro/settings/mcp.json.example .kiro/settings/mcp.json
# edit .kiro/settings/mcp.json → replace /path/to/ppt-generator with your clone path{
"mcpServers": {
"ppt-generator": {
"command": "uv",
"args": ["--directory", "/path/to/ppt-generator", "run", "ppt-generator"],
"disabled": false,
"autoApprove": ["export_html", "load_project_status", "list_projects"]
}
}
}Use ~/.kiro/settings/mcp.json instead for a global (all-workspace) registration.
Codex — register the MCP server via CLI or ~/.codex/config.toml:
codex mcp add ppt-generator -- uv --directory /path/to/ppt-generator run ppt-generator# ~/.codex/config.toml
[mcp_servers.ppt-generator]
command = "uv"
args = ["--directory", "/path/to/ppt-generator", "run", "ppt-generator"]Codex reads the repo's AGENTS.md for the prepare/ingest workflow guidance. See
docs/harness/kiro-codex.md for the full walkthrough
(Visual QA setup, custom Codex prompt, per-harness entry-point table).
For the full list of environment variables and detailed client / plugin configurations, see docs/harness/environment.md.
2. Usage
You interact in natural language; the client drives the prepare→generate→ingest handshake
behind the scenes (guided by the bundled skills). You don't call the prepare_*/ingest_*
tools by hand — just describe what you want.
Step 1 — Generate or Import PPT
Create new — Prepare your content in a file like context.md, then request via your MCP client:
Read @context.md and generate a PPT using ppt-generator.The client generates the outline JSON, then the per-slide design specs, following the prompts and schemas the server hands back — no model credentials on the server side.
Import existing PPTX — You can also import an existing PPTX file for editing:
Import @presentation.pptx using import_pptx.Importing automatically generates an HTML preview. You can skip Step 2 and directly use per-slide editing, Visual QA, and export features. Parsing is deterministic with no LLM calls.
Step 2 — Provide Project Information
Before outline generation, you will be asked for the following:
Presentation purpose — e.g., "internal tech sharing", "client proposal", "conference talk"
Presentation duration — 3–60 minutes (default: 15 minutes)
Audience type —
general/technical/executivePresenter info — name / title / organization
The flow proceeds Outline → DESIGN.md (design intent) → per-slide Design Spec. You review and confirm the outline before slides are generated, and can edit at each stage.
Step 3 — Edit Individual Slides (Optional)
After design spec generation (or PPTX import), you can modify individual slides. Instead of regenerating everything, you can add, update, delete, move, or make narrow single-component edits:
Add a bar chart comparing performance data below the diagram on slide 3.
Slide 5 has too much text — reduce it to key bullet points with icon layout.
Add a Q&A slide after slide 7.
Make the "LLM" box on slide 4 red.
Move slide 6 to position 2.Add/update/component edits use the prepare/ingest handshake; move and delete are pure file operations with no generation.
Step 4 — Visual QA (Optional)
Detects and fixes visual defects (line breaks, overlaps, margin misalignment, etc.). The server captures screenshots (Playwright); the client analyzes them and generates fixes via the prepare/ingest handshake. Does not run automatically — must be explicitly requested.
Prerequisites:
playwright install chromiumRun visual QA.Visual QA is an opt-in tool. A suggestion message appears after design spec generation, but it will not run until explicitly requested. If Playwright is not installed, it can be skipped without affecting existing functionality.
Step 5 — Export Files
After the design spec is finalized, request an HTML preview:
Export as HTML and open it.To export in PPTX format:
Export as PPT and open it.Debug Logging
The MCP server uses stdio communication, so stdout logs cannot be viewed directly. Enable file logging to write debug-level logs to a file.
Configuration
When registering the MCP server directly, add PPT_LOG_DIR to the env section:
{
"mcpServers": {
"ppt-generator": {
"command": "uv",
"args": ["--directory", "/path/to/ppt-generator", "run", "ppt-generator"],
"env": {
"PPT_LOG_DIR": "/tmp/ppt-generator"
}
}
}
}When installed as a Claude Code plugin, set
PPT_LOG_DIRin your Claude Code MCP environment for theppt-generatorserver. See docs/harness/environment.md.
Environment Variables
Variable | Description |
| Number of parallel screenshot-capture workers for Visual QA (Playwright, server-side; default: 8). Analysis/fix generation runs on the client |
| Maximum fix iterations for Visual QA (default: 2) |
| Per-slide screenshot capture timeout in seconds (default: 60) |
| Directory for per-project log files (recommended). e.g., |
| Single log file path (legacy). Ignored when |
Log files rotate at 10MB with 2 backups retained.
When
PPT_LOG_DIRis set, a<project_id>.logfile is created for each project.
Viewing Logs
# View logs for a specific project
tail -f /tmp/ppt-generator/<project_id>.log
# View all logs
tail -f /tmp/ppt-generator/*.logDevelopment
uv run ppt-generator # Run MCP server (stdio mode)
uv run pytest # Run all testsDocumentation
Architecture — prepare/ingest handshake, MCP tool list, workflows, project structure
Environment & Config — environment variables, MCP client / plugin config
Kiro / Codex Setup — use the workflow as a skill in Kiro and Codex
Schemas — domain models, client output models, component_hint table
Testing — test writing rules and patterns
ADR — Architecture Decision Records (the client-LLM offload decision lives under the
offload/category)
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/haandol/ppt-generator'
If you have feedback or need assistance with the MCP directory API, please join our Discord server