Open Source Model Context Protocol server for PowerPoint automation on Windows via pywin32
Server has 11 tools with descriptions and basic schemas, but significant gaps limit production readiness. Tool naming is inconsistent (manage_presentation, slide_snapshot, switch_slide lack verb clarity; evaluate is dangerously generic). Most parameter descriptions exist but lack constraints (enums, ranges, formats). Output schemas are undocumented, LLMs cannot predict return structure. Error handling is minimal; no recovery guidance. The evaluate tool exposes arbitrary code execution without safeguards. Descriptions average ~150 chars (within baseline) but lack actionable constraints. No tool annotations (readOnlyHint, destructiveHint). Composition is reasonable but several tools combine multiple concerns.
Add animation to a shape in PowerPoint. Adds animations to shapes with support for paragraph-level text animation.
Add a slide with a specific template layout at the specified position. Properly imports the template design to preserve all styling (backgrounds, fonts, colors, etc.).
Add speaker notes to a specific slide in the active PowerPoint presentation. Adds or replaces the speaker notes content for the specified slide with the provided text. Speaker notes are visible in presenter view and when printing notes pages, but not during the actual slideshow.
Analyze PowerPoint template layouts with comprehensive placeholder analysis and screenshots. Creates a hidden temporary presentation to analyze template layouts without interfering with the user's active presentation. Generates screenshots with green bounding boxes and yellow ID labels for all placeholders, and provides detailed placeholder analysis. Screenshots are saved to ~/.powerpoint-mcp/ directory (same as slide_snapshot tool) and can be viewed using the Read tool for visual reference.
Execute arbitrary Python code in PowerPoint automation context. Enables free-form PowerPoint automation beyond predefined tools, including: - Complex geometric calculations (circular flowcharts, grid layouts) - Advanced shape manipulations (rotations, custom positioning) - Data extraction using custom logic - Multi-shape operations with mathematical relationships - Access to all PowerPoint MCP tools via the 'skills' object
evaluate tool allows arbitrary Python code execution without sandboxing, permission checks, or confirmation. Violates pattern:confirmation-request and pattern:permission-gate. High security risk.
No output schemas documented for any tool. LLMs cannot predict return structure, forcing them to parse unstructured responses. Violates pattern:response-shaper.
manage_presentation combines 5 distinct actions (open, close, create, save, save_as) in one tool. Violates pattern:tool (single responsibility). Should split into create_presentation, open_presentation, close_presentation, save_presentation, save_presentation_as.
Parameters lack enums and constraints. 'action' in manage_presentation accepts free-form strings; 'effect' in add_animation lists options in description but no enum constraint. Violates pattern:constrained-input.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Discover and list available PowerPoint templates. Scans common template directories (Personal, User, System) to find available PowerPoint template files (.potx, .potm, .pot). Returns a clean list of template names that can be used with the analyze_template tool. The tool searches in: - Personal Templates: Custom Office Templates folder - User Templates: AppData/Roaming/Microsoft/Templates - System Templates: Program Files/Microsoft Office/Templates
Comprehensive PowerPoint presentation management tool. This tool works on Windows only. Use Windows path format with double backslashes. Actions: - "open": Opens an existing presentation (requires file_path) - "close": Closes a presentation (optional presentation_name, closes active if not specified) - "create": Creates new presentation (optional file_path for immediate save, optional template_path) - "save": Saves current presentation at its current location - "save_as": Saves current presentation to new location (requires save_path)
Manage slides in the active PowerPoint presentation. Perform operations on slides including deletion, duplication, and reordering.
Populate a placeholder on a slide with content. Locates a placeholder by name and populates it with the provided content, supporting text, images, and other content types.
Capture comprehensive context of a PowerPoint slide with optional screenshot. This tool provides detailed information about the current (or specified) slide including all objects, text content with HTML formatting, tables, charts, and layout details. Includes optional screenshot functionality with green bounding boxes and yellow ID labels overlaid on all objects. The screenshot is saved to a file and the LLM is informed of the location for visual reference.
Switch to a specific slide in the active PowerPoint presentation. Changes the current active slide to the specified slide number, allowing you to navigate through the presentation programmatically.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints. Violates current MCP spec alignment.