PPTX Generator MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PPTX Generator MCP Servercreate a presentation from my lesson plan on Python functions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: Majin Slide MCP
🔧 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-mcp2. Run the installation script:
./install.shThe 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.jsonWindows:
%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 install2. 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.jsonWindows:
notepad %APPDATA%\Claude\claude_desktop_config.jsonAdd 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-mcpEdit config:
cd $(npm root -g)/pptx-generator-mcp
nano config.jsonConfiguration 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 slidesClaude will use the pptx-generator:generate_presentation tool automatically.
2. Get a template:
Show me the markdown template for presentationsUses 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 3Divider Slide:
## [divider] 🔹 ЧАСТИНА 1. IntroductionContent 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 imagesTable:
Column 1 | Column 2 |
| Description 1 |
| 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 nginxThe -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-mcpSolution 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:$PATHSolution 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.jsonVerify 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 ~/.bashrcFonts 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
Available Tools
5 toolsgenerate_presentationB
Generate a PPTX presentation from markdown content. Returns path to the generated file.
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | Yes | Full markdown content including frontmatter (---) with discipline, type, module, lesson fields and slide sections marked with ## [type] Title | |
| filename | Yes | Output filename without extension (e.g., "python-lesson-5") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool generates a file and returns a path, but lacks details on permissions, error handling, file storage location, or whether the operation is idempotent. For a tool that creates files with no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded: two sentences that directly state the purpose and return value with zero waste. Every sentence earns its place by providing essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters with full schema coverage but no annotations or output schema, the description is minimally complete. It covers the basic operation and return, but for a file-generation tool, it should ideally mention more about behavioral aspects like overwriting or errors. It's adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain markdown formatting or filename conventions further). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate a PPTX presentation from markdown content.' It specifies both the verb ('Generate') and resource ('PPTX presentation'), and distinguishes it from sibling tools like 'list_presentations' or 'get_template.' However, it doesn't explicitly differentiate from all siblings (e.g., 'update_instructor'), so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use it, or compare it to sibling tools like 'get_template' or 'list_presentations.' The only implied usage is from the purpose statement, but no explicit guidelines are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configB
Get current presentation configuration (colors, fonts, instructor info)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states this is a read operation ('Get'), which implies non-destructive behavior, but doesn't disclose any behavioral traits such as permissions needed, rate limits, response format, or whether it returns cached/live data. The description adds minimal context beyond the basic operation, leaving significant gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Get current presentation configuration') and adds clarifying details in parentheses. Every word earns its place, with zero waste or redundancy. It's appropriately sized for a simple, parameter-less tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, no output schema), the description is adequate as a minimum viable explanation. It covers what the tool does but lacks details on behavioral context, usage guidelines, and output format. For a read-only config tool, this is passable but leaves room for improvement in guiding the agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (since there are no parameters to describe). With no parameters, the baseline is 4, as there's nothing for the description to compensate for. The description doesn't need to add param semantics, and it appropriately focuses on the tool's purpose instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('current presentation configuration'), with specific details about what configuration includes ('colors, fonts, instructor info'). It distinguishes from siblings like 'get_template' (templates vs. current config) and 'update_instructor' (read vs. write), though not explicitly named. Purpose is specific but sibling differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description implies it retrieves current configuration, but it doesn't specify contexts like after setup, before generation, or compared to 'get_template' for templates or 'list_presentations' for presentation lists. Usage is inferred from the purpose alone, with no explicit when/when-not statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateB
Get an example markdown template showing the correct format for creating presentations
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it 'gets' a template, implying a read-only operation, but doesn't disclose behavioral traits such as whether it requires authentication, has rate limits, returns a static or dynamic template, or if it's idempotent. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose ('Get an example markdown template') and adds clarifying context ('showing the correct format for creating presentations'). Every word earns its place with zero waste, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but has gaps. It explains what the tool does but lacks behavioral context (e.g., response format, error handling). Without annotations or output schema, the description should ideally provide more completeness, such as hinting at the return value, but it minimally covers the purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. Baseline for 0 parameters is 4, as it avoids unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'example markdown template', specifying it shows 'correct format for creating presentations'. It distinguishes from siblings like 'generate_presentation' (creates presentations) and 'list_presentations' (lists existing ones), though not explicitly. However, it could be more specific about what distinguishes it from 'get_config'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing a template for presentation creation, suggesting it's for formatting guidance. However, it doesn't explicitly state when to use this tool versus alternatives like 'generate_presentation' (for actual creation) or 'get_config' (for configuration). The context is clear but lacks explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presentationsB
List all generated presentations in the output folder
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does without disclosing behavioral traits like whether it's read-only, how it handles errors, or what format the list returns. It lacks context on permissions, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's front-loaded and appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate but lacks details on return values or behavior. It covers the basic purpose but doesn't provide enough context for full agent understanding without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the inputs. The description adds no parameter information, but with no parameters, a baseline of 4 is appropriate as there's nothing to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('all generated presentations in the output folder'), providing specific scope. However, it doesn't explicitly differentiate from sibling tools like 'get_config' or 'get_template', which might also retrieve information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing presentations but offers no guidance on when to use this tool versus alternatives like 'generate_presentation' or other siblings. There are no explicit when/when-not instructions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_instructorC
Update instructor information in the configuration
| Name | Required | Description | Default |
|---|---|---|---|
| rank | No | Military rank (e.g., "майор") | |
| name | No | Full name (e.g., "Дмитро УСТИНОВ") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Update' implies a mutation, but lacks details on permissions, idempotency, error handling, or response format. This leaves significant gaps in understanding how the tool behaves beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, error conditions, or what constitutes a successful update, leaving the agent with incomplete context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('rank' and 'name') with examples. The description adds no additional parameter semantics beyond what the schema provides, resulting in a baseline score of 3 for adequate but not enhanced coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('instructor information in the configuration'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_config' or 'generate_presentation' beyond the basic verb+resource distinction, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are no mentions of prerequisites, context for updates, or comparisons to sibling tools like 'get_config' for retrieval, leaving the agent with minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
generate_presentation - First observed
get_config - First observed
get_template - First observed
list_presentations - First observed
update_instructor
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.
Maintenance
Related MCP Connectors
Generate PDF, Word (.docx) and PowerPoint (.pptx) documents from Markdown over MCP.
Generate professional PowerPoint presentations from text, YouTube videos, or structured JSON data.…
Generate polished PowerPoint presentations from text prompts, YouTube videos, or structured outlin…
Generate, edit, merge, translate and PDF-convert PowerPoint (.pptx) over MCP. 8 tools.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables conversion of Markdown content into PowerPoint presentations using pandoc. Supports custom templates for consistent branding and can process both direct markdown text and files.17MIT
- AlicenseAqualityDmaintenanceGenerates AI-powered prompts for creating markdown slide presentations and saves them as Marp-compatible files. Supports customizable presentation styles, templates, and direct file creation for professional slideshows.26 npm19MIT
- AlicenseNot gradedqualityCmaintenanceCreates professional PowerPoint presentations from Markdown or JSON with intelligent layout recommendations, rich content support including tables and images, and automatic template selection based on content analysis.7Apache 2.0
- FlicenseNot gradedqualityDmaintenanceConverts linear Markdown documents into styled Google Slides presentations with customizable themes and layouts.-