Files
deckcraft/docs/mcp.md
T
Matúš LacoandClaude Opus 5.5 c871c5f634 Export: animated GIF of the deck (Export… dialog, CLI, MCP) (#171)
There was no way to turn a presentation into an animated GIF. file.export now writes one: format
`gif` (or a .gif path), one frame per slide drawn by the slide renderer and shown for
secondsPerSlide, encoded with the `image` crate's GIF encoder (already a dependency, no new
crates) with a 256-colour palette per frame: exact when a slide has 256 colours or fewer,
NeuQuant otherwise. Slides are composited onto white.

Options: width (small 640, medium 960 (default), large 1280, extraLarge 1920, or 16-3840 px; the
height follows the slide's aspect ratio, no side over 3840), secondsPerSlide (0.1-600, default 5,
written in GIF hundredths), loop (forever by default, or once: no NETSCAPE2.0 block), slides (a
list of indices, in play order) and includeHidden (hidden slides are skipped by default).
Out-of-range or wrongly typed values, NaN and infinities are BadParams errors, never panics; at
most 500 frames and 200 million pixels in total, checked before anything is rendered.

- Engine: crates/engine/src/gif_export.rs (options, frame list, size, encoder);
  cmd::file::gif_bytes, save_bytes("gif"), format_for_path(".gif").
- UI: the Export… dialog (Command palette; the app has no File menu yet) gets "Animated GIF (.gif)" with Size, Seconds per slide, From/To slide,
  Loop forever and Include hidden slides; an invalid range or value keeps the dialog open with a
  message. The web build downloads the bytes (image/gif).
- CLI: convert IN OUT.gif, run --export OUT.gif --export-params JSON; usage lists the format and
  options.
- MCP: the export tool lists gif and width/secondsPerSlide/loop (slides and includeHidden now
  apply to PDF and GIF).
- Docs: file-format parity GIF row, gaps (video export remains), parity checklist row M -> P
  (P2 breadth 36% -> 37%, overall 79%), control protocol, MCP, README, ROADMAP progress log.

Transitions and build animations are not animated in the GIF (tracked with video export).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 23:00:33 +02:00

2.0 KiB

MCP server

deckcraft-cli mcp runs a Model Context Protocol server on stdio. By default it drives its own headless engine (no window); with --connect PORT it drives a running DeckCraft started with --control PORT, so an agent and a person can work on the same deck. --sample opens the sample deck.

{
  "mcpServers": {
    "deckcraft": { "command": "deckcraft-cli", "args": ["mcp", "--connect", "7990"] }
  }
}

Tools

Tool What it does
list_commands Every command (id, label, menu, shortcut, params doc), optionally filtered
run_command Run one command: {command, params} — every menu item, ribbon button and gesture is a command
batch Run several commands in order and stop at the first error
new_presentation, open_presentation, save_presentation, export Files: native .deckcraft, PowerPoint .pptx, PDF (slides, notes pages, handouts), PNG/JPEG, outline, animated GIF (size, seconds per slide, loop, slides)
inspect_document, inspect_slide Structure of the deck / one slide (shapes, text, placeholders, animations)
render_slide A slide as an image the model can look at
add_slide, go_to_slide Slides by layout
add_shape, add_text_box, set_text Shapes and text
insert_picture, insert_table, insert_chart Content
select, pointer, select_tool, key, type_text The same selection, mouse and keyboard paths as the UI
screenshot The whole window, UI included (connected mode)
call_app Any control protocol method (connected mode)

Useful commands for building decks: slide.new {layout, title, body}, shape.insert {preset, rect, text}, shape.connect {from, to, preset}, shape.freeform {points, closed, smooth}, shape.merge {op, ids}, format.*, design.theme, transition.set, animation.set, chart.*, table.*, file.export {path, layout} (PDF) or {path, width, secondsPerSlide, loop} (GIF). deckcraft-cli describe ID prints any command's parameters.