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 henry@mcphub.com.
The MCP PowerPoint Server is a Model Context Protocol server designed to facilitate the creation of PowerPoint presentations programmatically.
create_presentation
Creates a new PowerPoint presentation with the specified slides.
add_slide_template
Get a template for understanding slide structure and available layouts.
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.json
file 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:
Authorization
with 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:
Authorization
with 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