home / mcp / keynote mcp server
A Model Context Protocol (MCP) server that enables AI assistants to control Keynote presentations through AppleScript automation.
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.
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.
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 KeynoteConfigure 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"]
}
}
}Once the configuration is in place, start by testing the server to ensure it is responsive and ready to receive commands.
python3 test_server.pyCreate a new Keynote presentation with a given name.
Open an existing Keynote presentation by path.
Save the currently open presentation to disk.
Close the active presentation.
Add a new slide to the current presentation, with a specified title or layout.
Delete a slide by its index or identifier.
Create a copy of an existing slide.
Reorder slides within the presentation.
Add a text box to a slide with specified text content.
Insert an image onto a slide at a specified position.
Set content on a slide using theme elements for automatic styling and placement.
Query available theme elements on a specific slide.
Capture a screenshot of a slide.
Export the current presentation or slides to PDF.