Fire in da houseTop Tip:Most people pay up to $340 per month for Perplexity, MidJourney, Runway, ChatGPT, and more - but you can get them all your AI tools for $15 with Galaxy. It's free to test!Fire in da houseCheck it out

Office-PowerPoint-MCP-Server

MCP.Pizza Chef: GongRzhe

Office-PowerPoint-MCP-Server is an MCP server that leverages python-pptx to enable programmatic creation, editing, and manipulation of PowerPoint presentations. It supports round-tripping Open XML .pptx files, adding slides, and populating text placeholders, providing structured access to presentation elements through the MCP protocol for seamless integration with LLM-powered workflows.

Use This MCP server To

Create new PowerPoint presentations programmatically Edit existing .pptx files by adding or modifying slides Populate text placeholders in slides with dynamic content Round-trip Open XML presentations for content updates Automate generation of presentation decks from data inputs Integrate PowerPoint editing into AI-driven workflows Extract slide content for summarization or analysis Generate customized presentations based on user prompts

README

Office-PowerPoint-MCP-Server

smithery badge

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

650f4cc5d0f1ea4f3b1580800cb0deb

Output

084f1cf4bc7e4fcd4890c8f94f536c1

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

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

Office-PowerPoint-MCP-Server FAQ

How do I install the Office-PowerPoint-MCP-Server?
You can install it by cloning the GitHub repository and following the setup instructions, which typically involve installing python-pptx and running the server script.
Can this server handle all PowerPoint file elements?
It supports round-tripping of Open XML .pptx files including slides and text placeholders, but some complex elements may have limited support depending on python-pptx capabilities.
How does this server integrate with LLMs like OpenAI, Claude, or Gemini?
It exposes PowerPoint manipulation functions via the MCP protocol, allowing LLM clients to programmatically create and edit presentations in real time.
Is it possible to add new slides dynamically using this server?
Yes, the server supports adding new slides to existing presentations through MCP commands.
Can I use this server to extract text content from slides?
Yes, you can extract and manipulate slide text content, enabling workflows like summarization or content analysis.
Does the server support styling or formatting of slide elements?
Basic text placeholder population is supported; advanced styling depends on python-pptx features and may require custom extensions.
Is the server compatible with all versions of PowerPoint files?
It works with Open XML .pptx files, which are standard for modern PowerPoint versions.
How secure is the server when handling presentation files?
Security depends on your deployment environment; the server itself processes files locally and does not transmit data externally unless configured.