# keynote-mcp
## 基本信息
- Slug: `betancur-keynote-mcp`
- Source: modelscope
- Publisher: @betancur/keynote-mcp
- Categories: app-automation / content-management-systems
- Hosted: No
- License: MIT License
- Source URL: https://www.modelscope.cn/mcp/servers/@betancur/keynote-mcp
## 简介
暂无描述。
## 安装提示

```bash
git clone https://github.com/betancur/keynote-mcp.git cd keynote-mcp
```

## MCP Server 详情

# Keynote-MCP

A Model Context Protocol (MCP) server that enables AI assistants to control Keynote presentations through AppleScript automation.

> ** This is an enhanced fork** featuring modular architecture, theme-aware content management, and comprehensive documentation improvements.

## Features
- **Presentation Management**: Create, open, save, close presentations  
- **Slide Operations**: Add, delete, duplicate, move slides
- **Theme-Aware Content**: Professional content placement using Keynote's design elements
- **Modular Architecture**: Maintainable codebase with specialized AppleScript modules
- **Export Functions**: Screenshots, PDF export

## Quick Setup

1. **Clone the repository**
   ```bash
   git clone https://github.com/betancur/keynote-mcp.git
   cd keynote-mcp
   ```

2. **Install dependencies**
   ```bash
   pip install -r requirements.txt
   ```

3. **Grant macOS permissions**
   - System Preferences > Security & Privacy > Privacy
   - Add Terminal and Python to **Accessibility** permissions  
   - Add Python to **Automation** permissions for Keynote

4. **Configure Claude Desktop**
   Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
   ```json
   {
     "mcpServers": {
       "keynote": {
         "command": "python3",
         "args": ["/path/to/keynote-mcp/mcp_server.py"]
       }
     }
   }
   ```

5. **Test the server**
   ```bash
   python3 test_server.py
   ```

> **Note**: Make sure Keynote is installed and you have appropriate permissions for automation.

## Available Tools (26 total)

### Presentation Management
- `create_presentation` - Create new presentation
- `open_presentation` - Open existing presentation  
- `save_presentation` - Save presentation
- `close_presentation` - Close presentation

### Slide Operations
- `add_slide` - Add new slide
- `delete_slide` - Delete slide
- `duplicate_slide` - Copy slide
- `move_slide` - Reorder slides

### Content Management
- `add_text_box` - Add text to slide
- `add_image` - Add image to slide
- `set_slide_content` -  Set content using theme elements (recommended)
- `get_slide_default_elements` -  Check available theme elements

### Export & Capture
- `screenshot_slide` - Take slide screenshot
- `export_pdf` - Export as PDF

### Theme-Aware Features
Our latest update includes **theme-aware content management** that uses Keynote's built-in design elements for professional-looking presentations with consistent styling.

##  Documentation

Comprehensive documentation is available in the [`docs/`](./docs/) directory:

- **[ Documentation Index](./docs/README.md)** - Complete documentation overview
- **[ Modular Architecture](./docs/MODULAR_ARCHITECTURE.md)** - AppleScript modular structure
- **[ Theme-Aware Content](./docs/THEME_AWARE_CONTENT.md)** - Best practices for theme elements
- **[ Project Roadmap](./docs/ROADMAP.md)** - Future development plans and features

### Quick Links
- **Getting Started**: Follow the Quick Setup section above
- **For Developers**: [Modular Architecture](./docs/MODULAR_ARCHITECTURE.md)
- **Best Practices**: [Theme-Aware Content](./docs/THEME_AWARE_CONTENT.md)

##  Usage Examples

### Theme-Aware Content (Recommended)
```python
# Create new presentation
result = await call_tool("create_presentation", {
    "name": "My Presentation"
})

# Add slide with theme-aware content
result = await call_tool("add_slide", {
    "title": "Welcome", 
    "layout": "Title & Content"
})

# Set content using theme elements (automatic positioning & styling)
result = await call_tool("set_slide_content", {
    "title": "Project Overview",
    "subtitle": "Q4 2024 Results", 
    "bullet_points": ["Revenue up 15%", "New markets entered", "Team expansion"]
})

# Check what theme elements are available
result = await call_tool("get_slide_default_elements", {"slide_number": 1})
```

### Manual Content Placement
```python
# Add text to specific position
result = await call_tool("add_text_box", {
    "text": "Custom positioned text",
    "x": 100,
    "y": 200
})

# Add image with precise placement
result = await call_tool("add_image", {
    "image_path": "/path/to/image.jpg",
    "x": 300,
    "y": 150
})
```

##  What's New in This Fork

This enhanced version includes significant improvements over the original:

###  **Major Enhancements**
- ** Modular Architecture**: Split monolithic AppleScript into 5 specialized modules for better maintainability
- ** Theme-Aware Content**: Smart content placement using Keynote's built-in design elements
- ** Comprehensive Documentation**: Complete guides in the `docs/` folder
- ** Enhanced Integration**: Improved Python-AppleScript modular execution
- ** Internationalization**: All Chinese comments translated to English

###  **Key Benefits**
- **Professional Results**: Theme-aware functions create presentations with consistent styling
- **Better Performance**: Modular loading only loads necessary AppleScript code
- **Easier Maintenance**: Specialized files for different functionality areas
- **Developer Friendly**: Complete documentation and architecture guides

> **Credits**: This fork is based on the original [keynote-mcp](https://github.com/easychen/keynote-mcp) by [@easychen](https://github.com/easychen). We've enhanced it with modern architecture and professional content management features.

## License
MIT License

