Skip to content

MCP Server

Install

dotnet tool install --global Sbroenne.PowerPointMcp.McpServer

This installs the mcp-powerpoint command. Point your MCP client (Claude Desktop, VS Code, GitHub Copilot, etc.) at it over stdio:

{
  "mcpServers": {
    "powerpoint": {
      "command": "mcp-powerpoint"
    }
  }
}

Capabilities

16 tools with 186 operations across 16 domains:

Tool Ops Coverage
presentation 20 create, open, Save As, Save Copy As, close, list, templates, get/set final, document properties, string tags
slide 23 slide lifecycle, backgrounds, sections, comments, import, string tags
shape 47 shape creation, styling, grouping, hyperlinks, placeholders, string tags, get-link-info, update-link, break-link, set-link-auto-update
textframe 20 text content, font formatting, alignment, bullets, auto-size
table 12 tables, cell text, row/column edits, cell fill/border, merge
notes 2 set/get speaker notes
layout 4 set/get slide layout
pagesetup 5 slide size, numbering, footer, date/time
accessibility 3 deterministic audit and reading order
master 10 title/body placeholder fonts, solid + gradient master backgrounds
animation 5 shape effects, transition read/write
image 7 add picture, brightness/contrast, recolor, crop
media 2 add embedded/linked audio or video, get native media info
chart 16 charts, series, titles, legend, data replacement, styles, colors, data tables
smartart 7 SmartArt insertion and node editing
export 3 export to PDF or images

Every domain is exposed as a single action-dispatch tool taking an action parameter — including presentation. Example MCP calls:

  • presentation(action="create", filePath="C:\\Decks\\demo.pptx")
  • presentation(action="apply-template", sessionId="...", templatePath="C:\\Templates\\brand.potx")
  • chart(action="add-chart", session_id="...", slide_index=2, ...)

How it works

ComInterop (STA thread + OLE message filter) → Core (domain command classes) → PowerPointMcp.Service (shared service layer) → McpServer (stdio host, calling the service in-process) and CLI (talks to the same service via a background named-pipe daemon). Each open presentation is a session identified by a sessionId; tools operate on a session until it is closed.

  • Documentation: https://powerpointmcpserver.dev
  • Source: https://github.com/sbroenne/mcp-server-powerpoint

Licensed under the MIT License.