Office-PowerPoint-MCP-Server

A comprehensive MCP (Model Context Protocol) server for PowerPoint manipulation using python-pptx. Version 2.0 provides 32 powerful tools organized into 11 specialized modules, offering complete PowerPoint creation, management, and professional design capabilities. The server features a modular architecture with enhanced parameter handling, intelligent operation selection, and comprehensive error handling.
Not so ugly anymore with new slide_layout_templates
Example
Prompt
Output
Demo's GIF -> (./public/demo.mp4)
Features
Core PowerPoint Operations
- Round-trip support for any Open XML presentation (.pptx file) including all elements
- Template support with automatic theme and layout preservation
- Multi-presentation management with global state tracking
- Core document properties management (title, subject, author, keywords, comments)
Content Creation & Management
- Slide management with flexible layout selection
- Text manipulation with placeholder population and bullet point creation
- Advanced text formatting with font, color, alignment, and style controls
- Text validation with automatic fit checking and optimization suggestions
Visual Elements
- Image handling with file and base64 input support
- Image enhancement using Pillow with brightness, contrast, saturation, and filter controls
- Professional image effects including shadows, reflections, glows, and soft edges
- Shape creation with 20+ auto shape types (rectangles, ovals, flowchart elements, etc.)
- Table creation with advanced cell formatting and styling
Charts & Data Visualization
- Chart support for column, bar, line, and pie charts
- Data series management with categories and multiple series support
- Chart formatting with legends, data labels, and titles
Professional Design Features
- 4 professional color schemes (Modern Blue, Corporate Gray, Elegant Green, Warm Red)
- Professional typography with Segoe UI font family and size presets
- Theme application with automatic styling across presentations
- Gradient backgrounds with customizable directions and color schemes
- Slide enhancement tools for existing content
- 25 built-in slide templates with dynamic sizing and visual effects
- Advanced template features including auto-wrapping, dynamic font sizing, and professional animations
Advanced Features
- Font analysis and optimization using FontTools
- Picture effects with 9 different visual effects (shadow, reflection, glow, bevel, etc.)
- Comprehensive validation with automatic error fixing
- Template search with configurable directory paths
- Professional layout calculations with margin and spacing management
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.6 or higher (as specified in pyproject.toml)
- pip package manager
- Optional: uvx for package execution without local installation
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
-
Clone the repository:
git clone https://github.com/GongRzhe/Office-PowerPoint-MCP-Server.git
cd Office-PowerPoint-MCP-Server
-
Install dependencies:
pip install -r requirements.txt
-
Make the server executable:
chmod +x ppt_mcp_server.py
Usage
Display help text:
python ppt_mcp_server.py -h
Starting the Stdio Server
Run the stdio server:
python ppt_mcp_server.py
Starting the Streamable-Http Server
Run the streamable-http server on port 8000:
python ppt_mcp_server.py --transport http --port 8000
Run in Docker
docker build -t ppt_mcp_server .
docker run -d --rm -p 8000:8000 ppt_mcp_server -t http
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": {}
}
}
}
🚀 What's New in v2.0
Comprehensive Tool Suite (32 Tools)
- Complete PowerPoint manipulation with 34 specialized tools
- 11 organized modules covering all aspects of presentation creation
- Enhanced parameter handling with comprehensive validation
- Intelligent defaults and operation-based interfaces
Built-in Slide Templates
- 25+ professional slide templates with dynamic features built-in
- Advanced template system with auto-generation capabilities
- Auto-sizing text that adapts to content length and container size
- Professional visual effects including shadows, glows, and gradients
- Complete presentation generation from template sequences
Modular Architecture
- 11 specialized modules: presentation, content, structural, professional, template, hyperlink, chart, connector, master, and transition tools
- Better maintainability with separated concerns
- Easier extensibility for adding new features
- Cleaner code structure with shared utilities
Available Tools
The server provides 34 specialized tools organized into the following categories:
Presentation Management (7 tools)
- create_presentation - Create new presentations
- create_presentation_from_template - Create from templates with theme preservation
- open_presentation - Open existing presentations
- save_presentation - Save presentations to files
- get_presentation_info - Get comprehensive presentation information
- get_template_file_info - Analyze template files and layouts
- set_core_properties - Set document properties
Content Management (8 tools)
- add_slide - Add slides with optional background styling
- get_slide_info - Get detailed slide information
- extract_slide_text - ✨ NEW Extract all text content from a specific slide
- extract_presentation_text - ✨ NEW Extract text content from all slides in presentation
- populate_placeholder - Populate placeholders with text
- add_bullet_points - Add formatted bullet points
- manage_text - ✨ Unified text tool (add/format/validate/format_runs)
- manage_image - ✨ Unified image tool (add/enhance)
Template Operations (7 tools)
- list_slide_templates - Browse available slide layout templates
- apply_slide_template - Apply structured layout templates to existing slides
- create_slide_from_template - Create new slides using layout templates
- create_presentation_from_templates - Create complete presentations from template sequences
- get_template_info - Get detailed information about specific templates
- auto_generate_presentation - Automatically generate presentations based on topic
- optimize_slide_text - Optimize text elements for better readability and fit
Structural Elements (4 tools)
- add_table - Create tables with enhanced formatting
- format_table_cell - Format individual table cells
- add_shape - Add shapes with text and formatting options
- add_chart - Create charts with comprehensive customization
Professional Design (3 tools)
- apply_professional_design - ✨ Unified design tool (themes/slides/enhancement)
- apply_picture_effects - ✨ Unified effects tool (9+ effects combined)
- manage_fonts - ✨ Unified font tool (analyze/optimize/recommend)
Specialized Features (5 tools)
- manage_hyperlinks - Complete hyperlink management (add/remove/list/update)
- manage_slide_masters - Access and manage slide master properties and layouts
- add_connector - Add connector lines/arrows between points on slides
- update_chart_data - Replace existing chart data with new categories and series
- manage_slide_transitions - Basic slide transition management
🌟 Key Unified Tools
manage_text - All-in-One Text Management
# Add text box
manage_text(slide_index=0, operation="add", text="Hello World", font_size=24)
# Format existing text
manage_text(slide_index=0, operation="format", shape_index=0, bold=True, color=[255,0,0])
# Validate text fit with auto-fix
manage_text(slide_index=0, operation="validate", shape_index=0, validation_only=False)
manage_image - Complete Image Handling
# Add image with enhancement
manage_image(slide_index=0, operation="add", image_source="logo.png",
enhancement_style="presentation")
# Enhance existing image
manage_image(slide_index=0, operation="enhance", image_source="photo.jpg",
brightness=1.2, contrast=1.1, saturation=1.3)
apply_picture_effects - Multiple Effects in One Call
# Apply combined effects
apply_picture_effects(slide_index=0, shape_index=0, effects={
"shadow": {"blur_radius": 4.0, "color": [128,128,128]},
"glow": {"size": 5.0, "color": [0,176,240]},
"rotation": {"rotation": 15.0}
})
apply_professional_design - Theme & Design Management
# Add professional slide
apply_professional_design(operation="slide", slide_type="title_content",
color_scheme="modern_blue", title="My Presentation")
# Apply theme to entire presentation
apply_professional_design(operation="theme", color_scheme="corporate_gray")
# Enhance existing slide
apply_professional_design(operation="enhance", slide_index=0, color_scheme="elegant_green")
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={
"l