jordanbaucke/mcp-powerpoint-server
If you are the rightful owner of mcp-powerpoint-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The MCP PowerPoint Server is a Model Context Protocol server designed to facilitate the creation of PowerPoint presentations programmatically.
MCP PowerPoint Server
A Model Context Protocol (MCP) server that provides tools for creating PowerPoint presentations programmatically. Built using Node.js, TypeScript, and designed to run on Azure Container Apps with HTTP transport.
Features
- 🎯 Create PowerPoint presentations with multiple slides
- 📊 Support for different slide layouts (title, title-content, content-only)
- 🔘 Add bullet points to slides
- 📝 Set presentation metadata (title, author)
- 🌐 HTTP-based MCP server with authentication
- 🐳 Docker support for containerized deployment
- ☁️ Azure Container Apps ready
Prerequisites
- Install the latest version of VS Code
- Install GitHub Copilot and GitHub Copilot Chat extensions
- Node.js (>=22) and npm
- git for cloning the repository
Installation
-
Clone this repository:
git clone <repository-url> cd mcp-powerpoint-server -
Install dependencies:
npm install -
Build the project:
npm run build
Running the Server
Local Development
Start the HTTP server locally:
npm run dev
You should see output similar to:
mcp:index 2025-07-13T12:00:00.000Z MCP PowerPoint Streamable HTTP Server
mcp:index 2025-07-13T12:00:00.000Z MCP endpoint: http://localhost:3000/mcp
mcp:index 2025-07-13T12:00:00.000Z Health check: http://localhost:3000/health
mcp:index 2025-07-13T12:00:00.000Z Press Ctrl+C to stop the server
Using Docker
Build and run with Docker:
# Build the Docker image
docker build -t mcp-powerpoint-server .
# Run the container
docker run -p 3000:3000 -v $(pwd)/output:/app/output mcp-powerpoint-server
Or use Docker Compose:
docker-compose up --build
Usage
This MCP server provides the following tools:
create_presentation
Creates a new PowerPoint presentation with the specified slides.
Parameters:
title(string, required): Title of the presentationauthor(string, optional): Author of the presentationslides(array, required): Array of slide objectsoutputPath(string, required): Output file path (must end with .pptx)
Slide object structure:
title(string, required): Title of the slidecontent(string, optional): Content/text for the slidelayout(string, optional): Layout type ('title', 'title-content', 'content-only')bullets(array, optional): Array of bullet point strings
add_slide_template
Get a template for understanding slide structure and available layouts.
Testing the MCP Server
Option 1: VS Code with MCP Configuration
The quickest way to connect is using the provided .vscode/mcp.json configuration:
- Open the
.vscode/mcp.jsonfile in VS Code - Click the "start" button to connect to the MCP server
- When prompted for the token, enter:
abc
Option 2: Manual VS Code Setup
- Open VS Code Command Palette (
Cmd+Shift+P/Ctrl+Shift+P) - Run "MCP: Add Server"
- Choose "HTTP" as the transport type
- Enter URL:
http://localhost:3000/mcp - Add Authorization header:
Authorizationwith valueBearer abc - Give it a name like "PowerPoint Server"
Option 3: MCP Inspector
-
Start the MCP Inspector:
npm run inspect -
Open the displayed URL in your browser
-
Configure:
- Transport type:
Streamable HTTP - URL:
http://localhost:3000/mcp - Add header:
Authorizationwith valueBearer abc
- Transport type:
-
Connect and test the tools
Example Usage
Here's an example of creating a presentation:
{
"tool": "create_presentation",
"arguments": {
"title": "My Presentation",
"author": "John Doe",
"slides": [
{
"title": "Welcome",
"layout": "title"
},
{
"title": "Introduction",
"content": "This is an introduction slide",
"layout": "title-content",
"bullets": [
"First point",
"Second point",
"Third point"
]
},
{
"title": "Conclusion",
"content": "Thank you for your attention!",
"layout": "title-content"
}
],
"outputPath": "./output/presentation.pptx"
}
}
API Endpoints
GET /- Server informationGET /health- Health checkPOST /mcp- MCP endpoint (requires Bearer token authentication)GET /mcp- Returns 405 Method Not Allowed
Authentication
The server uses simple Bearer token authentication. For demo purposes, the token is abc. In production, implement proper JWT validation.
Development
npm run dev: Build and start the servernpm run build: Build the projectnpm run watch: Watch mode for TypeScript compilationnpm test: Run testsnpm run inspect: Start MCP Inspector
Project Structure
src/
├── index.ts # Main HTTP server setup
├── server.ts # MCP HTTP server wrapper
├── tools.ts # MCP tool definitions
├── services/
│ └── powerpoint.ts # PowerPoint generation service
├── helpers/
│ ├── logs.ts # Logging utilities
│ └── cache.ts # Transport cache
└── types/
└── officegen.d.ts # Type definitions
Dependencies
@modelcontextprotocol/sdk: MCP SDK for building serversexpress: HTTP server frameworkofficegen: Library for generating Office documentsfs-extra: Enhanced file system operationschalk: Terminal colors for loggingdebug: Debug logging utilities
License
MIT