Skip to main content
Glama

Marp MCP Server

NPM Downloads

TIP

This package includes aClaude 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.

Related MCP server: Slidev MCP Server

🛠️ Tools

Tool

Description

list_themes_and_styles

List all available themes and styles; shows current server defaults

list_layouts

List available slide layouts for a theme/style combination

create_presentation

Create a new presentation with frontmatter and title slide in one step

manage_slide

Insert, replace, delete, or move slides using slide IDs (ID-based operations)

batch_manage_slides

Apply multiple slide operations in one call (single file read/write)

set_frontmatter

Ensure marp, theme, header, and paginate frontmatter fields are present

read_slide

Read slide content by ID or list all slides with their IDs and positions

generate_slide_ids

Generate stable UUIDs for every slide (safe to re-run)

export_slide

Export to HTML, PDF, or PPTX using marp-cli

generate_agenda

Auto-generate an agenda slide; adds numbered icons to section slides for view-transition morphing (HTML only)

add_image_transition

Insert 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

Layout

Description

title

Title slide with heading and content

section

Section break slide with centered title and subtitle

list

List slide with bullet points (max 8 items)

table

Table slide with description (max 7 rows)

image-right

Slide with image on right and content list (allows more explanation than image-center)

image-center

Slide with centered image (fixed h:350)

content

Standard 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

Layout

Description

title

Hero title slide with dark gradient background

section

Section divider slide with gradient background

list

List slide with bullet points

table

Rich table slide with styled header and zebra stripes

image-right

Rich image-right slide with content on left and image on right (60:40 split)

image-center

Rich centered image slide with rounded corners and shadow

image-split

Image on the left with content list on the right (40:60 split)

timeline

Vertical timeline with labeled events (use 'Label: Description' format)

card-grid

