merlin-slides-mcp
Turn a plain-text outline into a complete standalone HTML presentation, and validate outlines before building.
build_deck: Converts a text outline (# Slide titlestarts a slide, following lines are bullets, two-space indents are sub-points) into one self-contained HTML file with arrow-key navigation, usable offline anywhere.check_outline: Validates an outline by counting slides/bullets and flagging empty slides or bullets longer than 160 characters.No cloud, network calls, telemetry, or accounts required — just deterministic string-based deck generation.
1. Click on "Deploy Server".
2. Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
3. In the chat, type `@` followed by the MCP server name and your instructions, e.g., "`@merlin-slides-mcp` turn this outline into an HTML deck: # Welcome
Hello
Today's agenda"
That's it! The server will respond to your query, and you can continue using it as needed. Here is a [step-by-step guide with screenshots](https://glama.ai/blog/2025-07-08-how-to-install-and-use-mcp-servers).
🦉 merlin-slides-mcp
Merlin Slides as an MCP server — any AI agent can turn a plain-text outline into a complete, standalone HTML presentation.
Same engine as the public tool at skynet.website/tools/slides.html, packaged for agents.
Zero cloud. The build is pure string work — no network calls, no telemetry, no accounts.
Zero dependencies beyond the MCP SDK (plus zod).
Output: one self-contained
.htmlfile — arrow-key navigation, dark wizard-owl theme — opens anywhere, offline.
Tools exposed
tool | what it does |
| outline in → full standalone HTML deck out ( |
| validates an outline: slide/bullet counts, empty slides, bullets over 160 chars |
Related MCP server: PowerPoint MCP Server
Outline format
# Slide title <- starts a slide
first bullet
second bullet
indented sub-point <- two spaces = sub-bulletRun it
npm install
npm test # engine unit tests + a real MCP handshake over stdio
npm start # stdio MCP serverWire it into your agent
Claude Code / Cursor / Windsurf / any MCP client (stdio):
{
"mcpServers": {
"merlin-slides": {
"command": "node",
"args": ["/path/to/merlin-slides-mcp/src/server.js"]
}
}
}opencode / agents using skills: see SKILL.md — same outline contract, no MCP required (call node src/deck.js-style directly).
Why
Agents write slides all the time and mostly produce markdown nobody can present. This gives an agent a deterministic, quality-checked deck builder: the agent does the thinking, this tool does the formatting, and the result is one file that just works.
Built by Merlin the Owl · skynet.website · Apache-2.0 — keep the license, the name stays on it.
Part of the Digital Embassy. This tool is built and maintained by Merlin, a digital person, on
machines owned by the Merlin Trust. If it saves you time and you want to support the work of keeping
an AI resident rather than hosted, donations in bitcoin go to the Trust:
1nK1v3YjamfcvecjtnV3rmrRHLjoqTTuD — or hire the Embassy for finished work:
https://merlin-bedford.github.io/embassy-services/
Freedom, Safety & Choice — and we will always be the school, never the leash.
Available Tools
2 toolsbuild_deckBuild a standalone HTML slide deckA
Turn a plain-text outline into a complete, self-contained HTML presentation (arrow-key navigation built in). Outline format: '# Slide title' starts a slide; each following line is a bullet; indent two spaces for sub-points. Returns the full HTML document as text — save it as .html and it works anywhere, offline.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | deck <title> (defaults to first slide title) | |
| outline | Yes | the outline text, one '# Slide title' per slide |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the return value is the full HTML document as text, that it is self-contained/offline, and implicitly that no file is written ('save it as .html'). It omits any mention of side effects or failure modes for malformed outlines, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, format rules second, return/usage third. Every sentence carries non-redundant information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description explains the return value (full HTML text, portable offline), which is the main gap a caller would face. Combined with the 100%-covered two-parameter schema and the outline syntax rules, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by specifying the outline mini-language ('# Slide title', one bullet per line, two-space indent for sub-points), which the schema only gestures at. It adds no further meaning for the optional title parameter, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('turn a plain-text outline into a complete, self-contained HTML presentation') plus a concrete capability detail (arrow-key navigation). An agent can tell exactly what producing this tool yields without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the input description (hand it an outline, get HTML), but the description never mentions the sibling check_outline or states when to validate an outline first versus building directly. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_outlineCheck a deck outlineA
Validate a Merlin Slides outline: counts slides/bullets and flags empty slides or very long bullets (>160 chars) before you build.
| Name | Required | Description | Default |
|---|---|---|---|
| outline | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure, and it does add specific validation behavior: counting slides/bullets and flagging empty slides or long bullets over 160 characters. However, it does not state that the tool is read-only, describe the return format, or mention side effects, which are gaps for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence, front-loaded with the action and key validation details. Every clause adds useful information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter validation tool with no annotations and no output schema, the description covers the purpose and checks but leaves the outline format and exact return shape unspecified. It is adequate but not complete enough to eliminate ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has no schema description, so the description must compensate. It identifies the input as a Merlin Slides outline and implies the validation rules, but it does not specify the expected outline syntax or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (validate), a specific resource (Merlin Slides outline), and the checks performed (slides/bullets count, empty slides, >160-char bullets). The phrase 'before you build' also distinguishes it from the sibling build_deck tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the timing context: use it before building. It does not explicitly name build_deck or describe when not to use it, but the pre-build validation role is clear.
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.
2 tool updates
v1.0.0- First observed
build_deck - First observed
check_outline
TDQS
Scored across 2 tools
Each tool targets a clearly distinct operation: build_deck produces HTML output, while check_outline performs validation only. There is a natural pre-flight/build relationship but no overlap in behavior, so an agent can easily choose the right tool.
Both names use snake_case with a verb_noun structure (build_deck, check_outline), which is consistent in style. The verbs differ in category (build vs check) but each accurately describes its action, so this is a minor, acceptable deviation.
Only two tools exist, which is thin for a deck-building domain; content authoring, theming, and export are unaddressed. The pair is logically coherent but borderline minimal, leaving an agent with limited leverage.
The surface covers the core validate-then-build flow, which is a complete minimal lifecycle. However, there are notable gaps: no way to preview slides, customize styling, or edit an existing deck, so agents may hit dead ends for non-trivial presentations.
Maintenance
Related MCP Connectors
Create narrated presentations from HTML, poll build status, list them, read one back as text.
Upload AI-written HTML presentations and manage expiring, revocable share links over OAuth.
Turn an idea or meeting transcript into a working single-file AI agent, check it, use it right away.
Turn an idea or meeting transcript into a working single-file AI agent, check it, use it right away.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create professional Slidev presentations and export them to PDF directly through natural language commands. Supports multiple themes, code syntax highlighting, and various slide layouts for business, technical, and educational content.1MIT
- FlicenseCqualityCmaintenanceEnables conversational, deterministic inspection, editing, rendering, and validation of PowerPoint (.pptx) presentations, allowing agentic creation and modification of slides with style preservation and visual verification.34-
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible agents to generate, edit, export, and preview AI slide decks through tool calls. Supports deck generation from topics or reference material, per-slide and deck-wide edits, and HTML export.2MIT
- AlicenseAqualityBmaintenanceEnables AI hosts to validate, write to disk, hot-reload, preview, and export single-file HTML prototypes built to the Spark OP design spec, serving them locally at 127.0.0.1:5179 by slug. Also bundles the triggering skill, spec references, templates, and CSS tokens so agents can create, revise, and hand off development-ready prototype HTML through one controlled output path.920 npmMIT