Skip to main content
Glama

PPTX MCP Server

by samos123
README.md3.37 kB
# 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](https://python-pptx.readthedocs.io/) - [Pillow](https://python-pillow.org/) - [FastMCP](https://github.com/ContextualAI/fastmcp) - **LibreOffice** (for slide image rendering; must be installed separately and available in your system PATH) - [python-dotenv](https://pypi.org/project/python-dotenv/) (for development environment configuration) ## Installation 1. Install Python dependencies: ```bash pip install . ``` *(Installs from `pyproject.toml` for dependencies)* 2. Optional: Install python-dotenv for development environment variables: ```bash 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](https://www.libreoffice.org/download/download/) ## Usage Start the server: ```bash 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: ```bash 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: ```bash python server.py ``` Or (for development with FastMCP): ```bash 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](LICENSE) for details.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/samos123/pptx-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server