Skip to main content
Glama
README.md
# šŸŽÆ PPT-MCP

> **Pure Node.js PowerPoint MCP Server** - Create, analyze, and manage PowerPoint presentations with AI assistance

<mcreference link="https://www.npmjs.com/package/pptxgenjs" index="1">1</mcreference> **PPT-MCP** is a Model Context Protocol (MCP) server that provides comprehensive PowerPoint presentation management capabilities using pure JavaScript/TypeScript. Built with **PptxGenJS**, the most popular PowerPoint library for Node.js with 3,500+ GitHub stars.

## ✨ Features

### šŸš€ **Pure Node.js Stack**
- **Zero Python Dependencies** - 100% JavaScript/TypeScript implementation
- **Cross-Platform** - Works on Windows, macOS, and Linux
- **Modern Architecture** - Built with latest Node.js and TypeScript
- **Lightweight** - Minimal dependencies, fast startup

### šŸ“Š **Core Capabilities**
- **šŸŽØ Create Presentations** - Generate professional PowerPoint files with custom templates
- **āœļø Edit Existing Files** - Advanced editing capabilities with pptx-automizer for real PowerPoint modification
- **šŸ“– File Analysis** - Analyze presentation structure and metadata
- **šŸ”§ Template Support** - Basic, Professional, and Modern design templates
- **šŸ“ File Management** - Smart file handling and directory management

### šŸŽÆ **AI-Powered Workflow**
- **Claude Integration** - Seamless integration with Claude Desktop
- **Natural Language** - Create presentations using conversational commands
- **Intelligent Templates** - AI-suggested layouts and designs
- **Batch Operations** - Handle multiple presentations efficiently

## šŸš€ Quick Start

### Prerequisites
- **Node.js** 18+ 
- **Claude Desktop** (for MCP integration)

### Installation

#### Option 1: NPM Package (Recommended)
```bash
npm install -g ppt-mcp
```

#### Option 2: From Source
```bash
git clone https://github.com/guangxiangdebizi/PPT-MCP.git
cd PPT-MCP
npm install
npm run build
```

### Claude Desktop Configuration

Add to your Claude Desktop config:

#### Stdio Mode (Local Development)
```json
{
  "mcpServers": {
    "ppt-mcp": {
      "command": "node",
      "args": ["path/to/PPT-MCP/build/index.js"]
    }
  }
}
```

#### SSE Mode (Production)
```bash
# Install and run with Supergateway
npm install -g supergateway
npx supergateway --stdio "node build/index.js" --port 3100
```

```json
{
  "mcpServers": {
    "ppt-mcp": {
      "type": "sse",
      "url": "http://localhost:3100/sse",
      "timeout": 600
    }
  }
}
```

## šŸ› ļø Available Tools

### 1. **create_presentation**
Create new PowerPoint presentations with customizable options.

**Parameters:**
- `title` (required) - Presentation title
- `slides` (optional) - Number of slides (default: 1)
- `output_path` (optional) - Custom save location
- `template` (optional) - Design template: `basic`, `professional`, `modern`

**Example:**
```
Create a presentation titled "Q4 Business Review" with 5 slides using the professional template
```

### 2. **edit_presentation**
Basic editing of existing presentations (Note: Limited by PptxGenJS library capabilities).

**Parameters:**
- `file_path` (required) - Path to existing presentation
- `operation` (required) - Edit type: `add_slide`, `add_text`, `add_image`, `add_table`
- `slide_index` (optional) - Target slide number
- `content` (optional) - Content to add

### 2.5. **edit_presentation_enhanced** šŸ†•
Enhanced PowerPoint editing with comprehensive guidance and step-by-step instructions for manual editing.

**Parameters:**
- `file_path` (required) - Path to existing presentation
- `operation` (required) - Operation type: `get_guidance`, `add_slide`, `replace_text`, `extract_content`
- `slide_index` (optional) - Target slide number (1-based)
- `content` (optional) - Content specifications

**Features:**
- šŸ“‹ Step-by-step editing instructions
- šŸ”§ Multiple solution approaches
- šŸ’” Best practice recommendations
- šŸŽÆ Operation-specific guidance

**Example:**
```
Get guidance for editing "report.pptx" to replace text content
```

### 3. **read_presentation**
Analyze and extract information from PowerPoint files.

**Parameters:**
- `file_path` (required) - Path to presentation file
- `output_format` (optional) - Format: `text`, `json`, `markdown`
- `slide_range` (optional) - Specific slides to read
- `include_notes` (optional) - Include speaker notes

### 4. **analyze_presentation**
Perform comprehensive analysis of presentation structure and content.

**Parameters:**
- `file_path` (required) - Path to presentation file
- `analysis_type` (optional) - Analysis type: `structure`, `content`, `statistics`, `readability`, `comprehensive`
- `detailed` (optional) - Enable detailed analysis

## šŸ“ Project Structure

