1. Conduid
  2. Automation
  3. Workflows MCP Server
MCP server · Automation

Workflows MCP Server

Store, query, and create YAML workflow playbooks for LLM agents via MCP. STDIO or Streamable HTTP.

62Good

Scored 4 hours ago · breakdown

About Workflows MCP Server

Workflows MCP Server is an MCP server published by cyanheads in the Automation category: store, query, and create YAML workflow playbooks for LLM agents via MCP. STDIO or Streamable HTTP.

The repository has 31 stars and 8 forks, with the last commit 10 days ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/cyanheads/workflows-mcp-server

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (5)

workflow_createWrite a new permanent workflow YAML to the library.

Parameters not published.

workflow_create_tempWrite a temporary one-shot workflow, indexed but excluded from list results.

Parameters not published.

workflow_deletePermanently remove a permanent workflow by name and optional version.

Parameters not published.

workflow_getRetrieve a complete workflow definition by name, with global instructions prepended.

Parameters not published.

workflow_listList all permanent workflows in the index, with optional keyword, category, and tag filters.

Parameters not published.

Ask AI

✦

Ask AI about Workflows MCP Server

Powered by Claude · Grounded in docs

I know everything about Workflows MCP Server. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 4 hours ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v0.4.1v0.4.1: Delete confirmations bound to the asking caller · 7 Oct 2026Delete confirmations bound to the asking caller Delete confirmations are bound to the caller who was asked: an answer from a different tenant, client, or subject is refused as `confirmation_invalid` and deletes nothing…
v0.4.0v0.4.0: Workflow identity, persistent drafts, confirmed deletes · 24 Sep 2026Workflow identity, persistent drafts, confirmed deletes `workflow_delete` confirms the resolved target with the user before deleting, so a client without elicitation support can no longer delete; HTTP startup with…
v0.3.3v0.3.3: Adopt mcp-ts-core 0.13.6 with a clean shutdown path · 19 Sep 2026Adopt mcp-ts-core 0.13.6 with a clean shutdown path `createApp` declares `sessionMode: 'stateless'` in `src/index.ts`, stating the HTTP session posture in code instead of relying solely on `MCP_SESSION_MODE` (#23) `WorkflowIndexService`'s…
v0.3.2v0.3.2: Framework adoption and plugin configuration · 13 Sep 2026Framework adoption and plugin configuration Development skills move from `skills/` to `framework-skills/`, so installing the plugin no longer loads them into the agent MCPB and plugin installers collect `WORKFLOWS_DIR`,…
v0.3.1v0.3.1: mcp-ts-core 0.12.5 maintenance · 4 Sep 2026mcp-ts-core 0.12.5 maintenance Server identity now resolves from the served package instead of the caller's working directory; pre-init log records replay instead of dropping (mcp-ts-core 0.12.5) A caller disconnect mid-call classifies as…

README

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


Overview

A declarative workflow library for LLM agents, backed by local YAML files. Store, list, and retrieve named, versioned multi-step playbooks — each a sequence of MCP server/tool calls — for permanent reuse or one-shot temporary runs. Runs as a stdio process or a local Streamable HTTP server; an in-memory index rebuilds automatically as files change.

Tools

Tool Description
workflow_list List all permanent workflows in the index, with optional keyword, category, and tag filters.
workflow_get Retrieve a complete workflow definition by name, with global instructions prepended.
workflow_create Write a new permanent workflow YAML to the library.
workflow_create_temp Write a temporary workflow draft, indexed but excluded from list results, kept until deleted.
workflow_delete Remove a permanent workflow or a temporary draft by name and optional version, after the user confirms the resolved target.

Capability reference

workflow_list tool

  • Optional query (name and description), category (substring), and tags (all must match) filters, case-insensitive; temporary drafts are never listed
  • Sorted by name, then highest version first; an empty result carries a notice echoing the applied filters
  • includeTools: true adds each workflow's unique server/tool pairs

workflow_get tool

  • name plus an optional semver version; omit version for the highest available, drafts included
  • Returns the full workflow, its source (permanent or temp), and globalInstructions from global_instructions.md (null when absent); fails with not_found or version_not_found
  • Template placeholders such as {{input.foo}} come back verbatim — the server never interpolates them

workflow_create tool

  • name, semver version, description, author, category, and steps (plus optional tags); stored as one file per name@version under categories/<category>/, with created and updated dates stamped
  • Returns the key (name@version) and filePath; fails with already_exists when a permanent workflow or a draft holds the key, invalid_input, or write_failed

workflow_create_temp tool

  • The workflow_create fields minus category; stored under temp/, retrievable with workflow_get, never listed, and kept until workflow_delete removes it
  • status is created, or overwritten when it replaced the draft of the same key (keeping that draft's created_date); a key held by a permanent workflow fails with already_exists

workflow_delete tool

  • name plus an optional version (omitted: the highest across permanent workflows and drafts); the user confirms the resolved name@version, source, and file before anything is deleted, so a client without elicitation cannot delete
  • Returns the deleted workflow's source, plus a notice when another file declaring the same key now takes its place; fails with cancelled, confirmation_invalid (a prompt never issued, already answered, older than 10 minutes, or issued to another caller), target_changed (the file or its content changed after the user saw it), or not_found

Features

Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.

Workflow library:

  • YAML files under categories/ and temp/ are validated at index time; an invalid file is skipped and logged, never crashes the server
  • In-memory index keyed by name@version, read from each file's content rather than its name and kept fresh by a debounced recursive watcher; a permanent workflow outranks a draft with the same key
  • Versions are canonical semver everywhere: a leading v, surrounding whitespace, and build metadata are dropped, so v1.0.0+build.5 is stored, keyed, and looked up as 1.0.0
  • Creates and deletes run one at a time, so each existence check holds until its write lands; filenames carry a hash of name@version, so keys whose slugs coincide never share a file
  • An _index.json snapshot is written on every rebuild for external tooling and debugging

Agent-friendly output:

  • Discriminated output — source: "permanent" | "temp" on every workflow_get response and typed reason codes (not_found, version_not_found, already_exists, cancelled, confirmation_invalid, target_changed, index_unavailable, …) on failures, so callers branch on data instead of parsing error strings
  • No extra round trip — workflow_get always returns globalInstructions alongside the workflow definition in the same response
  • Response shaping — workflow_list's optional includeTools flag pre-derives the unique server/tool pairs used by a workflow, and an empty result echoes the applied filters with a broadening hint instead of returning nothing

Getting started

No API keys required. The server reads from a local workflows-yaml/ directory by default.

Add the following to your MCP client configuration file:

{
  "mcpServers": {
    "workflows-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/workflows-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "WORKFLOWS_DIR": "/absolute/path/to/your/workflows-yaml"
      }
    }
  }
}

