A Model Context Protocol (MCP) server that creates and manages PowerPoint presentations locally on your computer.
This MCP server provides a secure interface for AI assistants to create, modify, and manage PowerPoint (.pptx) files in your local /tmp/PowerPoints directory.
create_presentation- Create a new PowerPoint presentation with optional title slideadd_slide- Add new slides with title and content to existing presentationslist_presentations- List all PowerPoint files in the /tmp/PowerPoints directoryget_presentation_info- Get detailed information about a specific presentation
- Docker Desktop with MCP Toolkit enabled
- Docker MCP CLI plugin (
docker mcpcommand)
-
Build the Docker image:
docker build -t powerpoint-mcp . -
Configure Claude Desktop with volume mounting:
Add this to your Claude Desktop MCP configuration:
{ "mcpServers": { "powerpoint": { "command": "docker", "args": [ "run", "--rm", "-i", "-v", "/tmp/PowerPoints:/home/mcpuser/PowerPoints", "--user", "1000:1000", "powerpoint-mcp" ] } } }
-
Run the setup script:
./setup.sh
-
Configure Claude Desktop to use the persistent container
-
Create PowerPoint directory:
mkdir -p /tmp/PowerPoints
-
Build Docker image:
docker build -t powerpoint-mcp . -
Run with volume mount:
docker run -d \ --name powerpoint-mcp-server \ -v /tmp/PowerPoints:/home/mcpuser/PowerPoints \ -e PYTHONUNBUFFERED=1 \ --user 1000:1000 \ powerpoint-mcp
docker-compose up -dTo use this MCP server with VS Code:
- Install MCP Toolkit extension in VS Code
- Add server configuration to your VS Code settings (
mcp.json):
{
"mcp.servers": {
"powerpoint": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"/tmp/PowerPoints:/home/mcpuser/PowerPoints",
"--user",
"1000:1000",
"powerpoint-mcp"
],
"type": "stdio"
}
}
}- Restart VS Code to load the MCP server
- Use the PowerPoint tools through the MCP Toolkit interface
In Claude Desktop, you can ask:
- "Create a new PowerPoint presentation called 'My Demo' with the title 'Introduction to MCP'"
- "Add a slide to 'My Demo' with title 'What is MCP?' and content 'MCP stands for Model Context Protocol...'"
- "List all my PowerPoint presentations"
- "Show me information about the 'My Demo' presentation"
Claude Desktop → MCP Gateway → PowerPoint MCP Server → Local File System
↓
/tmp/PowerPoints Directory
# Build Docker image (only needed the first time)
docker build -t powerpoint-mcp .
# Test with volume mount
docker run --rm -i -v /tmp/PowerPoints:/home/mcpuser/PowerPoints --user 1000:1000 powerpoint-mcp
# Test volume mount
docker run --rm -v /tmp/PowerPoints:/home/mcpuser/PowerPoints --user 1000:1000 powerpoint-mcp ls -la /home/mcpuser/PowerPoints
# Test MCP tools directly (requires Python)
./test_docker.sh- Add the function to
powerpoint_server.py - Decorate with
@mcp.tool() - Update the catalog entry with the new tool name
- Rebuild the Docker image
Problem: Presentations are created but disappear when trying to add slides.
Solution: This is caused by missing volume mounts. Ensure you're running with:
docker run -v /tmp/PowerPoints:/home/mcpuser/PowerPoints ...Or use the provided setup script: ./setup.sh
- Verify Docker image built successfully
- Check catalog and registry files
- Ensure Claude Desktop config includes custom catalog
- Restart Claude Desktop
- Ensure ~/PowerPoints directory is writable
- Check Docker volume permissions
- Verify container is running as user 1000:1000
- Check container logs:
docker logs powerpoint-mcp-server - Verify container is running:
docker ps --filter name=powerpoint-mcp-server - Restart container:
docker restart powerpoint-mcp-server
- All files created in user's home directory
- No external API calls or network access
- Running as non-root user in Docker
- Safe filename handling prevents path traversal
MIT License