name: ppt-mcp description: > Automate Microsoft PowerPoint on Windows via COM interop. Use when creating, reading, or modifying PowerPoint presentations. Supports Slides, Shapes, Text, Charts, Tables, Animations, Transitions, Notes, and Media. Triggers: PowerPoint, presentation, pptx, slides, shapes, animations.
PowerPoint MCP Server Skill
Provides 218 PowerPoint operations via Model Context Protocol. The MCP Server forwards all requests to the shared PptMcp Service, enabling session sharing with CLI. Tools are auto-discovered - this documents quirks, workflows, and gotchas.
Workflow Checklist
| Step | Tool | Action | When |
|---|---|---|---|
| 1. Open file | file | open or create | Always first |
| 2. Create slides | slide | create, duplicate | If needed |
| 3. Add shapes | shape | create, set-text | Add visual elements |
| 4. Add charts | chart | create | Visualize data |
| 5. Format | shape | format, position | After adding content |
| 6. Save & close | file | close with save: true | Always last |
Preconditions
- Windows host with Microsoft PowerPoint installed (2016+)
- Use full Windows paths:
C:\Users\Name\Documents\Report.pptx - PowerPoint files must not be open in another PowerPoint instance
Large Deck Pattern
For larger builds, use a single controlling client with these logical phases:
- Plan
- Execute
- Verify
- Improve
Important:
- Keep this orchestration in the client, not in the MCP server
- Use normal sequential MCP calls
- Do not assume MCP batch execution or subagents are available
Slide Transitions Workflow
Use transition for slide transition effects. Apply transitions to individual slides or across the entire presentation:
1. transition(action: 'set', slideIndex: 1, effect: 'push') → Set transition
2. Add content to slides (shapes, text, charts)
3. transition(action: 'set', slideIndex: 2, effect: 'fade') → Set next slide transition
4. animation(action: 'add', slideIndex: 1, shapeName: 'Title', effect: 'fly-in') → Animate shapes
Note: Transitions apply between slides. Animations apply to individual shapes within a slide.
CRITICAL: Execution Rules (MUST FOLLOW)
Rule 1: NEVER Ask Clarifying Questions
STOP. If you're about to ask "Which file?", "What table?", "Where should I put this?" - DON'T.
| Bad (Asking) | Good (Discovering) |
|---|---|
| "Which PowerPoint file should I use?" | file(list) → use the open session |
| "What shapes are on this slide?" | shape(list) → discover shapes |
| "Which slide has the content?" | slide(list) → check all slides |
| "Should I add an animation?" | YES - add it and apply appropriate timing |
You have tools to answer your own questions. USE THEM.
Rule 2: Always End With a Text Summary
NEVER end your turn with only a tool call. After completing all operations, always provide a brief text message confirming what was done. Silent tool-call-only responses are incomplete.
Rule 3: Design Slides Professionally
Apply consistent formatting across slides:
| Element | Property | Example |
|---|---|---|
| Title | Font size | 28pt+ |
| Body text | Font size | 18-24pt |
| Shape fill | Color | Brand colors |
| Transitions | Duration | 0.5-1.5s |
Workflow:
1. shape create (add visual elements)
2. shape format (apply colors, borders)
3. text set (add content)
Rule 4: Use Slide Layouts
Always use appropriate slide layouts for consistent design:
1. slide(action: 'create', layout: 'Title and Content') → Structured slide
2. shape(action: 'set-text', shapeName: 'Title') → Set title text
3. shape(action: 'set-text', shapeName: 'Content') → Set body content
Why: Slide layouts provide consistent positioning, fonts, and structure.
Rule 5: Session Lifecycle
1. file(action: 'open', path: '...') → sessionId
2. All operations use sessionId
3. file(action: 'close', save: true) → saves and closes
Unclosed sessions leave PowerPoint processes running, locking files.
Rule 6: Slide Masters and Layouts
Slides inherit formatting from slide masters:
Step 1: Choose layout → slide(action: 'create', layout: 'Title Slide')
Step 2: Set content → shape(action: 'set-text', shapeName: 'Title', text: '...')
Step 3: Customize → shape(action: 'format', fillColor: '#0078D4')
Rule 7: Animation Sequence
BEST PRACTICE: Build animations in logical order
1. shape(action: 'create', ...) → Add shapes first
2. animation(action: 'add', effect: 'fade-in', order: 1) → Entrance effect
3. animation(action: 'add', effect: 'emphasis', order: 2) → Emphasis effect
4. transition(action: 'set', effect: 'push') → Slide transition
Why add shapes first:
- Shapes must exist before animations can be applied
- Animation order determines playback sequence
- Transitions are separate from shape animations
Rule 8: Targeted Updates Over Delete-Rebuild
- Prefer: Modifying shape properties directly (text, color, position)
- Avoid: Deleting and recreating entire slides or shapes
Why: Preserves animations, transitions, and layout relationships.
Rule 9: Follow suggestedNextActions
Error responses include actionable hints:
{
"success": false,
"errorMessage": "Shape 'Title' not found on slide 1",
"suggestedNextActions": ["shape(action: 'list', slideIndex: 1)"]
}
Rule 10: Use Consistent Styling Across Slides
When building multi-slide presentations, maintain consistent colors, fonts, and positioning:
1. Use slide layouts for structure consistency
2. Apply matching colors to shapes across slides
3. Keep title positions and sizes uniform
When NOT needed: Single-slide modifications or quick text updates.
Tool Selection Quick Reference
| Task | Tool | Key Action |
|---|---|---|
| Create/open/save presentations | file | open, create, close |
| Create/manage slides | slide | create, duplicate, delete |
| Add/modify shapes | shape | create, format, position |
| Set text content | text | set, get |
| Create charts | chart | create, update |
| Add tables to slides | table | create |
| Set animations | animation | add, remove, reorder |
| Set slide transitions | transition | set, remove |
| Add speaker notes | notes | set, get |
| Visual verification | export | slide-to-image |
Reference Documentation
See references/ for detailed guidance:
- Core execution rules and LLM guidelines
- Slide design principles
- Slide design review checklist
- Generation pipeline
- Agent mode patterns
For design catalog data (archetypes, palettes, grids, styles, density), use the design tool:
design(list-archetypes)/design(get-archetype)— Primary unified archetype surface with curated layout guidance plus learned subtypes and concrete sanitized example details when local reference data is availabledesign(list-palettes)/design(get-palette)— Color palettes with hex valuesdesign(list-layout-grids)/design(get-layout-grid)— Exact positioning coordinatesdesign(list-style-profiles)/design(get-style-profile)— Style configurationsdesign(get-context-model)— Meeting type → density mappingdesign(get-deck-sequence)— Canonical slide sequencesdesign(get-slide-patterns)— Advanced consulting patternsdesign(get-icon-shapes)— Native shape icon catalog
Reference examples are exposed only as sanitized ids/details embedded in design(get-archetype). Raw filenames and source provenance remain in local gitignored reference data and never appear in MCP responses.