Or with npx (no Bun required):

{
  "mcpServers": {
    "workflows-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/workflows-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "WORKFLOWS_DIR": "/absolute/path/to/your/workflows-yaml"
      }
    }
  }
}

Or with Docker:

{
  "mcpServers": {
    "workflows-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "-v", "/absolute/path/to/your/workflows-yaml:/workflows-yaml",
        "-e", "WORKFLOWS_DIR=/workflows-yaml",
        "ghcr.io/cyanheads/workflows-mcp-server:latest"
      ]
    }
  }
}

For Streamable HTTP, set the transport and start the server:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp

Seed workflows

The repository ships a workflows-yaml/ directory with example workflows organized under categories/. These are ready to use as a starting point. The workflows-yaml/global_instructions.md file contains instructions the server prepends to every workflow_get response — edit it to set global guidance for your agent.

Prerequisites

  • Bun v1.4.0 or higher (or Node.js v24+).
  • A local directory containing YAML workflow files (or use the bundled workflows-yaml/ seed).

Installation

  1. Clone the repository:
git clone https://github.com/cyanheads/workflows-mcp-server.git
  1. Navigate into the directory:
cd workflows-mcp-server
  1. Install dependencies:
bun install
  1. Configure environment:
cp .env.example .env
# edit .env if needed — most settings have defaults

