Hosted MCP beta for Claude, Cursor, Continue, and more
Connect to the hosted endpoint at https://www.pptx.dev/mcp today. No local stdio package or Docker image is published, so the hosted endpoint is the only supported way to connect. It exposes the same tool shape as the REST API.
This page is also served at pptx.dev/mcp for bookmarking and sharing.
Tools
Each tool runs the matching REST endpoint with your API key, so auth, limits and usage are the same as over HTTP. Tools accept JSON documents or base64 file bytes; the hosted server does not read filesystem paths.
| Tool | Purpose |
|---|---|
| generate_presentation | Submit an OPF document to pptx.dev. PPTX returns base64 PowerPoint bytes plus filename and slide metadata; PDF/PNG/SVG are not implemented and return a not_implemented error. |
| parse_pptx | Convert a .pptx file into OPF JSON (or return a parseId for per-slide reads). Takes the file as base64 bytes; the hosted server does not read filesystem paths. |
| validate_opf | Validate an OPF document against the canonical schema. Always free — use before generate_presentation to catch schema errors client-side. |
| render_format | Render a .pptx to web slide data (text runs per slide). svg and png are not implemented and return a not_implemented error. |
| upload_deck | Store a .pptx or OPF JSON file (base64) in deck storage as a new deck, or as a new version of an existing deck (beta). |
| list_decks | List stored decks, most recently updated first, with storage usage and limits. |
| get_deck | Read a stored deck's metadata and its versions. |
| download_deck | Download a stored version as base64 bytes (up to 10 MiB inline; use a share link for larger files). |
| delete_deck | Delete a stored deck with every version and share link. |
| create_deck_share_link | Create an expiring download link that needs no account; the URL is shown once. |
| list_deck_share_links | List a deck's share links (tokens are never shown again). |
| revoke_deck_share_link | Revoke a share link; its URL stops working at once. |
| import_data | Turn CSV, TSV, JSON or .xlsx data into an OPF table or chart: a new one-slide document, a slide appended to your document, or a table/chart at a path (beta). |
| diff_decks | Diff two OPF decks, inline or stored: slide matches, categorized changes, a summary, a text report and an RFC 6902 patch from a to b (beta). |
| apply_patch | Apply an RFC 6902 patch to an OPF deck atomically, validated, with the inverse patch for undo; can store the result as a new version (beta). |
| lint_deck | Lint, design and accessibility audit, and font report for an OPF deck (beta). |
| check_fonts | Font policy, open replacements and viewer diagnostics for the families an OPF deck, a .pptx or a list names (beta). |
Hosted (remote)
No install is needed: use HTTP streaming MCP against our hosted endpoint (same Clerk API key as the REST API).
Endpoint URLs
https://www.pptx.dev/mcp
Alias: https://mcp.pptx.dev (host rewrite to the same handler).
Send your Clerk API key as a bearer token:
Authorization: Bearer ak_your_clerk_api_key
Claude Desktop (remote via mcp-remote)
Claude Desktop speaks stdio only — bridge with mcp-remote.
{
"mcpServers": {
"pptx": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://www.pptx.dev/mcp",
"--header",
"Authorization: Bearer ak_your_clerk_api_key"
]
}
}
}Cursor (remote)
{
"mcpServers": {
"pptx": {
"url": "https://www.pptx.dev/mcp",
"headers": {
"Authorization": "Bearer ak_your_clerk_api_key"
}
}
}
}Continue (remote via mcp-remote)
Use the same stdio bridge as Claude Desktop, or place the snippet in .continue/mcpServers/ per Continue MCP docs.
name: pptx MCP (remote)
version: 0.0.1
schema: v1
mcpServers:
- name: pptx
command: npx
args:
- "-y"
- "mcp-remote"
- "https://www.pptx.dev/mcp"
- "--header"
- "Authorization: Bearer ak_your_clerk_api_key"API keys
The bearer token / PPTX_API_KEY is your Clerk API key. Required for every tool except validate_opf, which is free. Get a key from the API Keys page.
Example prompt
Once configured, ask your agent something like:
“Generate a pptx with one title slide that says ‘Q1 Review’ and return the generated PPTX bytes.”
The agent calls generate_presentation with an OPF document like:
{
"$schema": "https://openpresentation.org/schema/opf/v1",
"name": "Q1 Review",
"filename": "q1-review",
"slides": [{ "title": "Q1 Review" }]
}