v2.0 · AGPL-3.0 · Open source

Technical spec.
Built in the open.

MCP configuration, syntax reference, and the architecture under the hood — all the technical detail engineers need to integrate, extend, or self-host deckhost.

Star on GitHub npm i -g deckhost
🤖 Advanced AI Orchestration

Model Context Protocol (MCP)

Connect deckhost as an MCP server to Claude Desktop or Claude Code so the AI can read, edit, animate, and deploy presentation files directly inside the chat conversation.

Recommended

Automated setup route

One command. Auto-detects Claude Desktop & Claude Code, writes the config, and registers the server.

bash
deckhost install-mcp

Or configure manually

macOS ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "deckhost": {
      "command": "node",
      "args": [
        "/Users/you/deckhost/mcp-server/index.js"
      ]
    }
  }
}
Windows %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "deckhost": {
      "command": "node",
      "args": [
        "C:\Users\you\deckhost\mcp-server\index.js"
      ]
    }
  }
}

Restart Claude Desktop after writing the file. Run deckhost mcp --status to verify the connection.

🛠️ Reference Matrix Sheets

The full grammar at a glance

Tool surface, syntax dictionary, and import-compat map — everything you can call, write, or migrate.

Available MCP Tools Directory

Structural execution endpoints exposed to MCP clients.

Tool Category Purpose
create_presentation Author Create a new presentation from a prompt or template.
read_markdown Author Read an existing presentation file.
write_markdown Author Create or update a presentation file.
serve Runtime Start the dev server with live preview & hot reload.
build Runtime Build static HTML for production deployment.
publish Runtime Publish a presentation to deckhost.com cloud spaces.
get_syntax_help Meta Return the full deckhost syntax reference inline.
Extended Syntax Spec Sheets

Dynamic movement fragments, canvas overrides, and inline emphasis primitives.

Dynamic movement fragments (prefix list items)
^^^ Fade up
vvv Fade down
---> Fade right
<--- Fade left
+++ Grow
... Shrink
~~~ Strikethrough
>> Basic fade-in
>>red Highlight (red)
>>green Highlight (green)
>>blue Highlight (blue)
**>>red**…**>>** Inline bold-style highlight
Canvas style overrides (top of slide)
::: #hex Solid color background
::: linear-gradient(...) CSS gradient (any direction/stops)
::: https://image.png Image URL background
::: /path/local.png Local image path
::: opacity:0.3 Image opacity overlay
Technical markdown
$x$ / $$x$$ Inline / block LaTeX (KaTeX)
text[^1] Footnotes (slide-scoped)
Term\n: Def Definition lists
*[ABBR]: def Slide-scoped abbreviation tooltips
The preprocessor treats ... as a text-shrink animation. Use the single-character (U+2026) for ellipsis text.
Marp Compatibility Layer

Automatic conversion of legacy Marp directives on import.

Already have presentations built with Marp? deckhost detects marp: true in the YAML frontmatter and maps common Marp directives to deckhost equivalents on import. No rewriting — just drop your file in and it renders with the full deckhost engine: animations, themes, hosted publishing, AI integration.

Marp directive deckhost equivalent
marp: true (frontmatter) Triggers compatibility mode
backgroundColor / _backgroundColor ::: #hex
backgroundImage / _backgroundImage ::: https://... + ::: opacity:N
theme: default / gaia Mapped to closest deckhost preset
paginate: true Built-in slide counter (always on)
--- (slide separator) Same separator semantics preserved
📐 Architecture Stack

What's under the hood

Three layers, each independently swappable: the renderer, the local CLI, and the canonical language spec.

Presentation Core

Custom virtual renderer. Browser-side, zero-build for end users.

  • React 19 Custom slide renderer
  • Framer Motion Slide transitions & fragment dynamics
  • KaTeX Scientific math execution
  • Highlight.js Syntax color wrappers
  • Tailwind CSS v4 Styling pipeline
  • Vite 7 Bundler & HMR dev server

CLI Backend Environment

Local-first. Asynchronous task workflows with file watching.

  • Node.js ≥ 18 Runtime baseline
  • chokidar Cross-platform file watching
  • MCP server Bidirectional Claude integration
  • Marp preprocessor Legacy frontmatter conversion
  • Static HTML output Self-host on any CDN

Language API Endpoint

Active JSON system definition. Canonical source of truth for the grammar.

GET /api/v1/spec.json
  • Versioned schema (semver)
  • Every fragment, directive, & flag enumerated
  • Consumed by IDE plugins & AI integrations

How deckhost compares

Head-to-head with the leading markdown-based slide tools.

Slidev Marp 🚀 deckhost
Framework Vue 3 Vanilla React 19
Hosted publishing deckhost.com
AI integration (MCP) Built-in
Fragment animations Basic 12+ types
LaTeX math Plugin Plugin Built-in (KaTeX)
One-command publish deckhost publish
Marp import N/A Auto-detected
Cross-slide editing API Limited MCP read/write

Spec facts

The numbers and footprint detail engineers usually need before adopting.

Bundle size
~454 kB
gzipped JS, viewer bundle
License
AGPL-3.0
Source-available, copyleft
Node baseline
≥ 18
ESM-only CLI
Render frame
60 fps
Framer Motion w/ GPU compositor
Animation styles
12+
Fragments + inline emphasis
Math/code
KaTeX + HLJS
20+ syntax languages
Browser support
Evergreen
Chrome, Firefox, Safari, Edge
Self-host output
Static HTML
Drop on any CDN or S3 bucket

Want to skip deckhost.com entirely?

The hosted service is a convenience — not a requirement. deckhost build generates self-contained static HTML you can deploy anywhere. Netlify, GitHub Pages, S3, your own nginx box, an intranet share — the output works offline and has zero runtime dependencies.

bash
# Generate static HTML you can host anywhere
deckhost build

# Output: ./dist/  (index.html + assets/, no runtime deps)
ls dist/

Build with us.

Issues, PRs, plugins, and forks all welcome. AGPL-3.0 licensed — what we build together stays open.