@zyx1121/apple-powerpoint-mcp
v0.2.1
Published
MCP server for Microsoft PowerPoint — create, edit, and export presentations via Claude Code
Downloads
162
Maintainers
Readme
@zyx1121/apple-powerpoint-mcp
MCP server for Microsoft PowerPoint — create, edit, and export presentations via Claude Code.
Install
claude mcp add apple-powerpoint -- npx @zyx1121/apple-powerpoint-mcpPrerequisites
- macOS with Microsoft PowerPoint installed
- Node.js >= 18
- uv (for python-pptx operations)
- First run will prompt for Automation permission (System Settings > Privacy & Security > Automation)
Tools
| Tool | Description |
|------|-------------|
| powerpoint_create | Create a new blank presentation |
| powerpoint_open | Open an existing .pptx file |
| powerpoint_get_info | Get active presentation info (name, path, slide count) |
| powerpoint_list_layouts | List available layouts from the slide master |
| powerpoint_add_slide | Add a slide with a specific layout |
| powerpoint_set_text | Set text of a shape on a slide |
| powerpoint_set_text_levels | Set multi-level text with indent levels (uses python-pptx) |
| powerpoint_format_text | Set font size, bold, italic, color, font name |
| powerpoint_set_bullets | Enable or disable bullet points |
| powerpoint_add_image | Insert an image into a slide (uses python-pptx) |
| powerpoint_delete_slide | Delete a slide by number |
| powerpoint_list_slides | List all slides with titles and shape counts |
| powerpoint_save | Save the presentation |
| powerpoint_export_pdf | Export as PDF |
| powerpoint_preview | Export PDF to /tmp for visual inspection |
Usage
"Create a new presentation" → powerpoint_create
"Open template.pptx" → powerpoint_open { path: "/path/to/template.pptx" }
"Show available layouts" → powerpoint_list_layouts
"Add a title slide" → powerpoint_add_slide { layout_index: 1, title: "Hello" }
"Set body text" → powerpoint_set_text { slide_number: 1, shape_index: 2, text: "Content" }
"Make title bold 36pt" → powerpoint_format_text { slide_number: 1, shape_index: 1, font_size: 36, bold: true }
"Insert an image" → powerpoint_add_image { slide_number: 1, image_path: "/path/to/photo.png" }
"Preview the result" → powerpoint_preview
"Save to desktop" → powerpoint_save { path: "/Users/me/Desktop/deck.pptx" }Template Support
Works with any .pptx template — open the template, use powerpoint_list_layouts to discover available layouts, then powerpoint_add_slide with the desired layout_index.
Limitations
- macOS only (uses AppleScript/JXA via
osascript) - PowerPoint.app must be running
powerpoint_add_imageandpowerpoint_set_text_levelsuse python-pptx (requiresuv) — the file is saved and reopened in PowerPoint after modification- File exports go through PowerPoint's sandbox (
~/Library/Containers/com.microsoft.Powerpoint/Data/) — thepreviewandexport_pdftools handle this automatically
License
MIT
