MCP server for PowerPoint presentation manipulation and analysis
17 tools with comprehensive schemas and descriptions. All tools have explicit input schemas with typed parameters and descriptions. Tool names follow verb_noun convention (pptx_*, get_*, search_*). Descriptions are detailed (100-300 chars typical), explaining WHAT, WHEN, and RETURN. However, output schemas are not formally documented in the visible code, responses are described narratively rather than as structured JSON Schema. Error handling guidance is minimal. Some parameter descriptions could be more prescriptive about constraints (e.g., EMU units, regex patterns). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in the code.
Get recent blog post summaries. Optionally filter by tag (e.g. "mcp", "dotnet", "ai-agents"). Returns titles, URLs, publish dates, and one-paragraph summaries — useful for updating a "What's New" or "Recent Updates" slide in a deck.
Get department-level updates for the weekly board presentation. Returns mock summaries for Engineering, Sales, Support, and Marketing.
Get weekly business KPIs: ARR, MRR, NRR, new logos, churn rate, and notable highlights. Returns mock data suitable for updating a board metrics slide.
Analyze the file size breakdown of a PowerPoint presentation by category. Scans all parts in the PPTX package (ZIP structure) and reports sizes broken down into: slides, images, video/audio, slide masters, slide layouts, and other parts. Each category includes a subtotal and per-part detail (relative path, content type, size in bytes). The root level includes actual file size on disk and total uncompressed part size.
Execute a batch of mixed operations against a presentation in a single open/save cycle. Supports text updates, table cell updates, shape property changes, and image replacements. When atomic is true, the file is restored to its original state if any operation fails.
Read or update data in an existing chart shape on a slide without changing its styling or formatting. Available actions: Read: Return chart type, series names, categories, and data values from an existing chart. Update: Replace series data values (and optionally names and categories) while preserving all chart formatting. Supported chart types: Column, Bar, Line, Pie, Area, Scatter, and their 3D and Doughnut variants. Locate the chart by chartName (case-insensitive) or chartIndex (zero-based). When the slide has only one chart, both may be omitted.
Output schemas not formally documented. Tool descriptions state what is returned (e.g., 'Returns chart type, series names, categories, and data values') but no JSON Schema definitions are visible in the code. LLMs cannot reliably parse unstructured responses or plan downstream tool calls without explicit output schemas.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in code. The [McpServerTool] attribute includes ReadOnly and Idempotent flags, but these are not exposed in the MCP protocol response. Agents cannot distinguish safe (read-only) from destructive operations without parsing descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Compare two PowerPoint presentations and identify differences. Available actions: Full: Run all comparison checks (slides, text, metadata). SlidesOnly: Compare only slide-level changes (added, removed). TextOnly: Compare only text content changes across matching slides. MetadataOnly: Compare only presentation-level metadata fields.
Export a PowerPoint presentation to structured JSON. Available actions: Full: Export everything — metadata, all slides with shapes, tables, charts, images, and notes. SlidesOnly: Export only slide content (shapes, tables, charts, images, notes) without metadata. MetadataOnly: Export only presentation-level metadata (title, author, dates, etc.). SchemaOnly: Return the JSON schema description without reading any file.
Find shapes with no text content in a PowerPoint presentation. Identifies empty text shapes and tables — useful for detecting unfilled template placeholders or cleaning up unused shapes. Only considers shapes that could hold text (Text and Table types). Optionally filter to a single slide with slideNumber.
Manage hyperlinks in a PowerPoint presentation. Available actions: Get: List all hyperlinks in the presentation, optionally filtered to a specific slide (read-only). Add: Add an external hyperlink to a shape on a slide. Update: Change the URL (and optional tooltip) of an existing hyperlink on a shape. Remove: Remove all hyperlinks from a shape.
Manage slide layouts in a PowerPoint presentation. Available actions: Find: Identify unused layouts and masters with estimated space savings (read-only). Remove: Remove unused layouts and orphaned masters, with OpenXML validation before and after. SetType: Set the semantic type attribute (e.g. "title", "obj", "secHead") on a named layout. ModifyPlaceholder: Update placeholder type/index on a layout placeholder by ordinal. AddPlaceholder: Add a placeholder shape to a layout with explicit bounds and placeholder metadata. Natural workflow: Find (diagnostic) → Remove (action) or SetType/ModifyPlaceholder/AddPlaceholder (correction).
Manage media assets in a PowerPoint presentation. Available actions: Analyze: List all media assets (images, video, audio), detect duplicates by SHA256 hash (read-only). Deduplicate: Consolidate identical media, redirect references, and remove orphaned copies. AnalyzeVideo: Extract video/audio metadata (codec, resolution, duration, bitrate) from embedded media (read-only). Natural workflow: Analyze (identify duplicates) → Deduplicate (clean them up). Use AnalyzeVideo for media inspection.
Create slides in a PowerPoint presentation. Available actions: Add: Add a blank slide with an optional layout name. AddFromLayout: Create a slide from a named layout and optionally populate placeholders. Duplicate: Clone an existing slide with optional placeholder overrides. Delete: Delete one or more slides by slide number. DeleteAll: Delete all slides in the presentation.
Read or apply text formatting in a PowerPoint presentation. Available actions: Get: Read all text formatting properties (font, size, bold, italic, underline, color, alignment) from shapes on a slide. Apply: Apply font styling to all text runs in a target shape. Use Get first to inspect current formatting, then Apply to change it.
Change slide order in a PowerPoint presentation. Available actions: Move: Move a single slide to a different position. Reorder: Specify the complete new slide sequence as a 1-based array. For example, to reverse a 3-slide deck, use Reorder with newOrder [3, 2, 1].
Search for text across all slides in a PowerPoint presentation. Finds shapes containing the specified text and returns match details with surrounding context. Searches both text shapes and table cell content. Set useRegex to true to treat searchText as a regular expression pattern. Optionally filter to a single slide with slideNumber.
Perform structural changes on an existing table in a PowerPoint presentation. Available actions: AddRow: Insert a new row at a position (default: end). Optionally provide cell values. DeleteRow: Remove a row by its zero-based index. AddColumn: Insert a new column at a position (default: end). Optionally provide header text. DeleteColumn: Remove a column by its zero-based index. MergeCells: Merge a rectangular range of cells specified by startRow/startCol/endRow/endCol (all zero-based).
Parameter constraints not fully specified. EMU (English Metric Units) values in pptx_manage_layouts (x, y, cx, cy) lack min/max bounds. Regex patterns in pptx_search_text are accepted but not validated with format constraints. LLMs may pass invalid values without guidance.
Error handling guidance absent. No tool descriptions explain what to do if a file is not found, a shape name does not match, or an operation fails. Agents receive errors but no recovery path (e.g., 'Try pptx_search_text to find the correct shape name').
Batch operation atomicity not clearly documented. pptx_batch_execute accepts an 'atomic' flag but does not explain rollback behavior, partial failure handling, or what state the file is left in if a mid-batch operation fails. Agents cannot reason about safety.