PPTX Generator MCP Server
# 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](#requirements)
- [Installation](#installation)
- [Method 1: Quick Install (Recommended)](#method-1-quick-install-recommended)
- [Method 2: Manual Install](#method-2-manual-install)
- [Configuration](#configuration)
- [Claude Desktop Setup](#claude-desktop-setup)
- [Customization](#customization)
- [Usage](#usage)
- [In Claude Desktop](#in-claude-desktop)
- [Markdown Format](#markdown-format)
- [Examples](#examples)
- [Troubleshooting](#troubleshooting)
- [Updating](#updating)
- [Uninstalling](#uninstalling)
---
## 🔧 Requirements
- **Node.js** 18.0 or higher ([Download](https://nodejs.org/))
- **Claude Desktop** ([Download](https://claude.ai/download))
- **macOS, Linux, or Windows**
Check your Node.js version:
```bash
node -v
```
---
## 📦 Installation
### Method 1: Quick Install (Recommended)
**1. Clone the repository:**
```bash
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:**
```bash
./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`
```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:**
```bash
# 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:**
```bash
npm install -g .
```
Or with sudo if needed:
```bash
sudo npm install -g .
```
**3. Verify installation:**
```bash
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:**
```bash
# Open the config file
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
# or
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
```
**Windows:**
```powershell
notepad %APPDATA%\Claude\claude_desktop_config.json
```
**Add this configuration:**
```json
{
"mcpServers": {
"pptx-generator": {
"command": "pptx-generator-mcp"
}
}
}
```
**If you have other MCP servers:**
```json
{
"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:**
```bash
npm list -g pptx-generator-mcp
# Shows: /usr/local/lib/node_modules/pptx-generator-mcp
```
**Edit config:**
```bash
cd $(npm root -g)/pptx-generator-mcp
nano config.json
```
**Configuration options:**
#### Instructor Information
```json
{
"instructor": {
"rank": "майор",
"name": "Дмитро УСТИНОВ",
"position": "викладач"
}
}
```
#### Institution Details
```json
{
"institution": {
"name": [
"Військовий інститут",
"телекомунікацій та інформатизації",
"імені Героїв Крут"
],
"department": "кафедри Комп'ютерних наук та інтелектуальних технологій"
}
}
```
#### Colors
Colors are adjusted according to the official Armed Forces of Ukraine [brandbook](https://warbooks.com.ua/contents/brendbuk-zsu-kerivnitstvo-iz-vikoristannya-grafichnogo-stilyu-u-vizualniy-komunikatsii.pdf?srsltid=AfmBOoqJlDFC6vqXpO5LluAIv1D3PE9M42JNLUSyexejGHWkl5rz9hNi), and the logo is Armed Forces of Ukraine emblem.
```json
{
"colors": {
"step": "#6A653A", // Dividers and table headers
"titleText": "#003366", // Slide titles
"bodyText": "#333333" // Regular text
}
}
```
#### Fonts
```json
{
"fonts": {
"title": "Raleway",
"body": "Open Sans",
"code": "JetBrains Mono" // For inline code and code blocks
}
}
```
#### Font Sizes
```json
{
"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)
```yaml
---
discipline: Веб-розробка
type: practical
module: "3: Docker та контейнеризація"
lesson: "3.1: Основи Docker"
---
```
**Types:**
- `practical` - Практичне заняття
- `lecture` - Лекційне заняття
- `group` - Групове заняття
#### Slide Types
**Plan Slide:**
```markdown
## [plan] План заняття
- Topic 1
- Topic 2
- Topic 3
```
**Divider Slide:**
```markdown
## [divider] 🔹 ЧАСТИНА 1. Introduction
```
**Content Slide:**
```markdown
## [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
```bash
# 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
```bash
cd /path/to/pptx-generator-mcp
npm install -g .
```
---
### Tools not showing in Claude
1. **Check Claude Desktop config:**
```bash
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json
```
2. **Verify JSON syntax** (use [JSONLint](https://jsonlint.com/))
3. **Restart Claude Desktop completely:**
- Quit Claude Desktop (Cmd+Q on macOS)
- Reopen Claude Desktop
4. **Check MCP server logs** (if available in Claude Desktop)
---
### Permission denied when installing
**Solution:** Use sudo
```bash
sudo npm install -g .
```
Or install without sudo by configuring npm:
```bash
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:
1. Download [JetBrains Mono](https://www.jetbrains.com/lp/mono/)
2. Install the font
3. Restart PowerPoint/Keynote
---
## 🔄 Updating
To update to the latest version:
```bash
# 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
```bash
# 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:
1. Fork the repository
2. Create a feature branch
3. Submit a pull request
---
## 💬 Support
For issues or questions:
- Open an issue on GitHub
- Check the [Troubleshooting](#troubleshooting) section
---
**Made with ❤️ for VITI education**
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose with no overlap: generate_presentation creates new presentations, get_config retrieves configuration, get_template provides formatting examples, list_presentations enumerates existing files, and update_instructor modifies specific configuration data. The boundaries between these operations are unambiguous.
All tools follow a consistent verb_noun pattern with snake_case naming (generate_presentation, get_config, get_template, list_presentations, update_instructor). The verbs appropriately describe each action (generate, get, list, update) without deviation or mixing of conventions.
Five tools is well-scoped for a presentation generation server, covering the core workflow: template guidance, configuration management, generation, and output listing. Each tool earns its place without redundancy or excessive specialization for this domain.
The toolset covers the essential presentation generation workflow from template to output, but lacks update/delete operations for generated presentations or broader configuration management beyond instructor info. Agents can work around these minor gaps, but the surface isn't fully comprehensive.