
PowerPoint (pptx-viewer) MCP Setup for Claude Code, Cursor and Other Apps
Lets Claude, Cursor and other assistants read and edit PowerPoint .pptx files on your computer.
This community server, part of the ooxml project by ChristopherVR, gives your assistant 74 tools for working on decks: add and reorder slides, replace text, edit charts and tables, and apply themes. It runs locally with no account or API key, and it only touches .pptx and .ppt files inside one folder. Edits update the original file unless the assistant saves to a different path, so work on a copy of anything you cannot lose.
Good for
- People who want Claude to update or clean up existing PowerPoint decks
- Teams that fill decks from templates with {{placeholder}} tokens
- Analysts who want charts and tables edited without opening PowerPoint
- Developers building deck automation who also want the same functions as a library
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install ooxml MCP
Claude Code
- 1
Copy this prompt.
Add the ooxml MCP server to Claude Code. Run this command: claude mcp add ooxml -- npx -y pptx-viewer-mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Built from the package data we hold. Not yet tested by us.
Tools
Shows what is on one slide
Returns a slide's layout, speaker notes and every element on it, so the assistant can see what to change.
Try: “What is on slide 3 of quarterly.pptx?”
Files ·
get_slideSearches every slide for a word or phrase
Looks through all slides and returns where the text appears.
Try: “Find every slide in deck.pptx that mentions pricing.”
Files ·
find_textReplaces text across the whole deck
Finds a phrase on all slides and swaps it for another, with an option to match case. It saves the file and reports how many places changed.
Try: “Change 'Draft' to 'Final' everywhere in deck.pptx.”
Write ·
replace_textTurns the deck into Markdown text
Converts the presentation into Markdown so the assistant can read or summarize it. It can also write extracted images to an output folder.
Try: “Convert launch.pptx to Markdown and summarize it.”
Write ·
convert_to_markdownAdds a blank slide
Inserts a new empty slide, after a slide you choose.
Try: “Add a blank slide after slide 2.”
Write ·
add_slideRemoves slides
Deletes one or more slides by their position in the deck.
Try: “Delete slides 5 and 6 from deck.pptx.”
Delete ·
delete_slidesChanges the slide order
Moves slides into a new order from a list of positions.
Try: “Move the last slide to the front.”
Write ·
reorder_slidesCopies a slide
Makes a copy of a slide with fresh element IDs.
Try: “Duplicate slide 4.”
Write ·
duplicate_slideChanges a slide's background, notes or visibility
Sets the background, speaker notes or whether a slide is hidden.
Try: “Hide slide 7 and add speaker notes to slide 2.”
Write ·
update_slide_propertiesSets or clears a slide transition
Adds, changes or removes the transition effect between slides.
Try: “Add a fade transition to every slide.”
Write ·
set_slide_transitionChanges the slide size
Changes the canvas dimensions of the whole presentation.
Try: “Switch deck.pptx from 4:3 to 16:9.”
Write ·
set_canvas_sizeAdds text, a shape, image, table or connector
Places a new element on a slide at a position you choose.
Try: “Add a text box titled 'Next steps' to slide 8.”
Write ·
add_elementMoves, resizes or edits an element
Changes an element's position, size, text or style.
Try: “Make the title on slide 1 bigger and centered.”
Write ·
update_elementRenames an element
Changes the name shown in PowerPoint's selection pane.
Try: “Rename the chart on slide 3 to 'Revenue chart'.”
Write ·
rename_elementRemoves elements from a slide
Deletes one or more elements by their IDs.
Try: “Delete the logo image from slide 2.”
Delete ·
delete_elementsAligns elements or changes layering
Aligns selected elements or moves them forward or backward in the stack.
Try: “Align the three boxes on slide 5 to the left.”
Write ·
arrange_elementsCopies an element
Duplicates an element on the same slide or onto another.
Try: “Copy the logo from slide 1 onto slide 9.”
Write ·
clone_elementSets an entrance or exit animation
Adds an animation to an element so it appears or leaves in a chosen style.
Try: “Make the bullet list on slide 4 fade in.”
Write ·
set_element_animationGroups elements together
Combines several elements into one group so they move together.
Try: “Group the icon and caption on slide 6.”
Write ·
group_elementsSplits a group back into parts
Turns a group into its separate elements again.
Try: “Ungroup the diagram on slide 3.”
Write ·
ungroup_elementsChanges many elements at once
Applies the same properties to several elements in one go.
Try: “Set the font size to 18 on every text box on slide 5.”
Write ·
batch_update_elementsEdits text inside table cells
Changes the text in chosen cells of a table.
Try: “Fix the Q3 figure in the table on slide 7.”
Write ·
update_table_cellsAdds or removes table rows and columns
Inserts or deletes rows and columns in a table. Deleting removes their content.
Try: “Add a row for totals at the bottom of the table.”
Delete ·
manage_table_structureRestyles part of a table style
Changes the fill, text or borders of one section of an existing table style, such as the header row or banding.
Try: “Give the header row of the table style a dark blue fill.”
Write ·
set_table_style_sectionCreates a new table style
Makes a table style, optionally copied from an existing one, and can set it as the default.
Try: “Create a table style based on the current one with green banding.”
Write ·
create_table_styleRemoves a table style
Deletes a table style from the presentation.
Try: “Delete the unused 'Old Grid' table style.”
Delete ·
delete_table_styleApplies a table style to a table
Assigns a style to a table and turns row or column emphasis on or off.
Try: “Apply the new style to the table on slide 7 with a header row.”
Write ·
assign_table_styleChanges fill, outline, shadow or effects
Edits an element's fill, stroke, shadow, glow or image effects.
Try: “Add a soft shadow to the cards on slide 2.”
Write ·
update_element_styleChecks the deck for accessibility problems
Audits the presentation and lists accessibility issues.
Try: “Run an accessibility check on deck.pptx.”
Files ·
run_accessibility_checkLists, adds, deletes or resolves comments
Handles slide comments: list them, add one, delete one or mark one resolved.
Try: “List all comments in review.pptx and resolve the ones from Sam.”
Delete ·
manage_commentsAdds a new chart to a slide
Creates a chart element on a slide.
Try: “Add a bar chart of monthly sales to slide 4.”
Write ·
create_chartChanges a chart's type, title, legend or axes
Updates the chart type, title, legend, data labels, axis or categories.
Try: “Change the chart on slide 4 to a line chart.”
Write ·
update_chartAdds a data series to a chart
Adds another series of values to an existing chart.
Try: “Add a 2026 series to the revenue chart.”
Write ·
add_chart_seriesRemoves a data series from a chart
Deletes a series from a chart by its position.
Try: “Remove the second series from the chart.”
Delete ·
remove_chart_seriesEdits the numbers in a chart series
Replaces the values of one series in a chart.
Try: “Update the Q4 values in the revenue chart.”
Write ·
update_chart_series_dataStyles one point in a chart
Sets fill, line, explosion or marker for a single data point.
Try: “Color the highest bar in the chart red.”
Write ·
format_chart_data_pointCustomizes one data label
Overrides a single data label's visibility, position, text, fill and font.
Try: “Show a custom label on the last point.”
Write ·
format_chart_data_labelAdds markers, trendlines or error bars
Sets a series marker, trendline or error bars.
Try: “Add a trendline to the sales series.”
Write ·
format_chart_seriesAdds or removes drop lines and high-low lines
Turns drop lines or high-low lines on or off for line, stock and combo charts.
Try: “Add high-low lines to the stock chart.”
Write ·
set_chart_helper_lineRemaps theme colors for one chart
Sets or removes a theme colour-map override so a chart uses different theme colour roles.
Try: “Remap the colors of the chart on slide 6.”
Write ·
set_chart_color_map_overrideLists shapes drawn on top of a chart
Returns the text boxes and connectors placed in a chart's drawing layer.
Try: “List the annotations on the chart on slide 4.”
Files ·
chart_user_shape_listAdds a text box or line on top of a chart
Adds a text box or connector to a chart's drawing layer.
Try: “Add a callout over the peak of the chart.”
Write ·
chart_user_shape_addMoves or restyles a chart annotation
Moves, resizes or restyles one drawn shape on a chart.
Try: “Move the callout on the chart to the right.”
Write ·
chart_user_shape_updateRemoves a chart annotation
Deletes one drawn shape from a chart by its position.
Try: “Remove the first annotation from the chart.”
Delete ·
chart_user_shape_removeShows theme colors, fonts and presets
Returns the current theme's colors and fonts and the built-in presets you can apply.
Try: “What fonts and colors does this deck use?”
Files ·
get_theme_infoApplies a built-in theme
Switches the presentation to one of the built-in theme presets.
Try: “Apply a dark theme preset to deck.pptx.”
Write ·
apply_theme_presetChanges theme colors
Updates individual theme colors such as accents, dark and light, and link colors.
Try: “Set accent 1 to our brand blue.”
Write ·
update_theme_colorsChanges theme fonts
Sets the heading and body fonts for the whole theme.
Try: “Use Georgia for headings and Calibri for body text.”
Write ·
update_theme_fontsReads and edits SmartArt diagrams
Lists SmartArt nodes, adds, removes, reorders, promotes or demotes them, or turns the diagram into plain shapes.
Try: “Add a step to the process diagram on slide 5.”
Delete ·
manage_smart_artFinds {{placeholder}} tokens
Lists every {{placeholder}} token in the presentation.
Try: “What placeholders does template.pptx have?”
Files ·
find_placeholdersFills in {{placeholder}} tokens
Replaces each {{placeholder}} with the value you give, like a mail merge.
Try: “Fill the template with this client's name and date.”
Write ·
apply_templateShows title, author and properties
Returns the document's title, author, keywords and custom properties.
Try: “Who is listed as author of deck.pptx?”
Files ·
get_metadataChanges title, author and properties
Updates the title, author, company and custom properties.
Try: “Set the author to Dana and the company to Acme.”
Write ·
update_metadataOrganizes slides into sections
Lists, adds, removes and reorders sections, or moves slides between them.
Try: “Put slides 1 to 4 in a section called Intro.”
Delete ·
manage_sectionsManages custom slide shows
Lists, creates, renames, copies or deletes custom shows, and edits which slides they contain.
Try: “Create a custom show with slides 1, 3 and 5.”
Delete ·
manage_custom_showsExports slides as SVG
Returns all or chosen slides as SVG text.
Try: “Export slides 1 to 3 as SVG.”
Files ·
export_to_svgExports one slide as SVG
Returns a single slide as SVG text.
Try: “Export slide 2 as SVG.”
Files ·
export_slide_svgExports the deck to a portable JSON format
Returns the whole presentation in the project's JSON document format, with images embedded.
Try: “Export deck.pptx to JSON.”
Files ·
export_to_jsonReplaces the deck from a JSON document
Replaces the presentation's content with a deck imported from the project's JSON format.
Try: “Import this JSON document into deck.pptx.”
Write ·
import_from_jsonLists, sets or removes links on elements
Handles hyperlinks and actions attached to elements.
Try: “Link the button on slide 9 to our pricing page.”
Delete ·
manage_hyperlinksChanges a shape's outline
Swaps a shape's geometry for a preset or a custom SVG path.
Try: “Turn the rectangle on slide 3 into a rounded shape.”
Write ·
replace_geometryLocks or unlocks an element
Prevents or allows moving, resizing, rotating, selecting and editing an element.
Try: “Lock the logo on slide 1 so it cannot be moved.”
Write ·
set_element_lockShows slideshow settings
Returns the show type, looping, advance mode and slide range.
Try: “How is deck.pptx set up to play?”
Files ·
get_presentation_propertiesChanges slideshow settings
Updates the show type, looping, advance mode and pen color.
Try: “Make the show loop until Esc is pressed.”
Write ·
update_presentation_propertiesLists available slide layouts
Returns the layouts offered by the deck's slide masters.
Try: “Which layouts can I use in deck.pptx?”
Files ·
get_layoutsApplies a layout to a slide
Switches a slide to a chosen layout.
Try: “Change slide 3 to the Title and Content layout.”
Write ·
apply_layoutShows what is inside an embedded object
Inspects an embedded Excel, Word or PowerPoint object and returns its cells, paragraphs or slide summaries.
Try: “What is in the embedded spreadsheet on slide 6?”
Files ·
ole_get_contentEdits a cell in an embedded Excel sheet
Changes one cell in the first worksheet of an embedded Excel object.
Try: “Set cell B2 of the embedded sheet to 1200.”
Write ·
ole_set_sheet_cellEdits a paragraph in an embedded Word file
Replaces one paragraph's text in an embedded Word object.
Try: “Rewrite paragraph 2 of the embedded document.”
Write ·
ole_set_document_paragraphEdits text in an embedded PowerPoint
Changes one text shape on one slide of a deck embedded inside the slide. Read its contents first to find the element IDs.
Try: “Change the title on slide 1 of the embedded deck.”
Write ·
ole_set_deck_slide_titleSwaps the file inside an embedded object
Replaces the whole contents of an embedded object with another file you supply, for any kind of embedded object. The file is passed in as a base64 data URL.
Try: “Replace the embedded spreadsheet on slide 3 with the updated budget file.”
Write ·
ole_replace_fileRenames an embedded object
Changes an embedded object's name and, for objects shown as icons, the icon caption.
Try: “Rename the embedded spreadsheet to 'Budget'.”
Write ·
ole_set_object_nameChecks the file for structural errors
Validates the file's content types, relationships and XML and reports problems.
Try: “Validate deck.pptx and tell me what is broken.”
Files ·
validate_presentationFixes common file structure problems
Repairs common structural issues and saves the file when something was fixed.
Try: “Repair deck.pptx, it will not open in PowerPoint.”
Write ·
repair_presentation
Read from the source code
Permissions
high risk · 3 things to watch
High risk
The assistant can change or delete content in any .pptx file inside the folder you allow, and edits overwrite the original file by default. Point it at a folder of copies, or set the root folder to one project, so it cannot touch decks you need to keep.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
Edits overwrite your original deck
Edit tools update the source file unless the assistant gives a different output path. Keep backups, or ask it to save to a new file name. registry.npmjs.org
It can delete slides, elements, charts and comments
Several tools remove content from the deck, and the server marks every edit tool as destructive. Check the result before you save over a final version. github.com
Root folder defaults to where the server starts
With no root set, the whole working folder is in reach, though only .pptx and .ppt files. Set a root folder on the command or with the environment variable. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only switch is documented. Each tool is flagged read or edit, but the server always registers all of them. |
|---|---|
| Sign-in and keys | No account or key. File access is limited to a root folder, set with the --root flag or the PPTX_TOOLS_ROOT variable, and defaults to the folder the server starts in. |
Questions
Is the PowerPoint MCP server official?
No. It is a community project by ChristopherVR, and it is not made by Microsoft.
Do I need PowerPoint installed?
The README does not list PowerPoint as a requirement. The engine reads and writes the .pptx files itself, and you need Node.js to run it.
Does it need an API key or account?
No. It runs on your machine and uses no account or key.
Which files can it open?
Only .pptx and .ppt files inside the root folder. Edits are saved as .pptx.
How do I limit it to one folder?
Set the PPTX_TOOLS_ROOT environment variable, or add the --root flag with a folder path to the command. Without either, it uses the folder it starts in.
Can it run read-only?
No read-only mode is documented. All 74 tools are always available, so use copies of your decks.
Is this the same as the Word, Excel and Visio servers from the ooxml project?
They are separate packages in the same project and share the same tooling. This page covers the PowerPoint one only.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
pptx-viewer-mcp- Registry
- npm
- Transport
- stdio
- Auth
- None
- Version
- 2.9.0
- License
- Apache-2.0
- Last commit
- Oct 31, 2026
- Open issues
- 1
Other Microsoft PowerPoint MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 4Hide
- www.npmjs.com · npmjs.com
- github.com · github.com
- registry.npmjs.org · registry.npmjs.org
- registry.npmjs.org · registry.npmjs.org