Marp MCP Server

June 8, 2026 · View on GitHub

NPM Downloads

Tip

This package includes a Claude Code Skill. After installing, Claude Code can create Marp presentations via the /marp command using the built-in CLI — no MCP server configuration required!

Auto-updating plugin install:

/plugin marketplace add masaki39/marp-mcp
/plugin install marp@marp-mcp

An MCP server for creating and editing Marp presentations with AI assistance. This MCP server allows LLMs to edit Markdown files according to a specified layout, supporting the built-in Marp themes (default, Gaia, Uncover) and a rich set of academic and professional presentation styles.

⚙️ Setup

Claude Code

Option 1 — CLI, user scope (recommended):

claude mcp add marp-mcp -- npx -y @masaki39/marp-mcp@latest

Option 2 — CLI, project scope (shareable with team via .mcp.json):

claude mcp add --scope project marp-mcp -- npx -y @masaki39/marp-mcp@latest

Option 3 — Manual config (~/.claude/settings.json or .mcp.json):

{
  "mcpServers": {
    "marp-mcp": {
      "command": "npx",
      "args": ["-y", "@masaki39/marp-mcp@latest"]
    }
  }
}

Other MCP clients

{
  "mcpServers": {
    "marp-mcp": {
      "command": "npx",
      "args": ["-y", "@masaki39/marp-mcp@latest"]
    }
  }
}

Setting server default theme/style

Use -t / --theme and -s / --style args to set the server-wide default. Choose from themes: default, gaia, uncover. Styles: default, rich, minimal, dark, corporate, academic, tech:

{
  "mcpServers": {
    "marp-mcp": {
      "command": "npx",
      "args": ["-y", "@masaki39/marp-mcp@latest", "-t", "default", "-s", "rich"]
    }
  }
}

Omitting these flags defaults to default theme and default style.

External styles via marp-cli config

If a marp-cli configuration file (.marprc.{yml,yaml,json,js,cjs,mjs}, marp.config.{js,cjs,mjs}, or a marp field in package.json) is found anywhere up the directory tree at server start, every CSS file listed under its themeSet field is registered as an MCP style. The style name is read from the file's /* @theme NAME */ directive (lowercased). External entries reuse the active theme's layouts, so all existing tools work unchanged.

# .marprc.yml
themeSet:
  - ./themes/sample.css
