Skip to content

Changelog

[0.3.1] - 2026-10-07

Patch Changes

  • #104 bf9a6e5 Thanks @sbroenne! - Standalone downloads work with PowerPoint again (#103): the MCP Server and CLI .exe downloads, and the npm packages and Claude Desktop bundle that use them, failed every PowerPoint action with "Built-in COM has been disabled via a feature switch". They are no longer trimmed, so creating and opening presentations works again. The downloads are larger as a result. The NuGet .NET tools were not affected.

[0.3.0] - 2026-10-02

Minor Changes

  • #99 9affc57 Thanks @sbroenne! - Add npm launchers and native Windows x64/ARM64 runtime packages for the MCP server and pptcli. Agent plugins and the Claude Desktop bundle now launch the public npm packages through npx, so those installation paths require Node.js 18 or later.

Modernize MCP responses with structured content, generated output schemas, stricter pre-dispatch argument validation, and cancellation-aware calls while retaining text JSON compatibility.

Harden the metadata-only MCPB build, add native x64 and ARM64 VS Code packages, and improve extension startup diagnostics for Windows and desktop PowerPoint prerequisites.

[0.2.1] - 2026-09-28

Minor Changes

  • #88 3cbf441 Thanks @trsdn! - Add editable WordArt creation and independent 3D shape rotation controls to both the MCP server and CLI. 3D rotations can update individual axes without changing the shape's existing 2D rotation.

  • #90 dc67ab6 Thanks @trsdn! - Add customshow tool for named custom slide shows: list, create, and delete curated, ordered subsets of a presentation's slides, so one deck can be reused for different audiences without duplicating slides.

  • #82 8835dc1 Thanks @trsdn! - Add textframe find-text and replace-text actions to MCP and CLI for literal matching in one selected shape. Find reports 1-based match positions; replace supports deletion, case and whole-word options, preserves character formatting outside matches, and never searches inserted text again.

  • #83 723bb2f Thanks @trsdn! - Add native shape alignment and distribution to MCP and CLI. Align six directions or distribute horizontal/vertical edge gaps against the selection or slide, with selection validation before movement and no resizing or regrouping.

  • #89 ba5af55 Thanks @trsdn! - Attached connectors (shape(action: "add-attached-connector", ...)): adds a connector shape whose endpoints stay glued to connection sites on two existing shapes, so the connection is preserved when either shape is moved. Previously, add-connector only supported free-floating connectors between fixed coordinates.

  • #87 ffeb999 Thanks @trsdn! - Add shape copy-formatting to apply one existing shape's appearance to another without replacing the target's content or geometry.

  • #91 1c85214 Thanks @trsdn! - Add shape duplicate to create an independently editable copy of a shape on the same slide, and shape copy-to-slide to copy a shape to another slide in the same presentation via PowerPoint's native copy/paste.

  • #92 5864aa8 Thanks @trsdn! - Add the shape merge action for PowerPoint boolean drawing operations: union, combine, intersect, subtract, and fragment.

  • #84 1f60e88 Thanks @trsdn! - Add slide visibility controls for excluding slides from slide-show playback and showing or hiding inherited master shapes.

  • #85 bb0f9a6 Thanks @trsdn! - Read major and minor theme fonts for any slide master with master get-theme-fonts in the CLI or the matching MCP action. Results preserve the Latin, complex-script, and East Asian language slots so new text can follow the selected template's intended typography.

[0.2.0] - 2026-09-11

Minor Changes

  • #77 8e5d253 Thanks @trsdn! - Add four editable slide composition recipes to the shared agent guidance, with content limits and reproducible PowerPoint-rendered examples in 16:9 and 4:3.

  • #76 51d9801 Thanks @trsdn! - Read the twelve named theme colors for any slide master with master get-theme-colors in the CLI or the matching MCP action. Palette colors are returned as RGB hex strings so new shapes and charts can match the selected template without guessing its accent colors.

[0.1.8] - 2026-09-11

Patch Changes

  • #75 090c8b1 Thanks @sbroenne! - Reliable failed startup cleanup (#72): PowerPoint processes created by a timed-out presentation open are now terminated using their verified process identity instead of being left running.

[0.1.6] - 2026-08-27

