PPTX Generator MCP Server
Model Context Protocol (MCP) server for generating professional PowerPoint presentations from Markdown.
Transform your lesson plans and documentation into beautiful PPTX presentations with support for:
- ✅ Inline code with monospace formatting
- ✅ Code blocks with syntax highlighting background
- ✅ Tables with styled headers
- ✅ Bold text and mixed formatting
- ✅ Bullet lists with proper indentation
- ✅ Mixed content slides (bullets + code + tables)
- ✅ Custom branding (logos, colors, instructor info)
📋 Table of Contents
🔧 Requirements
Check your Node.js version:
node -v
📦 Installation
Method 1: Quick Install (Recommended)
1. Clone the repository:
cd ~/Documents # or any directory you prefer
git clone https://github.com/dmytro-ustynov/pptx-generator-mcp.git
cd pptx-generator-mcp
2. Run the installation script:
./install.sh
The script will:
- Install all dependencies
- Install the command globally
- Show you the Claude Desktop configuration
3. Configure Claude Desktop:
The installer will show you what to add. Copy the configuration to:
- macOS/Linux:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"pptx-generator": {
"command": "pptx-generator-mcp"
}
}
}
4. Restart Claude Desktop
✅ Done! The pptx-generator tools are now available in Claude.
Method 2: Manual Install
1. Clone and install dependencies:
# Change dmytro-ustynov to your username if you want to use your fork
git clone https://github.com/dmytro-ustynov/pptx-generator-mcp.git
cd pptx-generator-mcp
npm install
2. Install globally:
npm install -g .
Or with sudo if needed:
sudo npm install -g .
3. Verify installation:
which pptx-generator-mcp
# Should show: /usr/local/bin/pptx-generator-mcp (or similar)
4. Configure Claude Desktop (same as Method 1, step 3)
⚙️ Configuration
Claude Desktop Setup
After installation, configure Claude Desktop to use the MCP server.
macOS/Linux:
# Open the config file
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
# or
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:
notepad %APPDATA%\Claude\claude_desktop_config.json
Add this configuration:
{
"mcpServers": {
"pptx-generator": {
"command": "pptx-generator-mcp"
}
}
}
If you have other MCP servers:
{
"mcpServers": {
"pptx-generator": {
"command": "pptx-generator-mcp"
},
"other-server": {
"command": "other-server-command"
}
}
}
Restart Claude Desktop for changes to take effect.
Customization
Customize colors, fonts, and branding by editing config.json in the installation directory.
Find your installation:
npm list -g pptx-generator-mcp
# Shows: /usr/local/lib/node_modules/pptx-generator-mcp
Edit config:
cd $(npm root -g)/pptx-generator-mcp
nano config.json
Configuration options:
Instructor Information
{
"instructor": {
"rank": "майор",
"name": "Дмитро УСТИНОВ",
"position": "викладач"
}
}
Institution Details
{
"institution": {
"name": [
"Військовий інститут",
"телекомунікацій та інформатизації",
"імені Героїв Крут"
],
"department": "кафедри Комп'ютерних наук та інтелектуальних технологій"
}
}
Colors
Colors are adjusted according to the official Armed Forces of Ukraine brandbook, and the logo is Armed Forces of Ukraine emblem.
{
"colors": {
"step": "#6A653A", // Dividers and table headers
"titleText": "#003366", // Slide titles
"bodyText": "#333333" // Regular text
}
}
Fonts
{
"fonts": {
"title": "Raleway",
"body": "Open Sans",
"code": "JetBrains Mono" // For inline code and code blocks
}
}
Font Sizes
{
"sizes": {
"slideTitle": 28,
"body": 18,
"code": 14
}
}
After editing config.json:
- No need to restart Claude Desktop
- Changes apply to next generated presentation
🎯 Usage
In Claude Desktop
Once installed and configured, you can use these tools in Claude:
1. Generate a presentation:
Create a presentation about Docker basics with 5 slides
Claude will use the pptx-generator:generate_presentation tool automatically.
2. Get a template:
Show me the markdown template for presentations
Uses pptx-generator:get_template tool.
3. View configuration:
What are the current presentation settings?
Uses pptx-generator:get_config tool.
4. Update instructor:
Change the instructor to "капітан Іван ПЕТРЕНКО"
Uses pptx-generator:update_instructor tool.
Markdown Format
Presentations are created from Markdown with special syntax:
Frontmatter (Required)
---
discipline: Веб-розробка
type: practical
module: "3: Docker та контейнеризація"
lesson: "3.1: Основи Docker"
---
Types:
practical- Практичне заняттяlecture- Лекційне заняттяgroup- Групове заняття
Slide Types
Plan Slide:
## [plan] План заняття
- Topic 1
- Topic 2
- Topic 3
Divider Slide:
## [divider] 🔹 ЧАСТИНА 1. Introduction
Content Slide:
## [content] Slide Title
Regular text with **bold** and `inline code`.
Bullet points:
- First point with **bold**
- Second point with `code`
- Third point with **bold** and `code` mixed
Code block:
```bash
docker ps
docker images
Table:
| Column 1 | Column 2 |
|---|---|
value1 | Description 1 |
value2 | Description 2 |
#### Formatting
- **Bold text:** `**text**`
- **Inline code:** `` `code` ``
- **Code blocks:** Triple backticks with optional language
- **Tables:** Standard Markdown table syntax
- **Bullets:** `-` or `*` with optional indentation
---
## 📚 Examples
### Simple Presentation
```markdown
---
discipline: Programming Basics
type: lecture
module: "1: Introduction"
lesson: "1.1: Hello World"
---
## [plan] План заняття
- What is programming
- First program
- Variables and types
## [divider] 🔹 Getting Started
## [content] What is Programming?
**Programming** is giving instructions to computers.
Key concepts:
- Variables store data
- Functions perform actions
- Loops repeat tasks
Example:
```python
print("Hello, World!")
### Advanced Features
```markdown
## [content] Docker Commands
Common commands:
| Command | Description |
|---------|-------------|
| `docker ps` | List running containers |
| `docker images` | List images |
| `docker run` | Run a container |
Example usage:
```bash
docker run -d -p 80:80 nginx
The -d flag runs in detached mode.
---
## 🐛 Troubleshooting
### Command not found: pptx-generator-mcp
**Solution 1:** Check if installed globally
```bash
npm list -g pptx-generator-mcp
Solution 2: Add npm global bin to PATH
# Find npm global bin path
npm config get prefix
# Add to PATH (add to ~/.bashrc or ~/.zshrc)
export PATH=$(npm config get prefix)/bin:$PATH
Solution 3: Reinstall
cd /path/to/pptx-generator-mcp
npm install -g .
Tools not showing in Claude
-
Check Claude Desktop config:
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json -
Verify JSON syntax (use JSONLint)
-
Restart Claude Desktop completely:
- Quit Claude Desktop (Cmd+Q on macOS)
- Reopen Claude Desktop
-
Check MCP server logs (if available in Claude Desktop)
Permission denied when installing
Solution: Use sudo
sudo npm install -g .
Or install without sudo by configuring npm:
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Fonts not displaying correctly
Issue: Custom fonts like JetBrains Mono not showing
Solution: Install the font on your system:
- Download JetBrains Mono
- Install the font
- Restart PowerPoint/Keynote
🔄 Updating
To update to the latest version:
# Navigate to repository
cd /path/to/pptx-generator-mcp
# Pull latest changes
git pull
# Reinstall
npm install
npm install -g .
No need to restart Claude Desktop - changes take effect immediately for new presentations.
🗑️ Uninstalling
# Uninstall global command
npm uninstall -g pptx-generator-mcp
# Remove repository
rm -rf /path/to/pptx-generator-mcp
# Remove from Claude Desktop config
# Edit: ~/Library/Application Support/Claude/claude_desktop_config.json
# Remove the "pptx-generator" section
📖 Additional Resources
- MCP Documentation: https://modelcontextprotocol.io/
- Claude Desktop: https://claude.ai/download
- Markdown Guide: https://www.markdownguide.org/
📝 License
MIT License - See LICENSE file for details
🤝 Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Submit a pull request
💬 Support
For issues or questions:
- Open an issue on GitHub
- Check the Troubleshooting section
Made with ❤️ for VITI education
