PPTX MCP Server

by samos123

35 stars
271 downloads
Not rated
GitHub

About

Create Slides with a simple MCP server using Python PPTX library

Details

Author
samos123
GitHub stars
35
Downloads
271
Categories
Other

- Create or clear presentations
- Add slides with customizable layouts
- Insert titles, content, and custom textboxes
- Add a wide variety of PowerPoint shapes
- Embed images into slides
- Get textual slide content descriptions
- Render slides as PNG images (requires LibreOffice)
- Download the generated presentation file

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name PPTX MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install Python dependencies, optionally install LibreOffice for image rendering, then start the server with python server.py or fastmcp dev server.py. Configure host/port via environment variables or a .env file.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "pptx mcp server": {
            "pptx-mcp": {
                "command": "python",
                "args": [
                    "server.py"
                ]
            }
        }
    }
}

McpServers

{
    "pptx-mcp": {
        "command": "python",
        "args": [
            "server.py"
        ]
    }
}

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-dotenv

3. Install LibreOffice (for image rendering):
- Linux: sudo pacman -S libreoffice-fresh or sudo apt install libreoffice
- macOS: brew install --cask libreoffice
- Windows: Download from libreoffice.org

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.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.