Patch Changes

  • #58 c877caf Thanks @sbroenne! - Add generated media MCP and CLI commands for embedded, link-only, or linked-and-saved audio/video insertion and native PowerPoint media metadata read-back. Generated Core validation failures now propagate as failed service responses while preserving their original structured result payload for service clients.

  • #53 59efa7b Thanks @sbroenne! - Add save-as and save-copy-as presentation operations to the MCP server and CLI. Save As moves the active session to the new file only after PowerPoint succeeds, while Save Copy As preserves the active file and session path. Both operations validate formats, paths, and explicit overwrite intent.

  • #52 3ae9291 Thanks @sbroenne! - Add typed get-final and set-final presentation operations to the MCP server and CLI, with persistent round-trip behavior and clear guidance that Mark as Final is advisory rather than security.

  • #57 fa11f78 Thanks @sbroenne! - Add linked-picture insertion and shape-level link inspection, refresh, automatic-update where supported by PowerPoint, and break-link operations while preserving embedded pictures as the default.

  • #54 d046fdf Thanks @sbroenne! - Add case-insensitive string tags to presentations, slides, and shapes through matching MCP and CLI set-tag, get-tag, list-tags, and delete-tag actions.

  • #56 a66c481 Thanks @sbroenne! - Add chart style, color style, and data-table visibility controls to both the MCP server and CLI, with paired read operations so automation can verify every visual change.

  • #51 fe66372 Thanks @sbroenne! - PowerPoint MCP now rejects unknown or mis-cased CLI and MCP arguments, saves presentations when their sessions close, safely owns daemon cleanup, and ships verified Agent Skills and plugins.

[0.1.5] - 2026-08-25

Patch Changes

  • #49 262f1be Thanks @sbroenne! - Add native PDF delivery, presentation page setup and footer controls, legacy slide comments and slide import, native placeholder editing, and deterministic accessibility audits with reading-order management.

[0.1.4] - 2026-07-28

Patch Changes

  • #42 ec2f011 Thanks @sbroenne! - The MCP Server and CLI standalone .exe release downloads are now trimmed, reducing their download size by roughly 29% (CLI: ~185MB → ~131MB). Also fixed an intermittent failure in chart creation/data operations that could occur immediately after adding or replacing chart data.

[0.1.1] - 2026-07-22

Minor Changes

  • #32 778240d Thanks @sbroenne! - Aligned mcp-server-powerpoint's architecture and tooling with mcp-server-excel, the authoritative template for this family of projects:

  • Single MCP dispatch tool: replaced the 12 separate presentation-related MCP tools with one presentation tool taking an action parameter, matching Excel's dispatch pattern. Added matching CLI session-management commands so the CLI and MCP Server remain equal, parity-checked entry points.

  • COM object cleanup: every dynamic COM object obtained inside a Core Commands method is now released in a finally block once no longer needed, instead of relying solely on the top-level session Application/Presentation cleanup. This closes a class of potential COM object leaks under heavy or long-running use.
  • Crash-safety process tracking: PowerPoint process IDs are now tracked in a process-wide registry with an AppDomain.ProcessExit handler that force-kills any still-running POWERPNT.exe if the host process itself terminates uncleanly (crash, forced kill, etc.), closing a gap versus Excel's existing crash-safety net.
  • Ported audit scripts from mcp-server-excel: check-com-leaks.ps1, check-success-flag.ps1, check-dynamic-casts.ps1, and a new check-core-interface-completeness.ps1 tailored to this project's generate-enums-from-interface architecture. All are wired into the pre-commit hook.
  • Corrected stale documentation (tool/operation/domain counts) across the README, docs site, and skills files.

No behavior change for existing MCP tool calls beyond the dispatch-tool consolidation; CLI commands are unaffected.

Patch Changes

  • #26 ddb6808 Thanks @sbroenne! - Aligned the project's public-facing docs with the leading sister project mcp-server-excel: ported the daily GitHub star-history chart. Added scripts/Update-StarHistory.ps1 (generates a theme-aware SVG from live stargazer data) and wired it into the deploy-gh-pages workflow with a daily schedule, then added a "GitHub Star History" section to both the README and the docs-site homepage. The generated SVG is produced in CI and gitignored, mirroring Excel's setup. Repository description, homepage URL, and topics were also updated to match Excel's format.

  • #33 9663e7a Thanks @sbroenne! - Fixed stale tool/operation counts (#33): the docs advertised "132 operations" even though the image tool gained set-crop/get-crop a while back, bringing the real total to 134 operations across 13 tools. Fixed across the README, MCP Server README, mcpb README, and the public docs site.

