PowerPoint MCP
by rit3sh-x
README.md
# PowerPoint MCP
**Full-featured PowerPoint MCP server with cross-platform support (Windows native, macOS designed).**
Control PowerPoint programmatically via the Model Context Protocol — 153 tools covering slides, shapes, text, formatting, charts, tables, animations, and more.
[](https://www.python.org/)
[](https://github.com)
[](https://github.com/jlowin/fastmcp)
---
## Installation
### Prerequisites
**Windows & macOS:**
- Python 3.12 or 3.13
- PowerPoint 2016+ (part of Microsoft Office)
### Install
```bash
# Clone
git clone https://github.com/rit3sh-x/powerpoint-mcp.git
cd powerpoint-mcp
# Install dependencies
uv sync
```
---
## Quick Start
### 1. Configure MCP Client
Add to your MCP client config (e.g., Claude Desktop `claude_desktop_config.json`):
```json
{
"mcpServers": {
"powerpoint": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\yourname\\path\\to\\powerpoint-mcp",
"run",
"powerpoint"
]
}
}
}
```
**macOS:**
```json
{
"mcpServers": {
"powerpoint": {
"command": "uv",
"args": [
"--directory",
"/Users/yourname/path/to/powerpoint-mcp",
"run",
"powerpoint"
]
}
}
}
```
### 2. Use in Claude
```
Create a 5-slide presentation about renewable energy with:
- Title slide
- 3 content slides with icons
- Closing slide
Export as PDF
```
---
## Architecture
### Interface-Based Design
**Single tool layer, two platform implementations:**
```mermaid
flowchart TB
Tools["153 MCP Tools<br/>(Cross-Platform)"]
Backend["Backend Protocol<br/>(Abstract Interface)"]
Win["Windows Backend<br/>(pywin32)"]
Mac["macOS Backend<br/>(appscript)"]
Tools --> Backend
Backend --> Win
Backend --> Mac
classDef tools fill:#2563eb,color:#fff,stroke:#1d4ed8,stroke-width:2px;
classDef core fill:#7c3aed,color:#fff,stroke:#6d28d9,stroke-width:2px;
classDef impl fill:#059669,color:#fff,stroke:#047857,stroke-width:2px;
class Tools tools;
class Backend core;
class Win,Mac impl;
```
---
## Environment Variables
| Variable | Values | Default | Purpose |
|---|---|---|---|
| `AUTO_DISMISS_DIALOG` | `true`, `false` | `false` | Auto-dismiss PowerPoint dialogs |