Grid of cards with icon, title, and description (use 'Icon

statistics

Statistics display with large numbers and labels (use 'Number

highlight-box

Centered gradient message box for key takeaways or announcements

two-column-panel

Two-column layout with styled panels, optional accent highlight on one panel

three-column-panel

Three-column layout with styled panels (use 'Title

image-comparison

Two images side by side with labels for comparison

content

Free-form markdown content slide

quote

Quote slide with attribution

process

Horizontal process flow with numbered steps and arrows

two-column

Simple two-column layout with headings and lists

big-statement

Large impactful statement slide with bold centered text

sidebar

Main content with sidebar for supplementary info, definitions, or references

progress-bar

Horizontal progress bars for metrics visualization (use 'Label

chart-bar

Pure CSS horizontal bar chart for data visualization (use 'Label

timeline-horizontal

Horizontal timeline with labeled events (use 'Label: Description' format)

pull-quote

Decorative impact quote with large quotation marks, centered layout

bento-grid

Bento Box modular grid for mixed content (use 'Size

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

Layout

Description

title

Clean black title slide with white text

section

Simple black section divider slide

content

Pure markdown content slide

list

Simple bullet list slide

table

Minimal table with black header and clean borders

image-right

Text on left, image on right (60:40 split), clean design

image-center

Centered image slide, clean and minimal

quote

Quote slide with left border accent, no extra decoration

two-column

Two-column layout with a thin divider line

big-statement

Large impactful statement slide with bold centered text

statistics

Minimal statistics display with black numbers and thin underline (use 'Number

highlight-box

Minimal message box for key takeaways

pull-quote

Minimal decorative impact quote with large quotation marks

agenda

Clean agenda slide with numbered items and optional time durations (use 'Item name

comparison

Side-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

Layout

Description

title

Dark title slide with indigo-violet gradient

section

Dark section divider with slate-to-indigo gradient

content

Free-form markdown content slide on dark background

list

Bullet list slide on dark background

table

Dark table with indigo header

card-grid

Dark card grid with icon, title, and description (use 'Icon

timeline

Dark vertical timeline with indigo-to-emerald gradient line (use 'Label: Description' format)

statistics

Dark statistics display with large indigo numbers (use 'Number

image-right

Text on left, image on right on dark background (60:40 split)

terminal

Terminal-style command display on dark background (prefix lines with '$ ' for commands)

quote

Dark quote slide with attribution

image-center

Dark centered image slide

process

Dark horizontal process flow with numbered steps and arrows

two-column

Dark two-column layout with panels

big-statement

Dark large impactful statement slide with bold centered text

highlight-box

Dark gradient message box for key takeaways or announcements

progress-bar

Dark horizontal progress bars for metrics visualization (use 'Label

chart-bar

Dark CSS horizontal bar chart for data visualization (use 'Label

timeline-horizontal

Dark horizontal timeline with labeled events (use 'Label: Description' format)

code-comparison

Side-by-side code comparison (Before/After or two languages)

code-showcase

Code block with language badge, optional explanation text, and optional highlight bullet points

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

Layout

Description

title

Professional navy gradient title slide

section

Corporate navy-to-sky section divider slide

content

Standard business content slide with markdown

list

Business bullet list slide

table

Business table with navy header and clean rows

two-column

Two-column comparison layout with navy-accented panels

three-column

Three-column layout with sky-accented panels

statistics

Business metrics display with large navy numbers (use 'Number

process

Horizontal business process flow with numbered steps

agenda

Agenda slide with numbered items and optional duration (use 'Item name

image-right

Text on left, image on right, professional business style (60:40 split)

highlight-box

Navy key message box for important announcements or takeaways

quote

Corporate quote slide with attribution

image-center

Corporate centered image slide

big-statement

Corporate large impactful statement slide with bold centered text

sidebar

Main content with sidebar for supplementary info or references

progress-bar

Corporate horizontal progress bars for metrics visualization (use 'Label

chart-bar

Corporate CSS horizontal bar chart for data visualization (use 'Label

pull-quote

Corporate decorative impact quote with large quotation marks

quadrant

2x2 matrix for SWOT, risk analysis, or priority grids

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

Layout

Description

title

Academic title slide with author, affiliation, and date

section

Maroon section divider with optional number

content

Free-form markdown content slide. Add sidebarTitle/sidebarItems to show a sidebar panel on the right side.

list

Bullet point list with optional citations

table

Table with maroon header. Write the table in standard markdown format.

two-column

Two-column panel layout. Use panelStyle='comparison' to highlight right panel (maroon) vs left panel (gray) for conventional vs proposed comparisons.

image-right

Content on left, image on right (60:40 split)

image-center

Centered image slide. Set figNumber to switch to figure-caption mode (renders 'Fig. X.' label with optional source attribution).

key-message

Conclusion or key takeaway box with maroon highlight

methodology

Method step flow diagram (use 'Label

statistics

Academic 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

Layout

Description

title

Gradient title slide with optional tagline and event/company name

section

Dark full-bleed section divider with cyan eyebrow label and bold heading

content

Standard content slide with heading and free-form markdown body, accented with a violet left border

list

Bullet list slide with violet arrow markers and thin dividers between items

two-column

Two-panel layout with violet top borders, ideal for comparing options or features

statistics

Large gradient metric numbers with optional trend indicators. Use 'Value

quote

Stylized pull quote with violet left border, large quote mark, and attribution

highlight-box

Alert/callout box with color-coded variants: 'info' (cyan), 'warning' (amber), 'success' (green)

feature-grid

Grid of feature cards, each with an icon, title, and description. Use 'Icon

roadmap

Horizontal 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

Available Tools

3 tools
generate_slideC

Generate a slide using academic theme layouts (returns markdown string for copy-paste)

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutTypeYesLayout type to use (title, lead, content, table, multi-column, quote)
paramsYesParameters for the layout template

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool generates a slide and returns a markdown string, but lacks details on permissions, side effects, error handling, or rate limits. For a tool with mutation implications (generating content), this is insufficient, as it doesn't cover critical behavioral traits beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the key action and output. It avoids unnecessary words and directly communicates the tool's function without redundancy, making it highly concise and well-structured for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (with nested objects in parameters) and lack of annotations and output schema, the description is incomplete. It doesn't explain the return format in detail (e.g., structure of the markdown), error cases, or how to handle the 'params' object effectively. This leaves significant gaps for an AI agent to use the tool correctly in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear documentation for both parameters ('layoutType' and 'params'). The description adds minimal value by implying the use of 'academic theme layouts' and specifying the output as a markdown string, but doesn't elaborate on parameter usage beyond what the schema provides. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Generate a slide') and resource ('academic theme layouts'), with a specific output format ('markdown string for copy-paste'). It distinguishes from sibling tools like 'init_presentation' and 'list_slide_layouts' by focusing on slide creation rather than presentation initialization or layout listing. However, it doesn't explicitly differentiate from potential overlapping functions, keeping it at 4 instead of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions 'academic theme layouts' but doesn't explain when to choose this over other tools or contexts, such as when to use 'init_presentation' first or how it relates to 'list_slide_layouts'. This lack of explicit usage context or exclusions results in a minimal score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

init_presentationC

Initialize a new Marp presentation project with directory structure, theme, and templates

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionNoBrief description of the presentation
presentationSubtitleNoSubtitle of the presentation
presentationTitleYesTitle of the presentation
projectNameYesName of the presentation project
projectPathYesPath where the project directory will be created

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Initialize' which implies a creation/mutation operation, but doesn't specify permissions needed, whether it overwrites existing directories, or any side effects like file generation details. This leaves significant gaps in understanding the tool's behavior beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the key action and resources without any wasted words. It's appropriately sized for the tool's purpose, making it easy to grasp quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (initializing a project with multiple components) and the lack of annotations and output schema, the description is incomplete. It doesn't cover what the tool returns, error conditions, or detailed behavioral traits, leaving the agent with insufficient context for reliable use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting all 5 parameters. The description adds no additional meaning beyond what's in the schema, such as explaining relationships between parameters or usage examples. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Initialize a new Marp presentation project') and the resources involved ('directory structure, theme, and templates'), which is specific and informative. However, it doesn't explicitly differentiate from sibling tools like 'generate_slide' or 'list_slide_layouts', which might handle slide creation or layout listing rather than project initialization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'generate_slide' or 'list_slide_layouts'. It lacks context on prerequisites, such as whether this is for starting a new project from scratch, or any exclusions, like not using it for modifying existing presentations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_slide_layoutsB

List all available slide layouts with their parameters and descriptions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool lists layouts but doesn't disclose behavioral traits such as whether it's a read-only operation, if it requires authentication, rate limits, or how the data is returned (e.g., format, pagination). This is a significant gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the purpose ('List all available slide layouts') and adds useful detail ('with their parameters and descriptions'). There is zero waste, and every word earns its place by clarifying the scope of the listing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema), the description is adequate but has clear gaps. It covers the purpose but lacks behavioral context (e.g., read-only nature, return format) and usage guidelines. Without annotations or output schema, the description should do more to inform the agent about how the tool behaves and when to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so the schema fully documents the absence of inputs. The description adds no parameter information, which is appropriate here. Baseline is 4 for 0 parameters, as the description doesn't need to compensate for any gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'slide layouts', specifying what information is included ('parameters and descriptions'). It distinguishes from sibling tools like 'generate_slide' (creation) and 'init_presentation' (initialization) by focusing on listing existing layouts. However, it doesn't explicitly differentiate from potential similar listing tools (though none exist in siblings).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for usage, or exclusions. For example, it doesn't clarify if this should be used before generating slides or if it's for reference only, leaving the agent to infer usage from the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.0
    • First observedgenerate_slide
    • First observedinit_presentation
    • First observedlist_slide_layouts

TDQS

B3.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: generate_slide creates individual slide content, init_presentation sets up a new project structure, and list_slide_layouts provides information about available layouts. There is no overlap or ambiguity between these three functions.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern (generate_slide, init_presentation, list_slide_layouts) with clear, descriptive names that indicate their specific actions. The naming convention is uniform throughout the set.

Tool Count3/5

With only 3 tools, this server feels somewhat thin for a presentation creation domain. While the tools cover core functions, additional operations like editing slides, managing themes, or exporting presentations would enhance completeness. The count is borderline but reasonable for a minimal implementation.

Completeness3/5

The tools cover initialization, layout listing, and slide generation, which are foundational for a presentation workflow. However, there are notable gaps: no tools for updating or deleting slides, managing presentation metadata, or exporting to formats like PDF or HTML. This limits the agent's ability to handle full presentation lifecycles.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masaki39/marp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server