Create Slides with a simple Python MCP server using Python PPTX library
Project description
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
-
Install Python dependencies:
pip install .
(Installs from
pyproject.tomlfor dependencies) -
Optional: Install python-dotenv for development environment variables:
pip install python-dotenv
-
Install LibreOffice (for image rendering):
- Linux:
sudo pacman -S libreoffice-freshorsudo apt install libreoffice - macOS:
brew install --cask libreoffice - Windows: Download from libreoffice.org
- Linux:
Usage
Start the server:
python server.py
For 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.py
OR
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=9000
Load the environment variables when starting the server:
python server.py
Or (for development with FastMCP):
fastmcp dev server.py
API 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_pptx_mcp_server-0.1.0.tar.gz.
File metadata
- Download URL: iflow_mcp_pptx_mcp_server-0.1.0.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0c5db6196725a619636c6197673c85c98fc5aaf83ef789c5440db44fee05fff
|
|
| MD5 |
d69fd51a9b2796b0cff1cee1b073586b
|
|
| BLAKE2b-256 |
49f28f8d313edef30a36956d20f5559802929a1a616682632e372e220dfe22ad
|
File details
Details for the file iflow_mcp_pptx_mcp_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_pptx_mcp_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcaffee0fc70f8217fc4a529066867bd11cfa7d01d41436b7032ead620b50bbe
|
|
| MD5 |
0530c6a7fa4a826ebbb07589353cb6ec
|
|
| BLAKE2b-256 |
2b0773382f71ea873b1bbd49da996e7eae19cb7d874c3f7977bbff269abe6be4
|