MCP Server

pptx-mcp for Claude, Cursor, and any MCP client

Let AI agents generate, parse, validate, and render PowerPoint presentations natively. Runs locally via npx pptx-mcp or remotely at mcp.pptx.dev. Built on the TypeScript SDK.

Tools

Four tools, matched 1:1 to the REST surface. All accept JSON documents or base64 file bytes; file-oriented tools also accept absolute filesystem paths when running locally.

ToolPurpose
generate_presentationSubmit an OPF document to pptx.dev. Returns a 202-accepted envelope with job status, slide count, and any validation warnings.
parse_pptxConvert a .pptx file into OPF JSON (or return a parseId for per-slide reads). Accepts absolute filesystem paths or base64 data.
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 (interactive HTML), svg, or png. web returns slide data + a viewerUrl; svg/png return a 202 job acknowledgement.

Local (stdio)

No install step — Claude Desktop and Cursor spawn the server with npx.

Shell
npx pptx-mcp

Claude Desktop

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json) and restart Claude.

JSON
{
  "mcpServers": {
    "pptx": {
      "command": "npx",
      "args": ["-y", "pptx-mcp"],
      "env": {
        "PPTX_API_KEY": "ppx_your_key_here"
      }
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json or a project-local .cursor/mcp.json. Cursor picks up changes without a restart.

JSON
{
  "mcpServers": {
    "pptx": {
      "command": "npx",
      "args": ["-y", "pptx-mcp"],
      "env": {
        "PPTX_API_KEY": "ppx_your_key_here"
      }
    }
  }
}

Remote (HTTP streaming)

For clients that support the HTTP-streaming MCP transport, point at:

URL
https://mcp.pptx.dev

Send your API key as a bearer token:

HTTP
Authorization: Bearer ppx_your_key_here

Environment variables

VariablePurpose
PPTX_API_KEYBearer token for api.pptx.dev. Required for every tool except validate_opf.
PPTX_API_BASE_URLOverride base URL (defaults to https://api.pptx.dev). Useful for dev / staging.

Get your API key from the API Keys page.

Programmatic use

Build your own transport (SSE, WebSocket, custom HTTP) around the shared server factory:

TypeScript
import { createPptxMcpServer } from "pptx-mcp";

const server = createPptxMcpServer({
  apiKey: process.env.PPTX_API_KEY,
});

// Connect any @modelcontextprotocol/sdk transport
await server.connect(myTransport);

Example prompt

Once configured, ask your agent something like:

“Generate a pptx with one title slide that says ‘Q1 Review’ and give me the job metadata.”

The agent calls generate_presentation with an OPF document like:

JSON
{
  "$schema": "https://pptx.dev/schema/opf/v1",
  "version": "1.0",
  "meta": { "title": "Q1 Review" },
  "design": { "theme": "corporate-minimal" },
  "slides": [
    {
      "id": "title",
      "layout": "title-slide",
      "elements": [
        { "id": "h1", "type": "text", "content": { "text": "Q1 Review" } }
      ]
    }
  ]
}