Skip to main content

MCP server for PPTX presentation editing — create, read, and edit PowerPoint slides with professional formatting

Project description

pptx-mcp-server

MCP server for creating, reading, and editing PowerPoint (.pptx) presentations. Provides 25 tools for slide management, shape/text manipulation, table operations, composite layouts, and slide rendering -- all accessible via the Model Context Protocol.

Installation

pptx-mcp-server ships with two install paths: a minimal library install for driving the engine programmatically, and an [mcp] extra for running the MCP server CLI.

# Library usage (no MCP runtime — only python-pptx + lxml):
pip install pptx-mcp-server

# MCP server (includes the mcp SDK):
pip install 'pptx-mcp-server[mcp]'

The MCP SDK lives behind the [mcp] extra so that pure-library consumers do not pay for the MCP SDK + anyio transitive dependencies at install time. The pptx-mcp-server CLI and pptx_mcp_server.server module require the [mcp] extra; importing them without it raises a clear ImportError pointing back here.

Claude Desktop Configuration

Add the following to your Claude Desktop MCP config (claude_desktop_config.json):

{
  "mcpServers": {
    "pptx-editor": {
      "command": "pptx-mcp-server"
    }
  }
}

Or, if running from source:

{
  "mcpServers": {
    "pptx-editor": {
      "command": "python",
      "args": ["-m", "pptx_mcp_server"]
    }
  }
}

Use as a Python library

pptx-mcp-server also ships a pure-Python engine you can drive directly, without starting an MCP server. The engine and theme modules have no dependency on the MCP SDK at import time, so you can build decks from scripts, notebooks, or batch jobs.

Install it the same way you would any other package — the bare install does not pull the MCP SDK:

# From PyPI (once published) — library only:
pip install pptx-mcp-server

# From a local checkout (editable install during development):
pip install -e /path/to/pptx-mcp-server

Then compose a deck by calling the engine functions directly:

from pptx_mcp_server.engine.pptx_io import create_presentation, open_pptx
from pptx_mcp_server.engine.shapes import add_textbox
from pptx_mcp_server.engine.slides import add_slide
from pptx_mcp_server.theme import MCKINSEY

out = "deck.pptx"
create_presentation(out, width_inches=13.333, height_inches=7.5)
add_slide(out, layout_index=6)
add_textbox(
    out,
    slide_index=0,
    left=1.0, top=1.0, width=10.0, height=1.0,
    text="Hello from pptx_mcp_server",
    font_name=MCKINSEY.fonts.get("body", "Arial"),
    font_size=24,
    bold=True,
)

prs = open_pptx(out)
print(f"Slides: {len(prs.slides)}")

The mcp SDK is an optional extra (pip install 'pptx-mcp-server[mcp]') and is only required when launching the pptx-mcp-server CLI / importing pptx_mcp_server.server. Nothing in pptx_mcp_server.engine or pptx_mcp_server.theme imports it — an AST-level CI guardrail in tests/test_library_usage.py enforces that, and tests/test_packaging_extras.py enforces the packaging side of the split.

Tools

Presentation

Tool Description
pptx_create Create a new blank PPTX file (default 16:9 widescreen)
pptx_get_info Get presentation overview: slide count, dimensions, shape summaries
pptx_read_slide Read detailed content of a slide -- all shapes, text, tables
pptx_list_shapes List all shapes on a slide with indices, types, positions, text preview

Slides

Tool Description
pptx_add_slide Add a new slide with a specified layout
pptx_delete_slide Delete a slide by 0-based index
pptx_duplicate_slide Duplicate a slide (appended at end)
pptx_set_slide_background Set solid background color for a slide
pptx_set_dimensions Set presentation slide dimensions in inches

Text & Shapes

Tool Description
pptx_add_textbox Add a text box with full formatting options
pptx_edit_text Edit text content and formatting in an existing shape
pptx_add_paragraph Append a new paragraph to an existing shape
pptx_add_shape Add an auto shape (rectangle, oval, arrow, chevron, etc.)
pptx_add_image Add an image (PNG, JPG, SVG) to a slide with optional sizing
pptx_delete_shape Delete a shape from a slide by index
pptx_format_shape Reposition, resize, or restyle an existing shape

Tables

Tool Description
pptx_add_table Add a professionally formatted table with headers and alternating rows
pptx_edit_table_cell Edit a single table cell's text and formatting
pptx_edit_table_cells Batch edit multiple table cells
pptx_format_table Apply bulk formatting to an entire table

Composites

Tool Description
pptx_add_content_slide Add a content slide with action title, divider, footnote, page number
pptx_add_section_divider Add a section divider slide with dark background and accent stripes
pptx_add_kpi_row Add a row of KPI callout boxes
pptx_add_bullet_block Add a bulleted text block with multiple items

Rendering

Tool Description
pptx_render_slide Render slide(s) to PNG via LibreOffice for visual verification

Dependencies

Required (installed by pip install pptx-mcp-server):

Optional extra (installed by pip install 'pptx-mcp-server[mcp]'):

  • mcp -- Model Context Protocol SDK (required only for the pptx-mcp-server CLI / pptx_mcp_server.server)

System tools

  • LibreOffice -- required for pptx_render_slide (PPTX to PDF conversion). Install with brew install --cask libreoffice (macOS) or your system package manager.
  • pdftoppm (poppler-utils) -- required for pptx_render_slide (PDF to PNG conversion). Install with brew install poppler (macOS) or apt install poppler-utils (Debian/Ubuntu).

Development

# Install in editable mode
pip install -e .

# Run tests
python -m pytest tests/ -v

See CONTRIBUTING.md for development conventions.

License

MIT -- see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pptx_mcp_server-0.1.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pptx_mcp_server-0.1.0-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file pptx_mcp_server-0.1.0.tar.gz.

File metadata

  • Download URL: pptx_mcp_server-0.1.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pptx_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bbe88af6ec5b9bb99940160a6583813949ed557ba4394ce47ee5aa7731e33f8a
MD5 1639edd9a0aa2f8b0dc57bdc10c9681f
BLAKE2b-256 40f37734a85990e595d65e87e351eda45161cb10571f3dac12fa0933bc89d235

See more details on using hashes here.

Provenance

The following attestation bundles were made for pptx_mcp_server-0.1.0.tar.gz:

Publisher: publish.yml on knorq-ai/pptx-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pptx_mcp_server-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pptx_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 af66b884a53002a74795ef3744a6b717f33b65d16273c51d4ca2cdaa1fd75f0b
MD5 ee8ce81ab32c4f137801063f3844e20a
BLAKE2b-256 382f227c503329ef811a9205f306ba8706d925bd4f0d0cf000309829071bcda6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pptx_mcp_server-0.1.0-py3-none-any.whl:

Publisher: publish.yml on knorq-ai/pptx-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page