MCP server for Marp presentation management with custom theme support
Marp MCP demonstrates solid definition quality with comprehensive tool coverage for presentation management. Strengths: all 11 tools have descriptions (avg ~180 chars, within baseline 194), input schemas are present and mostly typed, tool names follow verb_noun conventions (list_, generate_, manage_, set_, read_, export_, create_, add_, batch_), and most parameters are described. Weaknesses: parameter descriptions are often brief and lack actionable constraints (e.g., 'Path to the Marp markdown file' doesn't specify format, validation, or error cases); no enum constraints on string parameters that should be enums (e.g., 'mode' in manage_slide accepts 'insert|replace|delete|after|before' as free strings, not an enum); output schemas are NOT documented, tool responses are implied but never formally specified; error handling is minimal, no guidance on what happens if file doesn't exist, theme is invalid, or export fails; security review shows no secrets in parameters but file path validation is unclear. STDIO transport caps protocol readiness at 50 regardless of this score.
Insert a full-screen background image slide immediately before the specified slide to create a zoom-in transition effect. Header, footer, and page number are hidden on the inserted background slide. NOTE: View transitions are only visible in HTML export (export_slide with format='html'). Use read_slide to get the target slide's ID, then pass it as slideId.
Apply multiple slide operations (insert/replace/delete/move) to a Marp file in a single file read/write cycle. Equivalent to calling manage_slide multiple times but far more efficient for bulk edits. Operations are applied in order; first failure stops processing. Always call list_layouts first to discover valid layoutType values and their required params.
Create a new Marp presentation file in one step — initializes frontmatter, adds a title slide, and optionally adds content placeholder slides. Use this to start a new presentation; use manage_slide to add/edit slides afterward.
Export a Marp markdown presentation to HTML, PDF, or PPTX using marp-cli. HTML preserves all style rendering; PDF is printable; PPTX embeds slides as images (editable PPTX via pptxEditable flag requires LibreOffice). Note: HTML export may not display local image files correctly — use PDF when local images are present. Call set_frontmatter and ensure slides are complete before exporting.
Output schemas not documented. Tool descriptions explain inputs but never specify what fields/structure the response contains. LLMs cannot reason about downstream data flow or plan multi-step calls without knowing response structure.
String parameters that accept only a fixed set of values (mode='insert|replace|delete', format='html|pdf', position='end|start|after|before') are documented as free strings, not enums. LLMs cannot discover valid options without parsing descriptions and may pass invalid values.
Error handling is absent. No guidance on what happens if file doesn't exist, theme is invalid, layout parameters are missing, or export fails. Descriptions lack recovery instructions. LLMs receive failure with no actionable next steps.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | C | 60 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 57 | - | v1 |
Auto-generate an agenda slide from section slides (detected by CSS class) and insert it before the first section. Also injects view-transition CSS and transition: fade into frontmatter. NOTE: View transitions are only visible in HTML export (export_slide with format='html'). Section slides must have <!-- _class: acad-section --> (or custom sectionClass) before calling this tool.
Assign stable UUID slide IDs to every slide in a Marp file. Run after creating initial slides so that future replace/delete/after/before operations can target specific slides by ID. Safe to call multiple times — existing IDs are never changed.
List all available slide layouts with their required/optional parameters. ALWAYS call this before manage_slide to discover valid layoutType values and their params. Accepts optional 'theme' and 'style' params to override server defaults for this call only.
List all available themes and styles with descriptions and layout counts. Shows current server defaults and explains how to override them per call. Call this first when choosing a theme/style, then call list_layouts with your chosen theme/style params.
Insert, replace, or delete slides in a Marp file using slide IDs. Always call list_layouts first to see available layoutType values and their required params. Use read_slide to get existing slide IDs before replace/delete/after/before operations. Accepts optional 'theme' and 'style' params to override server defaults for this call only.
Read slide content from a Marp file. Returns a specific slide by ID, or all slides with their IDs and positions. Use the returned slideId values with manage_slide for replace/delete/after/before operations.
Initialize or update required Marp frontmatter (marp:true, theme, header, paginate) and inject active style CSS. Call this FIRST before adding slides to any new or existing presentation file. Accepts optional 'theme' and 'style' params to override server defaults for this call only.
File path parameter descriptions are minimal ('Path to the Marp markdown file') and lack validation guidance. Unclear if relative or absolute paths work, whether the file must exist or will be created, or what happens if the path is invalid or a directory.
Parameter dependencies are documented in prose but not formally constrained. E.g., manage_slide requires different parameter combinations depending on 'mode' (insert needs different params than replace), but this is buried in descriptions. LLMs cannot automatically validate.
Descriptions contain implicit prerequisites and recommended call order ('ALWAYS call this before manage_slide', 'Call this FIRST before adding slides') but these are not formally expressed as tool dependencies. LLMs may miss the sequencing requirement.