ppt-engine-mcp
Drives real PowerPoint desktop application for true-fidelity PDF export and per-slide image export, complementing python-pptx by handling rendering that no library can.
README
ppt-engine-mcp
A local MCP server that drives the real PowerPoint desktop application (COM automation) to do the one thing python-pptx fundamentally cannot: render — true-fidelity PDF export and per-slide image export.
Design philosophy: this server complements library workflows instead of replacing them. Building slides and filling text is faster with python-pptx — but no library has PowerPoint's render engine. This MCP handles only the engine-exclusive part, keeping its tool surface tiny (4 tools).
Requirements
- Windows 10+ with a logged-in interactive desktop session (PowerPoint has no true headless mode)
- Microsoft Office (PowerPoint) installed and licensed — verified on Office 2016+ (PowerPoint 16.0)
- Python 3.10+ — verified on 3.12
- Claude Code or any MCP client
Install
git clone https://github.com/Feynman520/d01-p03-ppt-engine-mcp.git
cd d01-p03-ppt-engine-mcp
py -3.12 -m venv .venv # or: python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
Register with Claude Code
Run this in the cloned folder (uses absolute paths, so it works from anywhere afterwards):
claude mcp add ppt-automation --scope user -- "$PWD\.venv\Scripts\python.exe" "$PWD\server.py"
--scope user makes it available in every project. Use --scope project to limit it to one project.
Verify
$py = ".\.venv\Scripts\python.exe"; $env:PYTHONUTF8 = "1"
& $py tests\smoke_com.py # COM PDF / slide image rendering / zombie cleanup
& $py tests\server_tools.py # MCP tool registration (does not launch PowerPoint)
Tools (2 core + 2 diagnostics)
| # | Tool | Input → Output | Why engine-only |
|---|---|---|---|
| ① | ppt_export_pdf |
src_path, out_path → {out_path} |
PowerPoint render engine PDF (python-pptx has no render engine) |
| ② | ppt_export_images |
src_path, out_dir, fmt?, width?, height? → {out_dir,count,files} |
Renders each slide to an image (thumbnails, previews, embedding in documents) |
| — | ppt_health |
→ {alive, powerpoint_version} |
Session check (launches PowerPoint on first call) |
| — | ppt_restart |
→ {alive} |
Recovery from COM errors |
Typical flow: build a .pptx with python-pptx → ppt_export_pdf for the distributable PDF /
ppt_export_images for slide thumbnails.
Originals are never modified; results are always written to out_path/out_dir.
Architecture notes
- Single STA worker thread (
engine/session.py): every PowerPoint call is serialized onto one dedicated thread (win32com COM objects are thread-bound; FastMCP may hop threads). - Lazy session: PowerPoint starts on the first tool call, is reused, and closes with the server.
DispatchEx+ early binding (gencache.EnsureDispatch): a dedicated instance with type-library calls. PDF viaPresentation.SaveAs(path, 32 /* ppSaveAsPDF */), images viaSlide.Export(path, "PNG", w, h).- No
Visible=False: unlike Excel/Word, PowerPoint throws when you hide the app window — instead presentations are opened windowless viaPresentations.Open(..., WithWindow=msoFalse). - Zombie prevention: PowerPoint gives no usable window handle, so the dedicated instance
PID is identified by diffing the
POWERPNT.EXEprocess list before/afterDispatchEx, and force-killed at shutdown if it survivesQuit(). - RPC-rejection retry / stdout protection: same as excel-engine-mcp.
Limitations
- Not suitable for unattended/service sessions (needs an interactive desktop).
- Slide creation/editing is faster with python-pptx — that is by design.
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.