home / mcp / keynote mcp server

Keynote MCP Server

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

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "betancur-keynote-mcp": {
      "command": "python3",
      "args": [
        "/path/to/keynote-mcp/mcp_server.py"
      ]
    }
  }
}

You can control Keynote presentations programmatically through this MCP server, enabling AI assistants to create, modify, and export slides via AppleScript automation. This server bridges your automation workflows with Keynote, offering theme-aware content placement, modular execution, and convenient export options to streamline professional presentations.

How to use

To use this MCP server, run it in your environment and connect with an MCP client that can send function calls. You can create a new presentation, open or save existing files, and perform slide operations such as adding, moving, duplicating, or deleting slides. For content-rich slides, you can insert text boxes or images, or use theme-aware content to place content with consistent styling. You can also export slides as screenshots or PDFs and leverage the modular AppleScript execution to keep the workflow fast and maintainable.

How to install

Prerequisites you need before installing the MCP server are Python 3 and macOS with Keynote installed.

Step-by-step setup you can follow:

# 1) Clone the MCP server repository
git clone https://github.com/betancur/keynote-mcp.git
cd keynote-mcp

# 2) Install Python dependencies
pip install -r requirements.txt

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

Additional notes

Configure the client (Claude Desktop) to point to the MCP server by editing the configuration to include the Python command and the path to the server script. The following snippet shows the required structure.

{
  "mcpServers": {
    "keynote": {
      "command": "python3",
      "args": ["/path/to/keynote-mcp/mcp_server.py"]
    }
  }
}

Test the server

Once the configuration is in place, start by testing the server to ensure it is responsive and ready to receive commands.

python3 test_server.py

Available tools

create_presentation

Create a new Keynote presentation with a given name.

open_presentation

Open an existing Keynote presentation by path.

save_presentation

Save the currently open presentation to disk.

close_presentation

Close the active presentation.

add_slide

Add a new slide to the current presentation, with a specified title or layout.

delete_slide

Delete a slide by its index or identifier.

duplicate_slide

Create a copy of an existing slide.

move_slide

Reorder slides within the presentation.

add_text_box

Add a text box to a slide with specified text content.

add_image

Insert an image onto a slide at a specified position.

set_slide_content

Set content on a slide using theme elements for automatic styling and placement.

get_slide_default_elements

Query available theme elements on a specific slide.

screenshot_slide

Capture a screenshot of a slide.

export_pdf

Export the current presentation or slides to PDF.