macOS MCP server for Microsoft PowerPoint for Mac — automate slide decks from Cursor and other MCP clients.
Project description
MacPoint
macOS MCP server for Microsoft PowerPoint for Mac — automate slide decks from Cursor, Claude, and other MCP clients.
MacPoint gives AI agents the ability to create, edit, and manage PowerPoint presentations on your Mac using the Model Context Protocol. Tool names and parameters are aligned with powerpoint-mcp (Windows/COM) for cross-platform agent compatibility.
What it does
- 11 MCP tools for PowerPoint automation (open, save, create from template, add slides, populate text, navigate, and more)
- AppleScript backend drives the live PowerPoint app (open, save, close, navigate slides)
- python-pptx backend handles on-disk edits (populate placeholders, add slides) without needing the app open
Install
pip install macpoint
Or with uv:
uv add macpoint
Configure Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"macpoint": {
"command": "macpoint",
"args": []
}
}
}
Restart Cursor after editing. On first use, macOS will ask you to grant Automation permission (Cursor → Microsoft PowerPoint) in System Settings → Privacy & Security → Automation.
Tools
| Tool | Status | What it does |
|---|---|---|
manage_presentation |
Working | Open, create (blank or from template), save, save_as, close |
populate_placeholder |
Working | Set plain text on named placeholders (python-pptx) |
add_slide_with_layout |
Working | Append a slide using a named layout |
switch_slide |
Working | Navigate to a slide by number (AppleScript) |
evaluate |
Safe | Returns guidance (does NOT execute arbitrary code) |
slide_snapshot |
Stub | Not yet implemented |
add_speaker_notes |
Stub | Not yet implemented |
list_templates |
Stub | Not yet implemented |
analyze_template |
Stub | Not yet implemented |
manage_slide |
Stub | Not yet implemented |
add_animation |
Stub | Not yet implemented |
Example: Create a deck from a template
manage_presentation(action="create", template_path="/path/to/template.potx", file_path="/path/to/new-deck.pptx")
add_slide_with_layout(template_name="", layout_name="Title and Content", after_slide=0)
populate_placeholder(placeholder_name="Title", content="Hello World", slide_number=1)
manage_presentation(action="save")
Requirements
- macOS (AppleScript is Mac-only)
- Microsoft PowerPoint for Mac (installed and launchable)
- Python 3.10+
Development
git clone https://github.com/AndrewIgdal17/macpoint.git
cd macpoint
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/macpoint
Support
If MacPoint saves you time, consider sponsoring the project.
Attribution
- API reference: Ayushmaniar/powerpoint-mcp (MIT). MacPoint is independent code for macOS.
- Microsoft PowerPoint is a trademark of Microsoft Corporation.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file macpoint-0.1.0.tar.gz.
File metadata
- Download URL: macpoint-0.1.0.tar.gz
- Upload date:
- Size: 22.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bb36a7d4e57f0dd3fda1dc8259c92425792d4c28af60e5085fa4e9604b467c2
|
|
| MD5 |
8da62c870965b968e876f373744a2095
|
|
| BLAKE2b-256 |
7087deacd1e756b7131e89340ce98aae2ce5b296564321ed0ab47ad5fa76b98f
|
Provenance
The following attestation bundles were made for macpoint-0.1.0.tar.gz:
Publisher:
publish.yml on AndrewIgdal17/macpoint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
macpoint-0.1.0.tar.gz -
Subject digest:
8bb36a7d4e57f0dd3fda1dc8259c92425792d4c28af60e5085fa4e9604b467c2 - Sigstore transparency entry: 1687915622
- Sigstore integration time:
-
Permalink:
AndrewIgdal17/macpoint@05141398d7a15200e0ceb800c1d1d88563f0e139 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AndrewIgdal17
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@05141398d7a15200e0ceb800c1d1d88563f0e139 -
Trigger Event:
push
-
Statement type:
File details
Details for the file macpoint-0.1.0-py3-none-any.whl.
File metadata
- Download URL: macpoint-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04cff3e2f3ce3f67b4c06e70810016655a703742e4f7b5b72245d47104015a3e
|
|
| MD5 |
d207a638ea6748aad4b7480e2fc50b8e
|
|
| BLAKE2b-256 |
c98020b4d3750de6e6d692a8a7739d109b5410b36d6b032a9156fcb14f38933f
|
Provenance
The following attestation bundles were made for macpoint-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on AndrewIgdal17/macpoint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
macpoint-0.1.0-py3-none-any.whl -
Subject digest:
04cff3e2f3ce3f67b4c06e70810016655a703742e4f7b5b72245d47104015a3e - Sigstore transparency entry: 1687916173
- Sigstore integration time:
-
Permalink:
AndrewIgdal17/macpoint@05141398d7a15200e0ceb800c1d1d88563f0e139 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AndrewIgdal17
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@05141398d7a15200e0ceb800c1d1d88563f0e139 -
Trigger Event:
push
-
Statement type: