Skip to main content

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

  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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_pptx_mcp_server-0.1.0.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iflow_mcp_pptx_mcp_server-0.1.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

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

Hashes for iflow_mcp_pptx_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c0c5db6196725a619636c6197673c85c98fc5aaf83ef789c5440db44fee05fff
MD5 d69fd51a9b2796b0cff1cee1b073586b
BLAKE2b-256 49f28f8d313edef30a36956d20f5559802929a1a616682632e372e220dfe22ad

See more details on using hashes here.

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

Hashes for iflow_mcp_pptx_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fcaffee0fc70f8217fc4a529066867bd11cfa7d01d41436b7032ead620b50bbe
MD5 0530c6a7fa4a826ebbb07589353cb6ec
BLAKE2b-256 2b0773382f71ea873b1bbd49da996e7eae19cb7d874c3f7977bbff269abe6be4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page