Skip to main content
Glama
dmytro-ustynov

PPTX Generator MCP Server

README.md
# 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

A3.6/5.0

Scored across 5 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues