This MCP server enables dynamic creation, editing and saving of PowerPoint presentations. Built upon the MCP and using the python-pptx library, it provides a flexible interface to add slides, images, tables, and other elements. Users could effortlessly make, edit and save presentations by simply chatting with a large language model, streamlining the entire workflow
Create Presentations
Initialize a new PowerPoint presentation using a title that generates a unique presentation ID.
Slide Operations
Presentation Management
Clone the Repository
git clone https://github.com/ltc6539/mcp-ppt.git
cd mcp-ppt
Create a Virtual Environment (Optional but Recommended)
python3 -m venv .venv
source .venv/bin/activate # On Windows use: .venv\Scripts\activate
Install Dependencies
pip install -r requirements.txt
Add this to your claude_desktop_config.json
:
{
"mcpServers": {
"PowerPoint Creator": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"--with",
"python-pptx",
"mcp",
"run",
"your_path/mcp-ppt/main.py"
]
}
}
}
Be sure to modify your_path
into the real path
If the claude desktop has error, You may need to put the full path to the uv executable in the command field. You can get this by running which uv
on MacOS/Linux or where uv
on Windows.
During startup, the server logs Python and python-pptx version information to stderr. Any errors during execution are also printed to stderr for easy debugging.
Each MCP tool function is directly accessible via the MCP server. Below are the primary operations available:
create_presentation(title: str) -> str
add_title_slide(prs_id: str, title: str, subtitle: Optional[str] = None) -> str
add_content_slide(prs_id: str, title: str, content: List[str]) -> str
add_section_slide(prs_id: str, section_title: str, background_color: Optional[str] = None) -> str
add_image_slide(prs_id: str, title: str, image_path: str, image_description: str) -> str
add_table_slide(prs_id: str, title: str, headers: List[str], rows: List[List[str]]) -> str
save_presentation(prs_id: str, output_path: str) -> str
get_presentation_download_link(prs_id: str) -> str
get_presentation_info(prs_id: str) -> str
presentation://{prs_id}/outline
remove_slide(prs_id: str, slide_index: int) -> str
export_to_base64(prs_id: str) -> str
Error Checks:
Each tool validates input (e.g., verifying presentation IDs or file existence) and returns descriptive error messages.
Temporary Directories:
The server ensures that files are saved in writable directories (typically /tmp
) and falls back accordingly if a provided path is read-only.
Logging:
Errors and version information are output to stderr to aid in debugging and monitoring.
Contributions are welcome. If you encounter issues or have suggestions for improvements, please open an issue or submit a pull request.
{
"mcpServers": {
"PowerPoint Creator": {
"env": {},
"args": [
"run",
"--with",
"mcp[cli]",
"--with",
"python-pptx",
"mcp",
"run",
"your_path/mcp-ppt/main.py"
],
"command": "uv"
}
}
}
Seamless access to top MCP servers powering the future of AI integration.