Skip to main content

🖌️ KitchenSink4PPT

Tests PyPI License: AGPL-3.0

Landing page · llms.txt (machine-readable capability manifest for agents and LLM crawlers)

A full-featured PowerPoint (.pptx) MCP server: slides, text, native vector diagrams your hands can still move, structural tables, charts, speaker notes, and render-to-verify export, with budgeted reads that never flood a conversation. 142 tools. Works with Claude Code, Claude Desktop, Cursor, and any MCP client. Part of the KitchenSink4AI suite with kitchensink4word (Word), kitchensink4xl (Excel), and kitchensink4web (browser).

Not affiliated with, endorsed by, or sponsored by Microsoft Corporation. Microsoft and PowerPoint are trademarks of the Microsoft group of companies. Dual-licensed: AGPL-3.0, or a commercial license for organizations that need to ship it in closed products (details).

Everything plus the kitchen sink for Microsoft PowerPoint: an MCP server for .pptx files, engineered not to corrupt. Slides, text, tables, charts, notes, export, and the one thing no other server in the ecosystem does: arbitrary vector graphics as native, editable PowerPoint shapes.

New here? Start with the Quickstart.

The headline: real graphics, not pictures of graphics

Feed svg_to_shapes any SVG and it compiles into a grouped tree of NATIVE PowerPoint shapes: custom geometry, gradients, strokes, text, nested groups. No rasterizing, no external APIs, no PowerPoint install needed to build. Every shape keeps its own id, so afterward you edit the diagram semantically: recolor node 7, resize the box, rewrite its label.

Connectors are GLUED. Move the node and the arrows follow, exactly as if a person had drawn the diagram by hand in PowerPoint. The human you hand the deck to can nudge any piece in seconds, with no regeneration round trip.

insert_shape (presets and freeform geometry), insert_connector (straight, elbow, curved, arrowheads), group_shapes, align_shapes, distribute_shapes, and set_z_order cover from-scratch diagram building; export_slide_image renders a PNG so the agent can look at what it made and fix it.

Install

Claude Desktop: one click

Download kitchensink4ppt.mcpb from the latest release and double-click it, or drag it into the Claude Desktop window. Desktop adds it as an extension and the sink is connected. Nothing to type, nothing to configure. The bundle launches the server with uv, so uv needs to be on your PATH (pip install uv); if Desktop does not pick the file up on a double-click, use Settings > Extensions > Advanced settings > Install extension.

Claude Code: one line

claude mcp add powerpoint -s user -- uvx kitchensink4ppt

That fetches and runs the server for you, so there is nothing to install first.

For developers: pip, source, other MCP clients

Install the package and point any MCP client at the executable:

pip install kitchensink4ppt
{"mcpServers": {"powerpoint": {"command": "kitchensink4ppt"}}}

The ppt-mcp executable is an equivalent entry point. From a clone:

git clone https://github.com/KitchenSink4AI/KitchenSink4PPT
cd KitchenSink4PPT
python -m venv .venv
.venv\Scripts\pip install -e .
claude mcp add powerpoint -s user -- <absolute-path>\.venv\Scripts\ppt-mcp.exe

Requires Python 3.12+. Everything file-based runs on any OS; PDF and image export prefer PowerPoint via COM on Windows and fall back to LibreOffice headless where available. Nothing ever needs a network connection.

Tiered loading: start light, grow mid-session

The server starts in lite mode: 25 tools, roughly 5.5k tokens of tool context, covering reading, slide CRUD, text, hyperlinks, batch editing, backups, and diagnostics. The other 117 tools are registered but disabled until asked for:

enable_tools(packs=["graphics"])

The tool list grows in place (the server emits tools/list_changed and the client re-fetches), and the result reports the approximate token cost added so the tradeoff is visible. disable_tools shrinks the surface again, and get_workflows ships recipes that name the right pack for each job.

Environment pins for hosts and power users:

