Skip to main content
Glama
death-joke

slidev-orchestrator-mcp

by death-joke

slidev-orchestrator-mcp

MCP (TypeScript) server to orchestrate multiple Slidev presentations:

  • list the presentations under a root folder (mainfolder/presentation1, mainfolder/presentation2, ...)

  • create a new presentation (scaffold + npm install)

  • start / stop / list Slidev dev servers (automatic port allocation)

  • target a presentation: the server connects to that presentation's official Slidev MCP (slidev mcp slides.md) and dynamically re-exposes its tools (prefixed slidev_*) via tools/list_changed.

Expected structure

mainfolder/
├── presentation1/
│   ├── slides.md        <- required (this is what identifies a presentation)
│   └── package.json     <- @slidev/cli as a local dependency (recommended)
└── presentation2/
    └── slides.md

Related MCP server: slideless-mcp

Installation

The package is published on npm as slidev-orchestrator-mcp, so no local clone or build is required — just run it with npx.

Root folder configuration

Priority order:

  1. CLI argument: --dir /path/to/mainfolder (or -d, or the first positional argument)

  2. Environment variable: SLIDEV_PRESENTATIONS_DIR

Optional: SLIDEV_BASE_PORT (default 3030) — first port tried for dev servers.

Integration

Claude Code

claude mcp add slidev-orchestrator -- npx -y slidev-orchestrator-mcp --dir /path/to/mainfolder

or with the environment variable:

claude mcp add slidev-orchestrator -e SLIDEV_PRESENTATIONS_DIR=/path/to/mainfolder -- npx -y slidev-orchestrator-mcp

OpenCode (opencode.json)

{
  "mcp": {
    "slidev-orchestrator": {
      "type": "local",
      "command": ["npx", "-y", "slidev-orchestrator-mcp"],
      "environment": { "SLIDEV_PRESENTATIONS_DIR": "/path/to/mainfolder" }
    }
  }
}

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "slidev-orchestrator": {
      "command": "npx",
      "args": ["-y", "slidev-orchestrator-mcp", "--dir", "/path/to/mainfolder"]
    }
  }
}

Exposed tools

Tool

Description

list_presentations

List presentations (title/theme read from frontmatter, dev server status, current target)

create_presentation

Scaffold slides.md + package.json + install (name, title?, theme?, install?)

start_server

Start slidev --port N for a presentation, returns the URL

stop_server

Stop a presentation's dev server

server_status

List running dev servers

select_presentation

Target a presentation → spawns slidev mcp slides.md, re-exposes its tools as slidev_* and sends tools/list_changed

call_slidev_tool

Generic passthrough to the targeted Slidev MCP (fallback for clients that ignore list_changed, e.g. Claude Desktop)

Notes

  • Claude Code (>= 2.1.0) and OpenCode support tools/list_changed: after select_presentation, the slidev_* tools appear directly. Claude Desktop ignores it: use call_slidev_tool instead.

  • The presentation's local Slidev binary (node_modules/.bin/slidev) is preferred; falls back to npx -y @slidev/cli (the package is named @slidev/cli, not slidev).

  • All child processes (dev servers + Slidev MCP) are cleanly killed on shutdown.

Development

To work on the server itself (not just use it):

git clone https://github.com/death-joke/slidev-orchestrator-mcp.git
cd slidev-orchestrator-mcp
npm install
npm run build
node dist/index.js --dir /path/to/mainfolder

See CLAUDE.md for the full architecture overview and contribution guidelines.

Available Tools

7 tools
call_slidev_toolA

Fallback passthrough: call a tool of the currently targeted presentation's official Slidev MCP by its original name. Useful for MCP clients that do not support dynamic tool list updates (tools/list_changed).

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoArguments for that tool
toolYesOriginal tool name on the Slidev MCP

TDQS

A3.6/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It mentions 'passthrough' but does not disclose error handling when the called tool doesn't exist, whether a presentation must be selected first, whether the operation is read-only or potentially destructive, or what the return format looks like. An arbitrary tool invoker needs more safety context.

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 exactly two sentences, front-loaded with the core purpose and followed by the use-case context. Every word earns its place; there is no fluff or repetition. This is nearly ideal concision.

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 this is a passthrough to an unknown set of tools, the description is incomplete. It doesn't explain how a client should discover valid tool names, what happens if the tool is not found, whether a presentation must be actively selected, or whether the output is simply the underlying tool's output. With no output schema and no annotations, the description should convey more about expected behavior and prerequisites.

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?