Configuration

Variable Description Default
WORKFLOWS_DIR Absolute or relative path to the workflows root directory. ./workflows-yaml
GLOBAL_INSTRUCTIONS_PATH Path to the global instructions markdown file. Derives from WORKFLOWS_DIR when not set. <WORKFLOWS_DIR>/global_instructions.md
WATCHER_DEBOUNCE_MS Milliseconds to debounce filesystem change events before rebuilding the index. 500
MCP_TRANSPORT_TYPE Transport: stdio or http. stdio
MCP_HTTP_PORT Port for HTTP server. 3010
MCP_SESSION_MODE HTTP sessions: auto or stateful. workflow_delete's confirmation prompt needs a live session, so HTTP startup with stateless fails with a configuration error. Ignored over stdio. stateful, declared in src/index.ts
MCP_AUTH_MODE Auth mode: none, jwt, or oauth. none
MCP_REQUEST_STATE_KEY Seals the requestState a confirmation round carries (≥ 32 bytes, the same on every instance, e.g. openssl rand -base64 32); any state the server did not seal is rejected before the handler runs. workflow_delete's round carries its confirmation id, so set it for HTTP deployments. unset
MCP_LOG_LEVEL Log level (RFC 5424). info
LOG_TOOL_FAILURE_PAYLOADS Log each failed tool call's arguments and result, redacted by key name and capped at LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES (default 16384). A secret inside a free-form value is not redacted. false
OTEL_ENABLED Enable OpenTelemetry instrumentation (spans, metrics, completion logs). false

See .env.example for the full list of optional overrides.


Running the server

Local development

  • Build and run:

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:stdio
    # or
    bun run start:http
    
  • Run checks and tests:

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    

Docker

docker build -t workflows-mcp-server .
docker run --rm \
  -v /path/to/workflows-yaml:/workflows-yaml \
  -e WORKFLOWS_DIR=/workflows-yaml \
  -p 3010:3010 \
  workflows-mcp-server

The Dockerfile defaults to HTTP transport, stateful session mode (required — see MCP_SESSION_MODE above), and logs to /var/log/workflows-mcp-server. OpenTelemetry peer dependencies are installed by default — build with --build-arg OTEL_ENABLED=false to omit them.


Project structure

Directory Purpose
src/index.ts createApp() entry point — registers tools and inits the workflow index service.
src/config/ Server-specific environment variable parsing and validation with Zod.
src/mcp-server/tools/ Tool definitions (*.tool.ts).
src/services/workflow-index/ WorkflowIndexService — YAML parsing, index build, watcher, semver lookup, write helpers.
tests/ Unit and integration tests mirroring src/.
workflows-yaml/ Seed workflow library — categories/ for permanent workflows, temp/ for temporary drafts, global_instructions.md for agent-global guidance.

Development guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for request-scoped logging
  • Register new tools via the barrel in src/mcp-server/tools/definitions/index.ts
  • Filesystem operations go through WorkflowIndexService, not directly in tool handlers

Contributing

Issues are welcome. Run checks and tests before submitting:

bun run devcheck
bun run test

License

Apache-2.0 — see LICENSE for details.

README fetched from the repository 4 hours ago. The original is authoritative.

Questions

About Workflows MCP Server

How do I install Workflows MCP Server?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Workflows MCP Server safe to use with an AI agent?

Its trust score is 62 out of 100 (good). It passes 5 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Workflows MCP Server still maintained?

Yes — the latest release is v0.4.1 (7 Oct 2026), and the last commit was 10 days ago. The repository has 31 stars and 2 open issues.