Variable Effect
KS4P_MODE startup surface: lite (default), full, or a pack list like graphics,com
KS4P_PACK_POLICY auto (default) or locked (enable_tools refuses; surface fixed at startup)
KS4P_ALL_TOOLS true loads every pack at startup; false or empty keeps lite. KS4P_MODE wins when set
KS4P_LOCK_TOOLS true fixes the surface at startup; false or empty leaves it adjustable. KS4P_PACK_POLICY wins when set
KS4P_ALLOWED_ROOTS opt-in path sandbox; tools refuse to touch files outside these roots
KS4P_UPDATE_CHECK off turns the update check off completely: no network call, no cache file (the older KS4P_NO_UPDATE_CHECK=1 still works)

Update check. The server looks for a newer release on PyPI only when you call diagnose, never at startup and never on a timer, at most one request every seven days, capped at two seconds. The check is a single plain HTTPS GET to pypi.org that sends nothing but the request itself. A failed check is reported with its reason rather than hidden. Set KS4P_UPDATE_CHECK=off to turn it off completely (the older KS4P_NO_UPDATE_CHECK=1 still works). The server never downloads or installs anything.

The last two are the checkboxes the .mcpb bundle shows in Claude Desktop: "Load every tool at startup" and "Lock the tool set at startup". Both take true or false, treat an empty value as off, and refuse to start on anything else rather than guessing. The server writes one line to stderr at startup naming what decided the surface.

Tip: in Claude Desktop's Tool permissions, set the Read-only tools group to Always Allow: those tools cannot change anything, and it stops most permission prompts.

Pack inventory (142 tools total)

Pack Tools ~Tokens What is in it
lite core (always on) 25 5.5k anchored deck view, atomic batch edits, get/find/replace text (live-aware, SmartArt text included), slide insert/delete/duplicate/reorder, placeholder text, hyperlinks (set/remove/list with broken-link detection), info and enumeration, copy, snapshots, backups, diagnose, workflows, enable/disable_tools
graphics 27 7.1k shapes, glued connectors, SVG compiler, one-call diagram generators (timeline, org chart, matrix, cycle, comparison), images, video/audio embed, groups, align/distribute, z-order, text boxes, run formatting, bullets, format painter (copy_format/copy_position), native LaTeX equations
tables-charts 19 4.1k create table, bulk cells, merge/unmerge, row and column insert/delete, borders and fills, widths/heights, 74 built-in styles, CSV/JSON export/import, bar/line/pie/scatter/combo charts with editable data workbooks, chart formatting and data readback
design 25 5.1k create presentation FROM template, apply layouts, theme read AND write (colors, fonts), brand extract/apply, layout guardrail checks, slide size, hide/move slide, autofit report, slide and master/layout backgrounds, full master and layout editing (placeholders, decoration shapes, create_layout), accessibility audit and repair
assembly-export 28 5.2k speaker notes, sections, footers and slide numbers, PDF/PNG/handout export, engine detection, opens-clean validation, text extraction, cross-deck slide copy, deck merge and split, agenda slides, deck statistics, document properties, anonymize, slide-show setup and custom shows, slide transitions (fade/push/wipe/split/cut/random, millisecond durations, auto-advance) and bounded entrance animations (appear/fade/wipe, click builds, by-paragraph)
review-sweeps 13 2.4k modern threaded comments (add, replies, resolve, cascade delete, dual-system listing), whole-deck review report, structural deck-to-deck diff (compare_decks), and the deck-wide sweeps: font inventory/replace (incl. charts and phantom declarations), color remap and literal-to-theme unification, proofing language, whole-deck logo replace, compress/purge
com (Windows only) 5 0.6k PowerPoint status and zombie process check, plus editing the deck while it is OPEN in the user's PowerPoint: explicit save, scroll-to-slide, session status; eleven file tools route here automatically via live='auto'

Full surface: about 29.9k tokens if you pin KS4P_MODE=full (numbers from scripts/measure_surface.py, not hand-math).

v1.1 consolidated nine packs into six. The v1.0 names transitions-animations, review, sweeps, and com-live still resolve to their new homes in enable_tools, disable_tools, and KS4P_MODE, so nothing that worked before stops working.

Structural table operations on the file itself (merging, inserting and deleting rows AND columns, per-edge borders) exist in no other PowerPoint MCP server; they were previously COM-or-nothing.

Safety story