Schema coverage is 100% with both parameters described. The 'tool' parameter is well-described as 'Original tool name on the Slidev MCP', and 'args' is described as 'Arguments for that tool'. The description itself adds no additional parameter semantics beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states a specific verb ('call'), resource ('tool of the currently targeted presentation's official Slidev MCP'), and mechanism ('by its original name'). It also distinguishes itself from the sibling tools by being a 'fallback passthrough' rather than a concrete operation, making its role clear.

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

Usage Guidelines4/5

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

The description explicitly identifies when to use this tool: 'Useful for MCP clients that do not support dynamic tool list updates (tools/list_changed)'. It implies that for supporting clients, the direct tools should be used instead, though it doesn't name specific alternatives. This gives clear usage context.

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

create_presentationA

Scaffold a new Slidev presentation (folder + slides.md + package.json) in the root directory. Runs npm install unless install=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name (letters, digits, . _ -)
themeNoSlidev theme, e.g. 'default', 'seriph'
titleNoPresentation title (defaults to name)
installNoRun npm install (default true)

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the created files and the npm install side effect, including the install=false override, which is useful. However, it does not mention behavior if the target folder already exists, potential overwrites, or the return value, leaving some uncertainty.

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?

Two sentences, front-loaded with the verb and resource, no fluff. The install behavior is clearly appended as a conditional, making it easy to scan.

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

Completeness4/5

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

The tool is a simple scaffold operation with complete schema documentation; the description covers the main action and side effects. Gaps include no output schema or return value details and no mention of error cases, but the essential invocation context is present.

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 schema provides complete coverage for all four parameters, giving a baseline of 3. The description adds some context by clarifying that install controls npm install and that the tool scaffolds a folder with slides.md and package.json, but it doesn't add significant meaning beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('scaffold') plus resource ('new Slidev presentation') and details what is created (folder + slides.md + package.json), clearly distinguishing it from the sibling tools that list, start, stop, select, or call presentations.

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

Usage Guidelines4/5

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

The description implies when to use the tool—when a new Slidev presentation is needed—by specifying the scaffolding behavior. It doesn't explicitly exclude alternatives or state when not to use, but the distinct creation purpose provides clear context relative to siblings.

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

list_presentationsA

List all Slidev presentations found in the presentations root directory (/app). A presentation is any sub-folder containing a slides.md.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds value by revealing the exact root directory and the rule for identifying presentations. It does not specify the output format or error behavior, but for a simple list operation the core behavior is well conveyed.

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 two concise sentences, front-loaded with the main purpose and immediately followed by a clarifying definition. No wasted words.

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

Completeness4/5

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

For a simple no-parameter list tool, the description is nearly complete. It defines the scope and identification rule. However, it does not explicitly state what the returned list contains (e.g., folder names, paths), which would be useful given the absence of an output schema.

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 tool has zero parameters, so the baseline is 4. There are no parameter semantics to explain; the description appropriately focuses on the listing behavior rather than parameter details.

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

Purpose5/5

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

The description clearly states the tool lists Slidev presentations, specifies the resource (presentations in /app), and defines what qualifies (sub-folder with slides.md). This distinguishes it from sibling tools like create_presentation or start_server, which perform different actions.

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

Usage Guidelines4/5

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

The description provides clear context about scope (root directory /app and the criterion for a presentation), implying its use for discovery before other operations. However, it does not explicitly state when not to use it or mention alternatives, so it falls short of a 5.

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

select_presentationA

Target a presentation: connects to its official slidev mcp server and dynamically exposes its tools (prefixed slidev_*) for inspecting/editing the slides. Selecting a new presentation replaces the previous target.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPresentation folder name

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the key side effect (selecting a new presentation replaces the previous target) and the dynamic tool exposure behavior. It does not mention potential failure modes or whether the previous server connection is terminated, but the core state-changing behavior is clearly stated.

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 two sentences, front-loaded with the primary action, and the second sentence provides essential behavioral context without redundancy. Every word earns its place.

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

Completeness4/5

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

For a tool with a single parameter and no output schema, the description covers the core functionality and the essential state-changing behavior. It could additionally mention prerequisites (e.g., server must be running, use list_presentations to get names), but it is mostly complete.

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?

Schema coverage is 100% with the parameter 'name' described as 'Presentation folder name'. The description adds no additional meaning about the parameter, such as how to discover valid names, so it stays at the schema baseline without adding value.

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

Purpose5/5

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

The description uses a specific verb ('Target') with a clear resource ('a presentation') and explains the mechanism (connects to a server, exposes slidev_* tools). It clearly distinguishes from siblings like list_presentations and create_presentation by focusing on selection.

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

Usage Guidelines4/5

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

The description implies this is a prerequisite for using the dynamically exposed slidev_* tools, which gives clear situational context. However, it does not explicitly name alternatives or exclusion criteria, leaving room for more explicit guidance.

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

server_statusA

List all currently running Slidev dev servers (name, port, URL, pid).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Without annotations, the description carries the transparency burden. It explicitly notes that only 'currently running' servers are listed and specifies the return fields (name, port, URL, pid), giving the agent a clear picture of the tool's read-only behavior and output. No side effects or prerequisites are mentioned, but for a simple list operation this is adequate.

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, front-loaded sentence that states the action, resource, and output format without any wasted words. It is optimally concise and well-structured.

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

Completeness5/5

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

Given the tool's simplicity, zero parameters, and absence of an output schema, the description is complete: it states what the tool does and what information is returned. There are no ambiguities left for the agent.

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 tool has zero parameters, so the schema fully covers parameter semantics. The description adds context about the scope (all running servers) but doesn't need to explain parameter details, aligning with the baseline score of 4 for parameterless tools.

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

Purpose5/5

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

The description uses the specific verb 'List' and identifies the resource as 'currently running Slidev dev servers', with the exact output fields (name, port, URL, pid). This clearly distinguishes it from sibling tools like start_server and stop_server, which handle server lifecycle operations.

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

Usage Guidelines4/5

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

The description makes it clear that this tool is for viewing current server status, which implies its use when you need to check running servers. While it doesn't explicitly name alternatives or exclusions, the sibling tool names make the context obvious, so the guidance is clear enough.

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

start_serverA

Start the Slidev dev server for a presentation. Returns the local URL. Ports are allocated automatically unless port is given.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPresentation folder name
portNoOptional fixed port

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It mentions that the tool returns the local URL and that ports are auto-allocated unless specified, which adds some behavioral context. However, it does not disclose side effects such as background process management, port conflict handling, or state changes beyond starting the server.

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 two sentences, front-loaded with the core action, then the return value, then the port behavior. No filler or redundant phrases—every sentence contributes useful information.

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

Completeness4/5

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

For a simple tool with two parameters and no output schema, the description provides the essential info needed for correct invocation: what it does, what it returns, and how port allocation works. It could mention prerequisites or cleanup steps, but those are not necessary for basic use and are partly covered by sibling tools like stop_server.

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 schema already provides 100% coverage for both parameters, so the baseline is 3. The description adds value by clarifying that ports are automatically allocated unless the optional 'port' parameter is provided, which goes beyond the schema's simple 'Optional fixed port' description. 'For a presentation' also reinforces the meaning of the 'name' parameter as a folder name.

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

Purpose5/5

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

The description clearly states the tool starts the Slidev dev server for a presentation, which is a specific action on a specific resource. It is distinct from sibling tools like stop_server and server_status, so there is no ambiguity about its purpose.

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 explicit guidance on when to use this tool vs alternatives like stop_server or server_status. It implies usage by stating 'Start the Slidev dev server' but does not mention prerequisites, exclusions, or when alternatives are appropriate.

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

stop_serverB

Stop the running Slidev dev server of a presentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.3/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 full responsibility for disclosing behavioral traits. It only states the basic action without mentioning side effects (e.g., whether it kills the process, what happens if no server is running, or if it waits for shutdown). This is a significant gap for a mutation tool.

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, clear sentence with no fluff. It is appropriately sized for the minimal information provided and is front-loaded with the action.

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 has one required parameter with no schema description and no annotations, the description is not complete enough. It omits parameter semantics, prerequisites, potential error conditions, and any information about the expected outcome beyond the basic action.

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

Parameters2/5

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

The single parameter 'name' has no description in the schema (0% coverage), and the description does not explicitly explain what 'name' refers to. It implies 'name' is the presentation name via 'of a presentation,' but this is not directly stated, leaving ambiguity about the exact value to pass.

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

Purpose5/5

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

The description clearly states the action (stop) and the resource (the running Slidev dev server of a presentation). It is specific and distinguishes from siblings like start_server by indicating the opposite action.

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

Usage Guidelines3/5

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

The phrase 'running Slidev dev server' implies it should be used when a server is active, but the description does not explicitly state when to use this tool versus alternatives like start_server or server_status. No clear context or exclusions are provided.

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

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct action: listing presentations, creating presentations, starting/stopping servers, checking server status, selecting a presentation, and calling a slidev tool. No two tools have overlapping purposes.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern (list_presentations, create_presentation, start_server, stop_server, select_presentation, call_slidev_tool). The exception is server_status, which is noun_noun; renaming it to get_server_status or list_servers would make the naming fully consistent.

Tool Count5/5

With 7 tools, the server is well-scoped for its purpose of orchestrating Slidev presentations and their dev servers. Each tool earns its place and the count is not overwhelming.

Completeness5/5

The server covers the full lifecycle of presentation scaffolding and server management (create, list, start, stop, status), and provides access to the official Slidev MCP for editing slides. No major gaps are apparent for the stated purpose.

Maintenance

ActivitySlowing
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

  • A
    license
    B
    quality
    D
    maintenance
    A flexible proxy server that aggregates multiple backend MCP servers into a single interface using STDIO or SSE transports. It supports dynamic server management via an HTTP API and utilizes namespacing to prevent tool conflicts across connected services.
    3
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Self-hosted MCP proxy and aggregation platform. Register multiple upstream MCP servers and expose them through a single unified endpoint with namespace routing, multi-transport support (HTTP/SSE, stdio, OpenAPI→MCP), per-tool overrides, and a web admin UI.
    16
    MIT

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/death-joke/slidev-orchestrator-mcp'

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