Also replaced the old path-filtered build workflows with a single CI Gate workflow that runs on every pull request, and added a documentation count-check to the pre-commit hook so this kind of drift is caught automatically going forward.

  • #35 3f72dae Thanks @sbroenne! - Critical repo review remediation — a pass comparing this repo against mcp-server-excel (the architectural template) surfaced several gaps, now fixed:

  • Added get-font-size, get-bold, and get-font-color operations to the textframe tool (previously only the set- variants existed), bringing the total to 137 operations across 13 tools.

  • Fixed several COM reference leaks in the Chart/Shape/Image/Animation/ Presentation/Slide commands — every manually-acquired COM object is now released via ComUtilities.Release in a finally block.
  • Fixed ComInterop lifecycle bugs and removed dead code left over from the original Excel-to-PowerPoint port (ServiceRegistryGenerator's unused GetShortAlias helper and stray excelcli string references).
  • Reverted an in-progress window-hiding change that had broken embedded-chart OLE activation — PowerPoint windows remain visible, matching documented behavior.
  • Aligned CI workflows, Directory.Build.*, Packages.props, manifest, .gitattributes, .editorconfig, SECURITY.md, PRIVACY.md, dependabot config, and issue templates with the mcp-server-excel template repo.

  • #29 8a268ca Thanks @sbroenne! - Improved SEO for the public docs site (powerpointmcpserver.dev): added a branded 1200x630 Open Graph/Twitter card image, richer SoftwareApplication structured data (image, MIT license, sameAs links to GitHub and NuGet), a WebSite+Person JSON-LD graph, and per-page BreadcrumbList structured data for interior pages. Also sped up scripts/pre-commit.ps1 for docs-only commits (including gh-pages/ website changes) by fully skipping the Release build and Core test gates when no compiled code changed.

[0.1.0] - 2026-07-11

Minor Changes

  • #23 5b5b21a Thanks @sbroenne! - Add chart(action: "replace-chart-data", ...) to wholesale-replace an existing chart's categories, series names, and values in a single call, including changing the category count. series_values is a flat, series-major array (all values for the first series, then the second, etc.), avoiding the previous delete-shape-and-recreate workaround for editing chart data in place.

  • #19 e8b989d Thanks @sbroenne! - Add document properties management to the Presentation domain: set_document_property / get_document_property for built-in metadata (Title, Subject, Author, Keywords, Comments, Category, Manager, Company), and set_custom_property / get_custom_property / remove_custom_property for user-defined custom document properties.

  • #22 4db42d8 Thanks @sbroenne! - Add gradient background support to the slide and master domains: set-gradient-background / get-gradient-background set or read a two-color gradient fill (style is an MsoGradientStyle name — msoGradientHorizontal, msoGradientVertical, msoGradientDiagonalUp, msoGradientDiagonalDown, msoGradientFromCorner, msoGradientFromTitle, msoGradientFromCenter — plus a 1-4 variant). slide's version overrides a single slide's background (same override semantics as the existing set-background-color); master's version sets the gradient for every slide that inherits from the master.

  • #17 380b289 Thanks @sbroenne! - Add hyperlink management to the Shape domain: set-hyperlink, get-hyperlink, and remove-hyperlink actions let callers attach, inspect, and clear mouse-click hyperlinks (with optional screen tip text) on any shape.

  • #21 4c8f7c4 Thanks @sbroenne! - Add picture-effect actions to the image domain: set-brightness-contrast/get-brightness-contrast (adjust brightness and contrast, each a float in [0, 1]) and set-recolor/get-recolor (recolor a picture to grayscale, black-and-white, watermark, or automatic/no recolor via msoPictureAutomatic, msoPictureGrayscale, msoPictureBlackAndWhite, msoPictureWatermark).

  • #20 845737e Thanks @sbroenne! - Add parameterized shape effects: drop shadow (color/transparency/blur/offset), glow, reflection, soft edge, and 3D bevel. Extends the existing set-shadow/get-shadow actions with optional formatting parameters (backward compatible) and adds new set-glow/get-glow, set-reflection/get-reflection, set-soft-edge/get-soft-edge, and set-bevel/get-bevel actions to the shape MCP tool.

  • #15 41dd351 Thanks @sbroenne! - Added a new smartart tool for creating and editing SmartArt diagrams: add-smart-art (from any built-in gallery layout, e.g. "Basic Process", "Organization Chart"), add-node, add-child-node, set-node-text, get-node-text, delete-node, and get-node-count.

  • #24 a2fc594 Thanks @sbroenne! - Add textframe(action: "set-autosize"/"get-autosize", ...) to control a shape's text-frame auto-fit behavior (ppAutoSizeNone, ppAutoSizeShapeToFitText, ppAutoSizeTextToFitShape), matching PowerPoint's "Resize shape to fit text" / "Shrink text on overflow" options.

Patch Changes

  • #16 fbaf960 Thanks @sbroenne! - Add a short "Also automating spreadsheets?" tip right after the README's hero section, linking to Excel MCP Server, mirroring the same repositioning done on the docs homepage.

  • #12 fc05b46 Thanks @sbroenne! - Restructured the documentation site homepage to match the sister mcp-server-excel project's structure: removed the redundant "Quick install" card grid from the homepage (installation already has its own dedicated page), split "How it works" out into a new architecture.md page, and split "Related projects" out into a new related-projects.md page. Also fixed the last remaining stale "31 tools across 10 domains" references in installation.md, mcp-server.md, and mcpb/README.md to the current 18-tool / ~98-operation / 12-domain count.

  • #25 0f4fcd8 Thanks @sbroenne! - Release automation: auto-merge the changelog PR. The post-release step that opens the chore/changelog-vX PR now also merges it (queued auto-merge, falling back to an immediate squash merge). Previously the PR was only created and left open until a maintainer merged it by hand, which could leave releases with a stale/missing CHANGELOG on main.

  • #11 87e5d42 Thanks @sbroenne! - Fixed the "What You Can Do" section of the root README and rewrote gh-pages/docs/features.md and src/PowerPointMcp.McpServer/README.md, which all still described the old 31-tool/10-domain architecture. They now correctly document the current 18-tool, ~98-operation, 12-domain surface, including the previously undocumented Template, Master, and Animation domains.

  • #10 9b0b70e Thanks @sbroenne! - Fixed the root README: corrected the "How It Works" diagram to reflect the actual shared PowerPointMcp Service + Core Commands architecture (it previously omitted the service layer), and removed a broken/non-existent "HeyGen MCP Server" link from Related Projects.

  • #27 794366c Thanks @sbroenne! - Fix the release workflow's "Update Extension Version" step failing with "Version not changed" whenever the release version coincidentally matches the VS Code extension's fixed baseline version (0.1.0, never committed back to the repo since the bump is ephemeral per-run). Adds --allow-same-version to the npm version call.

  • #14 94a7cf0 Thanks @sbroenne! - Move the "Also automating spreadsheets?" sister-project tip on the docs homepage to appear directly under the hero callout instead of at the bottom of the page.

[0.0.2] - 2026-07-09

Patch Changes

  • #7 4bd5377 Thanks @sbroenne! - Replaced manual CHANGELOG.md editing and the fragile awk/sed-based release-notes extraction with changesets: contributors now add a small .changeset/*.md fragment describing their change, CI enforces one is present (or the skip-changelog label), and scripts/Build-Changelog.ps1 compiles pending fragments into CHANGELOG.md and the GitHub Release body at release time. See docs/RELEASE-STRATEGY.md for the full process.

  • #7 4bd5377 Thanks @sbroenne! - Added PowerPoint-branded icon assets for the VS Code extension, the MCPB bundle, and the gh-pages documentation site, replacing the generic/missing icons used previously.

All notable changes to the PowerPoint MCP Server are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.0.1 - 2026-07-09

Added

  • MCP server with 31 tools across 10 domains: Presentation (create, open, save, close, list sessions), Slide (add, count, delete), Shape (rectangle, text box, count, delete, position, size), Text (set/get text, font size, bold, font color), Table (add, set/get cell text), Notes (set/get), Layout (set/get), Image (add picture), Chart (add, get data), and Export (slide / all slides to image) for visual verification.
  • Live PowerPoint COM automation via an STA thread with an OLE message filter; one long-lived session per open presentation, addressed by sessionId.
  • Resilient shutdown: sessions are disposed on host shutdown with exponential backoff so no POWERPNT.exe process is orphaned.
  • Non-blocking create_presentation: creates and keeps the deck open, returning a sessionId immediately (~2s instead of ~90-210s).
  • Distribution: NuGet .NET tools (Sbroenne.PowerPointMcp.McpServer → mcp-powerpoint, Sbroenne.PowerPointMcp.CLI → pptcli), MCP Registry manifest, and a Claude Desktop MCPB bundle.
  • Agent skill pack and documentation site at powerpointmcpserver.dev.