This project provides a PowerPoint automation server that works with Claude Desktop via the Model Control Protocol (MCP). It allows Claude to interact with Microsoft PowerPoint, enabling tasks like creating presentations, adding slides, modifying content, and more.
shell
git clone https://github.com/socamalo/PPT_MCP_Server.git
shell
uv add fastmcp pywin32
To configure Claude Desktop to use this MCP server, add the following to your Claude Desktop configuration file, located at %APPDATA%\Claude\claude_desktop_config.json
:
{
"mcpServers": {
"ppts": {
"command": "uv",
"args": ["run", "path/to/main.py"]
}
}
}
If you're using a virtual environment or alternative Python executable (like uv
):
{
"mcpServers": {
"ppts": {
"command": "C:\\Path\\To\\Python\\Scripts\\uv.exe",
"args": ["run", "C:\\Path\\To\\Project\\main.py"]
}
}
}
Once configured, you can use Claude Desktop to control PowerPoint. Example interactions:
Could you open PowerPoint for me?
Please create a new PowerPoint presentation.
Add a new slide to the presentation.
Add a text box to slide 1 with the text "Hello World".
Save the presentation to C:\Users\username\Documents\presentation.pptx
The server provides the following PowerPoint automation functions:
initialize_powerpoint()
: Connect to PowerPoint and make it visibleget_presentations()
: List all open presentationsopen_presentation(path)
: Open a presentation from a fileget_slides(presentation_id)
: Get all slides in a presentationget_slide_text(presentation_id, slide_id)
: Get text content of a slideupdate_text(presentation_id, slide_id, shape_id, text)
: Update text in a shapesave_presentation(presentation_id, path)
: Save a presentationclose_presentation(presentation_id, save)
: Close a presentationcreate_presentation()
: Create a new presentationadd_slide(presentation_id, layout_type)
: Add a new slideadd_text_box(presentation_id, slide_id, text, left, top, width, height)
: Add a text boxset_slide_title(presentation_id, slide_id, title)
: Set the title of a slidepywin32
and fastmcp
Python packagesContributions are welcome! Please feel free to submit a Pull Request.