The same discipline as KitchenSink4Word, applied from day one:

  • Atomic validated saves. Every mutation rebuilds the package in memory, validates the payload, then atomically replaces the file. A failed operation leaves the original byte-identical; the file is never absent from its own path, even for an instant.
  • Two-slot backups. Before each mutation the current content rotates into prev.pptx and anchor.pptx under a hidden .ks4p-backups/ folder. manage_backups lists, restores (undoably), and purges; create_snapshot makes DTG-stamped permanent keepers.
  • Byte-identical passthrough. Parts the tool did not touch are written back byte-for-byte, so themes, media, and animations survive edits to other slides untouched.
  • Conservative refusals. Ambiguous targets refuse with a candidate list (no first-match guessing), merged-cell surgery that would split a span refuses, stale batch anchors refuse the whole batch before anything mutates. Refusals are structured ({ok: false, error: {code, message, hint}}) and tell you the exact next call to make.
  • Sandboxing, opt-in. Set KS4P_ALLOWED_ROOTS and every path in and out is checked.
  • Locks. Mutations of one file are serialized in-process and across processes; files open in PowerPoint are refused rather than corrupted.

Maturity

Beta. The file layer (packages, slides, text, graphics, tables, charts, comments, animations, themes, links, media, notes, masters, equations, accessibility, deck assembly, sweeps, export) is covered by a 1,251-test suite, including validation that generated decks open clean in real PowerPoint, and the server passes a raw stdio protocol round-trip suite. Live editing of decks open in PowerPoint runs every call through one process-wide lock with dialog detection at the window layer and bounded timeouts, and ships with its own COM gate scripts (tests/com_gates/). It has not yet had a long field life; treat important decks with the respect the backup tools make easy, and expect fast point releases. Before filing: ask your AI to run diagnose and paste the output here; it is designed to be safe to share.

License

KitchenSink4PPT is dual-licensed:

AGPL-3.0 (open source). Free for anyone (individuals, academics, and businesses) for any use that complies with the AGPL's terms. Those terms include sharing source, including your modifications, when you distribute the software or make it available over a network.

Commercial license. For organizations that want to build KitchenSink4PPT into their own products or services without the AGPL's source-sharing obligations. Contact licensing@kitchensink4.ai.

Copyright (c) 2026 Alvut Consulting, LLC. KitchenSink4AI is a product line of Alvut Consulting, LLC.

Not affiliated with, endorsed by, or sponsored by Microsoft Corporation. Microsoft and PowerPoint are trademarks of the Microsoft group of companies.

Family

Sibling of KitchenSink4Word (the same engineering for .docx; site).

Download files

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

Source Distribution

kitchensink4ppt-1.2.2.tar.gz (464.7 kB view details)

Uploaded Source

Built Distribution

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

kitchensink4ppt-1.2.2-py3-none-any.whl (497.1 kB view details)

Uploaded Python 3

File details

Details for the file kitchensink4ppt-1.2.2.tar.gz.

File metadata

  • Download URL: kitchensink4ppt-1.2.2.tar.gz
  • Upload date:
  • Size: 464.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for kitchensink4ppt-1.2.2.tar.gz
Algorithm Hash digest
SHA256 7a79f4d67ca4033efa3aad48340226969aaeb17ae7b17e5d043bb60e74a31b3d
MD5 107ffba50097040138d789823ff6d2b9
BLAKE2b-256 aaf7024d697a5c45889b8c9a941f118fab2b29ad43332cf14a8a26e84edd3610

See more details on using hashes here.

Provenance

The following attestation bundles were made for kitchensink4ppt-1.2.2.tar.gz:

Publisher: publish.yml on KitchenSink4AI/KitchenSink4PPT

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

File details

Details for the file kitchensink4ppt-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: kitchensink4ppt-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 497.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for kitchensink4ppt-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bff9977299bc34d2dcd5ea6b135054333000cd38ece141f06cab3227025e2a0c
MD5 849afdd054d4c5307a88d22d84aaf289
BLAKE2b-256 d0a79a8907ce05a89e977535577c73ee82d65a5aebdde9570813e09da60b065b

See more details on using hashes here.

Provenance

The following attestation bundles were made for kitchensink4ppt-1.2.2-py3-none-any.whl:

Publisher: publish.yml on KitchenSink4AI/KitchenSink4PPT

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

Release history Release notifications | RSS feed

This release

1.2.2 This release

2 files

1.2.1

2 files

1.2.0

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page