MCP Server

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.

ToolPurpose
generate_presentationSubmit 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_pptxConvert 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_opfValidate an OPF document against the canonical schema. Always free — use before generate_presentation to catch schema errors client-side.
render_formatRender a .pptx to web slide data (text runs per slide). svg and png are not implemented and return a not_implemented error.
upload_deckStore 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_decksList stored decks, most recently updated first, with storage usage and limits.
get_deckRead a stored deck's metadata and its versions.
download_deckDownload a stored version as base64 bytes (up to 10 MiB inline; use a share link for larger files).
delete_deckDelete a stored deck with every version and share link.
create_deck_share_linkCreate an expiring download link that needs no account; the URL is shown once.
list_deck_share_linksList a deck's share links (tokens are never shown again).
revoke_deck_share_linkRevoke a share link; its URL stops working at once.
import_dataTurn 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_decksDiff 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_patchApply 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_deckLint, design and accessibility audit, and font report for an OPF deck (beta).
check_fontsFont 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

URL
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:

HTTP
Authorization: Bearer ak_your_clerk_api_key

Claude Desktop (remote via mcp-remote)

Claude Desktop speaks stdio only — bridge with mcp-remote.

JSON
{
  "mcpServers": {
    "pptx": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.pptx.dev/mcp",
        "--header",
        "Authorization: Bearer ak_your_clerk_api_key"
      ]
    }
  }
}

Cursor (remote)

JSON
{
  "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.

YAML
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:

JSON
{
  "$schema": "https://openpresentation.org/schema/opf/v1",
  "name": "Q1 Review",
  "filename": "q1-review",
  "slides": [{ "title": "Q1 Review" }]
}