A mcp server supporting you to generate powerpoint using LLM and natural language automatically.
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
Then add MCP to your project dependencies
uv add "mcp[cli]"
uv run mcp
You can install this server in Claude Desktop and interact with it right away by running:
mcp install server-local.py
Alternatively, you can test it with the MCP Inspector:
mcp dev server-local.py
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) -> stradd_title_slide(prs_id: str, title: str, subtitle: Optional[str] = None) -> stradd_content_slide(prs_id: str, title: str, content: List[str]) -> stradd_section_slide(prs_id: str, section_title: str, background_color: Optional[str] = None) -> stradd_image_slide(prs_id: str, title: str, image_path: str, image_description: str) -> stradd_table_slide(prs_id: str, title: str, headers: List[str], rows: List[List[str]]) -> strsave_presentation(prs_id: str, output_path: str) -> strget_presentation_download_link(prs_id: str) -> strget_presentation_info(prs_id: str) -> strpresentation://{prs_id}/outlineremove_slide(prs_id: str, slide_index: int) -> strexport_to_base64(prs_id: str) -> strsvggenerator_prompt(description: str) -> list[base.Message]generate_svg(prs_id: str, svg_markup: str, title: str = None, width: float = 6.0) -> strError 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": {
"mcp-ppt": {
"command": "mcp",
"args": [
"install",
"server-local.py"
]
}
}
}Related projects feature coming soon
Will recommend related projects based on sub-categories