PPTX Generator MCP Server
Generates professional PowerPoint presentations from Markdown with support for code blocks, tables, custom branding, and mixed formatting. Transforms lesson plans and documentation into styled PPTX files with syntax highlighting and customizable themes.
README
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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.