Skip to main content
Glama

Office-PowerPoint-MCP-Server

A MCP (Model Context Protocol) server for PowerPoint manipulation using python-pptx. This server provides tools for creating, editing, and manipulating PowerPoint presentations through the MCP protocol.

Example

Pormpt

Output

Demo's GIF -> (./public/demo.mp4)

demo

Features

  • Round-trip any Open XML presentation (.pptx file) including all its elements

  • Add slides

  • Populate text placeholders, for example to create a bullet slide

  • Add image to slide at arbitrary position and size

  • Add textbox to a slide; manipulate text font size and bold

  • Add table to a slide

  • Add auto shapes (e.g. polygons, flowchart shapes, etc.) to a slide

  • Add and manipulate column, bar, line, and pie charts

  • Access and change core document properties such as title and subject

Related MCP server: PowerPoint MCP Server

Installation

Installing via Smithery

To install PowerPoint Manipulation Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @GongRzhe/Office-PowerPoint-MCP-Server --client claude

Prerequisites

  • Python 3.10 or higher

  • pip package manager

Installation Options

Option 1: Using the Setup Script (Recommended)

The easiest way to set up the PowerPoint MCP Server is using the provided setup script, which automates the installation process:

python setup_mcp.py

This script will:

  • Check prerequisites

  • Offer installation options:

    • Install from PyPI (recommended for most users)

    • Set up local development environment

  • Install required dependencies

  • Generate the appropriate MCP configuration file

  • Provide instructions for integrating with Claude Desktop

The script offers different paths based on your environment:

  • If you have uvx installed, it will configure using UVX (recommended)

  • If the server is already installed, it provides configuration options

  • If the server is not installed, it offers installation methods

Option 2: Manual Installation

  1. Clone the repository:

    git clone https://github.com/GongRzhe/Office-PowerPoint-MCP-Server.git cd Office-PowerPoint-MCP-Server
  2. Install dependencies:

    pip install -r requirements.txt
  3. Make the server executable:

    chmod +x ppt_mcp_server.py

Usage

Starting the Server

Run the server:

python ppt_mcp_server.py

MCP Configuration

Option 1: Local Python Server

Add the server to your MCP settings configuration file:

{ "mcpServers": { "ppt": { "command": "python", "args": ["/path/to/ppt_mcp_server.py"], "env": {} } } }

Option 2: Using UVX (No Local Installation Required)

If you have uvx installed, you can run the server directly from PyPI without local installation:

{ "mcpServers": { "ppt": { "command": "uvx", "args": [ "--from", "office-powerpoint-mcp-server", "ppt_mcp_server" ], "env": {} } } }

Available Tools

Presentation Tools

  • create_presentation: Create a new PowerPoint presentation

  • open_presentation: Open an existing PowerPoint presentation from a file

  • save_presentation: Save the current presentation to a file

  • get_presentation_info: Get information about the current presentation

  • set_core_properties: Set core document properties of the current presentation

Slide Tools

  • add_slide: Add a new slide to the current presentation

  • get_slide_info: Get information about a specific slide

  • populate_placeholder: Populate a placeholder with text

  • add_bullet_points: Add bullet points to a placeholder

Text Tools

  • add_textbox: Add a textbox to a slide

Image Tools

  • add_image: Add an image to a slide

  • add_image_from_base64: Add an image from a base64 encoded string to a slide

Table Tools

  • add_table: Add a table to a slide

  • format_table_cell: Format a table cell

Shape Tools

  • add_shape: Add an auto shape to a slide

Chart Tools

  • add_chart: Add a chart to a slide

Examples

Creating a New Presentation

# Create a new presentation result = use_mcp_tool( server_name="ppt", tool_name="create_presentation", arguments={} ) presentation_id = result["presentation_id"] # Add a title slide result = use_mcp_tool( server_name="ppt", tool_name="add_slide", arguments={ "layout_index": 0, # Title slide layout "title": "My Presentation", "presentation_id": presentation_id } ) slide_index = result["slide_index"] # Populate subtitle placeholder result = use_mcp_tool( server_name="ppt", tool_name="populate_placeholder", arguments={ "slide_index": slide_index, "placeholder_idx": 1, # Subtitle placeholder "text": "Created with PowerPoint MCP Server", "presentation_id": presentation_id } ) # Save the presentation result = use_mcp_tool( server_name="ppt", tool_name="save_presentation", arguments={ "file_path": "my_presentation.pptx", "presentation_id": presentation_id } )

Adding a Chart

# Add a chart slide result = use_mcp_tool( server_name="ppt", tool_name="add_slide", arguments={ "layout_index": 1, # Content slide layout "title": "Sales Data", "presentation_id": presentation_id } ) slide_index = result["slide_index"] # Add a column chart result = use_mcp_tool( server_name="ppt", tool_name="add_chart", arguments={ "slide_index": slide_index, "chart_type": "column", "left": 1.0, "top": 2.0, "width": 8.0, "height": 4.5, "categories": ["Q1", "Q2", "Q3", "Q4"], "series_names": ["2023", "2024"], "series_values": [ [100, 120, 140, 160], [110, 130, 150, 170] ], "has_legend": True, "legend_position": "bottom", "has_data_labels": True, "title": "Quarterly Sales", "presentation_id": presentation_id } )

License

MIT

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

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/GongRzhe/Office-PowerPoint-MCP-Server'

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