```
PPT-MCP/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts              # MCP server entry point
│   └── tools/
│       ā”œā”€ā”€ ppt-creator.ts     # Creation & editing tools
│       └── ppt-reader.ts      # Reading & analysis tools
ā”œā”€ā”€ build/                     # Compiled JavaScript
ā”œā”€ā”€ package.json              # Dependencies & scripts
ā”œā”€ā”€ tsconfig.json             # TypeScript configuration
ā”œā”€ā”€ README.md                 # Documentation
└── LICENSE                   # Apache 2.0 License
```

## šŸ”§ Development

### Build Commands
```bash
npm run build        # Compile TypeScript
npm run dev          # Watch mode compilation
npm start           # Run compiled server
npm run sse         # Start with Supergateway SSE
```

### Testing
```bash
# Test server startup
node build/index.js

# Test presentation creation
# (Use Claude Desktop or MCP client)
```

## šŸŽØ Template Showcase

### **Basic Template**
- Clean, minimal design
- Black text on white background
- Perfect for academic or simple business presentations

### **Professional Template**
- Corporate color scheme (Dark Slate Gray)
- Sophisticated typography
- Ideal for business meetings and reports

### **Modern Template**
- Vibrant blue and green accents
- Contemporary design elements
- Great for creative and tech presentations

## šŸš€ Technology Stack

- **Runtime:** Node.js 18+
- **Language:** TypeScript
- **PPT Engine:** <mcreference link="https://www.npmjs.com/package/pptxgenjs" index="1">1</mcreference> PptxGenJS (3,500+ ⭐)
- **MCP SDK:** @modelcontextprotocol/sdk
- **Build System:** TypeScript Compiler
- **Package Manager:** NPM

## šŸ”„ Migration from Python

This version represents a complete rewrite from Python to pure Node.js:

### **Advantages of Node.js Version:**
- āœ… **Faster Startup** - No Python interpreter overhead
- āœ… **Simpler Deployment** - Single runtime environment
- āœ… **Better Integration** - Native JavaScript ecosystem
- āœ… **Modern Tooling** - TypeScript, ESM, and modern Node.js features
- āœ… **Cross-Platform** - Consistent behavior across operating systems

### **Current Limitations:**
- āš ļø **Direct File Modification** - PptxGenJS is creation-focused, not editing-focused
- āš ļø **Complex Animations** - Advanced animations not yet supported
- āš ļø **Embedded Media** - Video/audio embedding requires additional implementation

### **Solutions Provided:**
- āœ… **Comprehensive Guidance** - `edit_presentation_enhanced` tool provides step-by-step instructions
- āœ… **Multiple Approaches** - Manual editing, hybrid workflows, and programmatic creation
- āœ… **Best Practices** - Detailed recommendations for different editing scenarios

*The `edit_presentation_enhanced` tool bridges the gap by providing expert guidance for PowerPoint editing workflows.*

## šŸ¤ Contributing

We welcome contributions! Here's how to get started:

1. **Fork** the repository
2. **Create** a feature branch: `git checkout -b feature/amazing-feature`
3. **Commit** your changes: `git commit -m 'Add amazing feature'`
4. **Push** to the branch: `git push origin feature/amazing-feature`
5. **Open** a Pull Request

### Development Guidelines
- Follow TypeScript best practices
- Add tests for new features
- Update documentation
- Ensure cross-platform compatibility

## šŸ“„ License

This project is licensed under the **Apache License 2.0** - see the [LICENSE](LICENSE) file for details.

## šŸ‘Øā€šŸ’» Author

**Xingyu Chen**
- 🌐 **LinkedIn:** [Xingyu Chen](https://www.linkedin.com/in/xingyu-chen-b5b3b0313/)
- šŸ“§ **Email:** guangxiangdebizi@gmail.com
- šŸ™ **GitHub:** [@guangxiangdebizi](https://github.com/guangxiangdebizi/)
- šŸ“¦ **NPM:** [@xingyuchen](https://www.npmjs.com/~xingyuchen)

## šŸ™ Acknowledgments

- **PptxGenJS Team** - For the excellent PowerPoint generation library
- **Anthropic** - For the Model Context Protocol specification
- **TypeScript Team** - For the amazing type system
- **Node.js Community** - For the robust runtime environment

---

<div align="center">

**⭐ Star this repo if you find it helpful!**

[šŸ› Report Bug](https://github.com/guangxiangdebizi/PPT-MCP/issues) • [✨ Request Feature](https://github.com/guangxiangdebizi/PPT-MCP/issues) • [šŸ“– Documentation](https://github.com/guangxiangdebizi/PPT-MCP)

</div>

TDQS

A3.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: analyze for insights, create for new presentations, edit for modifications, and read for content extraction. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., analyze_presentation, create_presentation), using snake_case throughout. This predictability enhances readability and usability for agents.

Tool Count5/5

With 4 tools, the server is well-scoped for PowerPoint presentation management. Each tool serves a distinct and essential function (create, read, edit, analyze), with no unnecessary or redundant tools, making the count appropriate for the domain.

Completeness4/5

The toolset covers core CRUD-like operations (create, read, edit) and analysis, providing a solid foundation for presentation workflows. A minor gap exists in deletion or more advanced editing features, but agents can work effectively with the current tools.

Maintenance

ActivityInactive
ResponsivenessNo issues