/* themes/sample.css */
/* @theme sample */
section { background: #fff; }

sample is then a valid value for -s and shows up in list_themes_and_styles with "external": true and the absolute CSS path under source. Built-in style names are protected; any external collision is logged and skipped.

🛠️ Tools

ToolDescription
list_themes_and_stylesList all available themes and styles; shows current server defaults
list_layoutsList available slide layouts for a theme/style combination
create_presentationCreate a new presentation with frontmatter and title slide in one step
manage_slideInsert, replace, delete, or move slides using slide IDs (ID-based operations)
batch_manage_slidesApply multiple slide operations in one call (single file read/write)
set_frontmatterEnsure marp, theme, header, and paginate frontmatter fields are present
read_slideRead slide content by ID or list all slides with their IDs and positions
generate_slide_idsGenerate stable UUIDs for every slide (safe to re-run)
export_slideExport to HTML, PDF, or PPTX using marp-cli
generate_agendaAuto-generate an agenda slide; adds numbered icons to section slides for view-transition morphing (HTML only)
add_image_transitionInsert a full-screen background image slide before a target slide and tag images for view-transition morphing (HTML only)

Per-call theme/style override

list_layouts, manage_slide, and set_frontmatter accept optional theme and style parameters to override the server default for a single call. This lets one server instance handle all theme/style combinations without restarting:

{ "theme": "gaia", "style": "rich" }

Omit either parameter to fall back to the server default.

🎨 Example

Rendered samples (GitHub Pages):

📐 Available Layouts

Default theme

Show layouts
LayoutDescription
titleTitle slide with heading and content
sectionSection break slide with centered title and subtitle
listList slide with bullet points (max 8 items)
tableTable slide with description (max 7 rows)
image-rightSlide with image on right and content list (allows more explanation than image-center)
image-centerSlide with centered image (fixed h:350)
contentStandard content slide with heading and free-form markdown body (supports bullets with -, bold with **, code with backticks)

Styles

rich — Rich visual style with cards, timelines, grids, gradients, and more

Show layouts
LayoutDescription
titleHero title slide with dark gradient background
sectionSection divider slide with gradient background
listList slide with bullet points
tableRich table slide with styled header and zebra stripes
image-rightRich image-right slide with content on left and image on right (60:40 split)
image-centerRich centered image slide with rounded corners and shadow
image-splitImage on the left with content list on the right (40:60 split)
timelineVertical timeline with labeled events (use 'Label: Description' format)
card-gridGrid of cards with icon, title, and description (use 'Icon
statisticsStatistics display with large numbers and labels (use 'Number
highlight-boxCentered gradient message box for key takeaways or announcements
two-column-panelTwo-column layout with styled panels, optional accent highlight on one panel
three-column-panelThree-column layout with styled panels (use 'Title
image-comparisonTwo images side by side with labels for comparison
contentFree-form markdown content slide
quoteQuote slide with attribution
processHorizontal process flow with numbered steps and arrows
two-columnSimple two-column layout with headings and lists
big-statementLarge impactful statement slide with bold centered text
sidebarMain content with sidebar for supplementary info, definitions, or references
progress-barHorizontal progress bars for metrics visualization (use 'Label
chart-barPure CSS horizontal bar chart for data visualization (use 'Label
timeline-horizontalHorizontal timeline with labeled events (use 'Label: Description' format)
pull-quoteDecorative impact quote with large quotation marks, centered layout
bento-gridBento Box modular grid for mixed content (use 'Size

minimal — Clean, flat design with typography focus and minimal decoration

Show layouts
LayoutDescription
titleClean black title slide with white text
sectionSimple black section divider slide
contentPure markdown content slide
listSimple bullet list slide
tableMinimal table with black header and clean borders
image-rightText on left, image on right (60:40 split), clean design
image-centerCentered image slide, clean and minimal
quoteQuote slide with left border accent, no extra decoration
two-columnTwo-column layout with a thin divider line
big-statementLarge impactful statement slide with bold centered text
statisticsMinimal statistics display with black numbers and thin underline (use 'Number
highlight-boxMinimal message box for key takeaways
pull-quoteMinimal decorative impact quote with large quotation marks
agendaClean agenda slide with numbered items and optional time durations (use 'Item name
comparisonSide-by-side comparison with explicit left/right titles and list items, separated by a thin divider

dark — Dark mode style with indigo and emerald accents, developer-friendly

Show layouts
LayoutDescription
titleDark title slide with indigo-violet gradient
sectionDark section divider with slate-to-indigo gradient
contentFree-form markdown content slide on dark background
listBullet list slide on dark background
tableDark table with indigo header
card-gridDark card grid with icon, title, and description (use 'Icon
timelineDark vertical timeline with indigo-to-emerald gradient line (use 'Label: Description' format)
statisticsDark statistics display with large indigo numbers (use 'Number
image-rightText on left, image on right on dark background (60:40 split)
terminalTerminal-style command display on dark background (prefix lines with '$ ' for commands)
quoteDark quote slide with attribution
image-centerDark centered image slide
processDark horizontal process flow with numbered steps and arrows
two-columnDark two-column layout with panels
big-statementDark large impactful statement slide with bold centered text
highlight-boxDark gradient message box for key takeaways or announcements
progress-barDark horizontal progress bars for metrics visualization (use 'Label
chart-barDark CSS horizontal bar chart for data visualization (use 'Label
timeline-horizontalDark horizontal timeline with labeled events (use 'Label: Description' format)
code-comparisonSide-by-side code comparison (Before/After or two languages)
code-showcaseCode block with language badge, optional explanation text, and optional highlight bullet points

corporate — Professional business style with navy color scheme, structured layouts

Show layouts
LayoutDescription
titleProfessional navy gradient title slide
sectionCorporate navy-to-sky section divider slide
contentStandard business content slide with markdown
listBusiness bullet list slide
tableBusiness table with navy header and clean rows
two-columnTwo-column comparison layout with navy-accented panels
three-columnThree-column layout with sky-accented panels
statisticsBusiness metrics display with large navy numbers (use 'Number
processHorizontal business process flow with numbered steps
agendaAgenda slide with numbered items and optional duration (use 'Item name
image-rightText on left, image on right, professional business style (60:40 split)
highlight-boxNavy key message box for important announcements or takeaways
quoteCorporate quote slide with attribution
image-centerCorporate centered image slide
big-statementCorporate large impactful statement slide with bold centered text
sidebarMain content with sidebar for supplementary info or references
progress-barCorporate horizontal progress bars for metrics visualization (use 'Label
chart-barCorporate CSS horizontal bar chart for data visualization (use 'Label
pull-quoteCorporate decorative impact quote with large quotation marks
quadrant2x2 matrix for SWOT, risk analysis, or priority grids

academic — Academic conference presentation style with maroon color scheme, structured for scholarly talks

Show layouts
LayoutDescription
titleAcademic title slide with author, affiliation, and date
sectionMaroon section divider with optional number
contentFree-form markdown content slide. Add sidebarTitle/sidebarItems to show a sidebar panel on the right side.
listBullet point list with optional citations
tableTable with maroon header. Write the table in standard markdown format.
two-columnTwo-column panel layout. Use panelStyle='comparison' to highlight right panel (maroon) vs left panel (gray) for conventional vs proposed comparisons.
image-rightContent on left, image on right (60:40 split)
image-centerCentered image slide. Set figNumber to switch to figure-caption mode (renders 'Fig. X.' label with optional source attribution).
key-messageConclusion or key takeaway box with maroon highlight
methodologyMethod step flow diagram (use 'Label
statisticsAcademic statistics display with maroon numbers (use 'Number

tech — Modern tech/startup style with violet-cyan gradient accents, strong typography for product demos and engineering talks

Show layouts
LayoutDescription
titleGradient title slide with optional tagline and event/company name
sectionDark full-bleed section divider with cyan eyebrow label and bold heading
contentStandard content slide with heading and free-form markdown body, accented with a violet left border
listBullet list slide with violet arrow markers and thin dividers between items
two-columnTwo-panel layout with violet top borders, ideal for comparing options or features
statisticsLarge gradient metric numbers with optional trend indicators. Use 'Value
quoteStylized pull quote with violet left border, large quote mark, and attribution
highlight-boxAlert/callout box with color-coded variants: 'info' (cyan), 'warning' (amber), 'success' (green)
feature-gridGrid of feature cards, each with an icon, title, and description. Use 'Icon
roadmapHorizontal milestone timeline with status indicators. Use 'Phase

💡 Tips

Adjusting font size

Add an inline style to any slide to override the font size for the whole presentation:

<style>section { font-size: 1em; }</style>

The academic style sets font-size: 0.95em by default.

Image morphing transitions (HTML only)

Use generate_agenda and add_image_transition to enable CSS View Transition morphing effects:

  • generate_agenda — scans section slides, inserts an agenda with numbered icons, and adds matching icons to each section slide so the icon morphs between agenda and section views.
  • add_image_transition — inserts a full-screen background slide before an image slide and tags both with matching view-transition-name so the image appears to zoom in as you advance.

Both require HTML export (export_slide with format: "html") to render transitions.

🔧 Development

Working with Examples

Generate markdown examples:

pnpm run examples:generate

Generate HTML files locally:

pnpm run examples:html

Preview examples with live reload (recommended for testing):

pnpm run examples:server
# Open http://localhost:8080 in your browser

Note: HTML files are automatically generated and deployed to GitHub Pages by CI/CD. They are not committed to git.

📄 License

MIT License