pptx-mcp
Create Slides with a simple MCP server using Python PPTX library
Documentation
PPTX MCP Server
A FastMCP-powered server for programmatically creating, editing, and rendering PowerPoint (PPTX) presentations. Supports slide creation, text and shape insertion, image embedding, and slide rendering to PNG (with LibreOffice).
Features
- Create/Clear Presentations: Start new or reset existing PPTX files.
- Add Slides: Insert slides with customizable layouts.
- Text & Content: Add titles, content, and custom textboxes to slides.
- Shapes: Insert a wide variety of PowerPoint shapes (including flowchart elements).
- Images: Embed images into slides.
- Slide Description: Get a textual summary of slide contents for verification.
- Slide Rendering: Render slides as PNG images (requires LibreOffice).
- Download PPTX: Download the generated presentation file.
Requirements
- Python 3.12+
- python-pptx
- Pillow
- FastMCP
- LibreOffice (for slide image rendering; must be installed separately and available in your system PATH)
- python-dotenv (for development environment configuration)
Installation
1. Install Python dependencies:
pip install .*(Installs from `pyproject.toml` for dependencies)*
2. Optional: Install python-dotenv for development environment variables:
pip install python-dotenv3. Install LibreOffice (for image rendering):
Usage
Start the server:
python server.pyFor development with environment variables:
You can set the server's host and port using environment variables:
- `HOST` (default: `127.0.0.1`)
- `PORT` (default: `8000`)
For example, to run on all interfaces and port 9000:
HOST=0.0.0.0 PORT=9000 python server.pyOR
Create/edit the `.env` file in the project root:
For example, to run on all interfaces and port 9000:
HOST=0.0.0.0
PORT=9000Load the environment variables when starting the server:
python server.pyOr (for development with FastMCP):
fastmcp dev server.pyAPI Overview
The server exposes tools and resources via FastMCP, including:
- `create_or_clear_presentation(filename)`
- `add_slide(filename, layout_index)`
- `add_title_and_content(filename, slide_index, title, content)`
- `add_textbox(filename, slide_index, text, left_inches, top_inches, width_inches, height_inches, font_size_pt, bold)`
- `add_shape(filename, slide_index, shape_type_name, left_inches, top_inches, width_inches, height_inches, text)`
- `add_picture(filename, slide_index, image, left_inches, top_inches, width_inches, height_inches)`
- `get_slide_content_description(filename, slide_index)`
- `get_slide_image(filename, slide_index)` *(requires LibreOffice)*
- `get_pptx_file(filename)`
See the code for full parameter details and available shape types.
Presentations & Templates
- Presentations are saved in the `presentations/` directory.
- You can add your own templates in `presentations/templates/`.
License
See LICENSE for details.
Frequently asked questions
What is pptx-mcp?
pptx-mcp is Create Slides with a simple MCP server using Python PPTX library
How do I install pptx-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is pptx-mcp open source?
Yes — it is hosted on GitHub at https://github.com/samos123/pptx-mcp and has 24 stars.
Related MCP tools
AWS MCP Servers — helping you get the most out of AWS, wherever you use MCP. Python-based implementation. Trusted by 6900+ developers.
A simple, secure MCP-to-OpenAPI proxy server Python-based implementation. Trusted by 3500+ developers. Trusted by 3500+ developers.
MCP server that interacts with Obsidian via the Obsidian rest API community plugin Python-based implementation. Trusted by 2300+ developers.
Default Configuration: MCP CLI defaults to using Ollama with the gpt-oss reasoning model for local, privacy-focused operation without requiring API keys.
Official MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
MCP server for long term agent memory with Mem0. Also useful as a template to get you started building your own MCP server with Python!
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP