A comprehensive MCP server for PowerPoint manipulation using python-pptx, built with FastMCP.
This server provides 32 specialized tools organized into 11 focused modules:
- Create/open/save presentations
- Create from template files with layout preservation
- Get presentation info and properties
- Set core properties (title, author, etc.)
- Add slides with custom layouts and backgrounds
- Manage text with advanced formatting
- Add and enhance images
- Extract text content
- Populate placeholders
- Add bullet points
- 31+ pre-built slide templates
- Auto-generate presentations from topics
- Apply templates to existing slides
- Optimize text for readability
- 8 color schemes & 5 typography styles
- Add tables with custom styling
- 20+ shape types (basic, flowchart, polygons)
- Add lines and connectors
- Add text boxes
- Apply professional themes
- Add charts (column, bar, line, pie)
- Advanced text formatting
- Hyperlink management
- Chart data updates
- Connector lines/arrows
- Slide master management
- Slide transitions
This server supports two transport modes:
- STDIO (default): For Claude Desktop and MCP clients. Communication via stdin/stdout.
- HTTP: For web applications, APIs, and cloud deployment. RESTful endpoints with streaming support.
cd powerpoint-mcp-server
# Install with uv (recommended)
uv sync
# Or manually install dependencies
uv pip install chuk-mcp-server python-pptx Pillow fonttools# Test that it works
uv run python server.py --helpAdd to your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"powerpoint": {
"command": "uv",
"args": [
"--directory",
"/Users/remicarvalot/project_pro/powerpoint-mcp-server",
"run",
"python",
"server.py"
]
}
}
}Important: Replace /Users/remicarvalot/project_pro/powerpoint-mcp-server with the actual path to your installation.
Your PowerPoint MCP server will now be available with all 32 tools!
Perfect for web applications and cloud deployment.
# Start HTTP server on port 8000
uv run python server.py --http
# Or specify custom port/host
uv run python server.py --port 8000 --host 0.0.0.0Test with curl:
curl http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'Docker automatically runs the server in HTTP mode, perfect for production deployments.
docker-compose up# Build the image
docker build -t powerpoint-mcp-server .
# Run the container
docker run -p 8000:8000 powerpoint-mcp-serverOnce connected to Claude Desktop, you can ask:
"Create a new PowerPoint presentation about AI"
"Add a title slide with the title 'Machine Learning 101'"
"Apply the modern_blue color scheme"
"Add a slide with a chart showing quarterly results"
"Create a presentation from the business template"
"Save the presentation as 'my-presentation.pptx'"
create_presentation- Create new blank presentationcreate_presentation_from_template- Create from template fileopen_presentation- Open existing .pptxsave_presentation- Save to diskget_presentation_info- Get metadataget_template_file_info- Get template detailsset_core_properties- Set title, author, etc.
add_slide- Add slides with layoutsget_slide_info- Get slide detailsextract_slide_text- Extract text from slideextract_presentation_text- Extract all textpopulate_placeholder- Fill placeholdersadd_bullet_points- Add formatted bulletsmanage_text- Unified text operationsmanage_image- Add and enhance images
list_slide_templates- List 31+ templatesapply_slide_template- Apply template to slidecreate_slide_from_template- Create from templatecreate_presentation_from_templates- Build from sequenceget_template_info- Get template detailsauto_generate_presentation- AI-style generationoptimize_slide_text- Optimize readability
add_table- Add formatted tablesadd_shape- Add 20+ shape typesadd_line- Draw linesadd_textbox- Add text boxes
apply_professional_design- Apply themesadd_chart- Add professional chartsformat_text_advanced- Advanced formatting
update_chart_data- Update chart datamanage_hyperlinks- Manage hyperlinksadd_connector- Add connector linesmanage_slide_masters- Access slide mastersmanage_slide_transitions- Set transitions
list_presentations- List all loaded presentationsswitch_presentation- Switch between presentationsget_server_info- Get server capabilities
The server includes 31+ pre-built slide templates with:
Standard Templates:
- title_slide, agenda_slide, text_with_image
- two_column_text, key_metrics_dashboard
- chart_comparison, thank_you_slide
- data_table_slide, full_image_slide
- three_column_layout, quote_testimonial
- process_flow, and more...
Color Schemes (8):
- modern_blue
- corporate_gray
- elegant_green
- warm_red
- pastel_dream
- nature_earth
- neon_vibrant
- minimalist_mono
Typography Styles (5):
- modern_sans
- elegant_serif
- tech_modern
- organic_flow
- brutalist_bold
Set custom template directories:
# Unix/Mac
export PPT_TEMPLATE_PATH="/path/to/templates:/another/path"
# Windows
set PPT_TEMPLATE_PATH="C:\templates;D:\more-templates"uv sync --devuv run pytestuv run mypy server.pyuv run ruff check .# Force STDIO mode (default)
python server.py --stdio
python server.py --transport=stdio
# Force HTTP mode
python server.py --http
python server.py --port 8000
python server.py --host 0.0.0.0
python server.py --transport=http
# Enable debug logging
python server.py --debug
python server.py --log-level debugThis server combines:
- FastMCP - Lightweight and fast MCP framework
- Office-PowerPoint-MCP-Server - 32 specialized PowerPoint tools
- Modular Design - 11 tool modules + 7 utility modules (3,068 lines)
- Advanced Features - Templates, themes, auto-generation, optimization
powerpoint-mcp-server/
├── server.py # Main server file
├── pyproject.toml # Project configuration
├── tools/ # 11 tool modules
│ ├── presentation_tools.py # Presentation management
│ ├── content_tools.py # Content operations
│ ├── template_tools.py # Template system
│ ├── structural_tools.py # Shapes, tables, lines
│ ├── professional_tools.py # Design & themes
│ ├── chart_tools.py # Chart operations
│ ├── hyperlink_tools.py # Hyperlink management
│ ├── connector_tools.py # Connectors
│ ├── master_tools.py # Slide masters
│ └── transition_tools.py # Transitions
├── utils/ # 7 utility modules
│ ├── template_utils.py # Template system (1,142 lines)
│ ├── design_utils.py # Design tools (688 lines)
│ ├── content_utils.py # Content ops (578 lines)
│ ├── validation_utils.py # Validation (322 lines)
│ └── presentation_utils.py # Presentation ops (216 lines)
├── slide_layout_templates.json # 31+ template definitions
├── Dockerfile # Docker configuration
└── docker-compose.yml # Docker Compose setup
This project combines:
- ChukMCPServer - MCP framework
- Office-PowerPoint-MCP-Server - PowerPoint tools
See individual repositories for contribution guidelines.
MIT License - See LICENSE file for details.
2.3.0 - FastMCP Edition with full PowerPoint capabilities (Fixed tool schema issues)
For issues:
- ChukMCPServer: https://github.com/chrishayuk/chuk-mcp-server/issues
- PowerPoint features: https://github.com/yourusername/Office-PowerPoint-MCP-Server/issues