workflows-mcp-server
Allows storing workflow data using Cloudflare's KV, R2, or D1 storage services.
Allows storing workflow data in a Supabase database, leveraging their Postgres backend for persistence.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@workflows-mcp-serverlist all workflows related to deployment"
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.
Tools
Five tools covering the full workflow library lifecycle — discovery, retrieval, creation, and deletion for both permanent and temporary workflows:
Tool | Description |
| List all permanent workflows in the index, with optional keyword, category, and tag filters. |
| Retrieve a complete workflow definition by name, with global instructions prepended. |
| Write a new permanent workflow YAML to the library. |
| Write a temporary one-shot workflow, indexed but excluded from list results. |
| Permanently remove a permanent workflow by name and optional version. |
workflow_list
List permanent workflows from the in-memory index.
Optional keyword
queryfilter (case-insensitive substring across workflow name and description)Optional category filter (case-insensitive substring match)
Optional tag filter (AND match — all listed tags must be present)
Set
includeTools: trueto surface the uniqueserver/toolpairs used across each workflow's stepsTemporary workflows are excluded; results sorted by name then version descending
Empty results echo the applied filters with a hint to broaden
workflow_get
Retrieve a complete workflow by name, including the global instructions document.
Semver-aware: omit
versionto get the highest available match; specify a version for an exact lookupReturns the full workflow YAML structure with all steps and metadata
Injects the
global_instructions.mdcontent asglobalInstructions— apply these when executing the workflow;nullwhen the file is absentTemporary workflows are accessible here even though excluded from
workflow_listTemplate placeholders (
{{input.foo}},{{steps.X.output.Y}}) are returned verbatim — the server never interpolates them
workflow_create
Write a new permanent workflow to the library.
Workflow stored at
categories/<slugified-category>/<slugified-name>-<slugified-version>-workflow.yaml— one file pername@version, so multiple versions coexistRejects if
name@versionalready exists — bump the version to create a new revisionServer stamps
created_dateandlast_updated_dateautomaticallyIndex and snapshot rebuilt after write; filesystem watcher also fires (idempotent, debounced)
workflow_create_temp
Write a throwaway workflow to the temp/ directory.
No conflict check — temp workflows are intentionally ephemeral and overwriteable
Indexed and accessible via
workflow_getbut excluded fromworkflow_listresultsUseful for one-shot plans, short-lived scaffolding, or session-specific orchestration steps
workflow_delete
Permanently remove a permanent workflow from the library.
Semver-aware: omit
versionto delete the highest available match; specify a version to target one exactlyOnly permanent workflows can be deleted — temporary workflows are rejected (they expire on their own)
Irreversible: the file is removed and the workflow no longer appears in
workflow_listorworkflow_get
Related MCP server: LLMling
Features
Built on @cyanheads/mcp-ts-core:
Declarative tool definitions — single file per primitive, framework handles registration and validation
Unified error handling — handlers throw, framework catches, classifies, and formats
Pluggable auth:
none,jwt,oauthSwappable storage backends:
in-memory,filesystem,Supabase,Cloudflare KV/R2/D1Structured logging with optional OpenTelemetry tracing
STDIO and Streamable HTTP transports
Workflow library:
In-memory index keyed by
name@version, built at startup fromworkflows-yaml/categories/recursivelySemver-aware lookup — latest version returned when version is omitted
Filesystem watcher (Node.js
fs.watchrecursive) rebuilds the index on any add/change/remove; debounced to avoid thrashYAML validated at index time — invalid files are skipped and logged, never crash the server
_index.jsonsnapshot written on every rebuild for external tooling and debuggingConfigurable
WORKFLOWS_DIR,GLOBAL_INSTRUCTIONS_PATH, and debounce interval
Agent-friendly output:
workflow_getalways includesglobalInstructionsalongside the workflow — no second call neededDiscriminated
sourcefield (permanent|temp) on everyworkflow_getresponseTyped error contracts with structured
reasoncodes (not_found,version_not_found,already_exists,temp_not_allowed,index_unavailable) so callers can branch on error type rather than parsing messagesworkflow_listwithincludeTools: truesurfaces all MCP server/tool dependencies at a glance
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/mcpSeed 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.3.2 or higher (or Node.js v24+).
A local directory containing YAML workflow files (or use the bundled
workflows-yaml/seed).
Installation
Clone the repository:
git clone https://github.com/cyanheads/workflows-mcp-server.gitNavigate into the directory:
cd workflows-mcp-serverInstall dependencies:
bun installConfigure environment:
cp .env.example .env
# edit .env if needed — most settings have defaultsConfiguration
Variable | Description | Default |
| Absolute or relative path to the workflows root directory. |
|
| Path to the global instructions markdown file. Derives from |
|
| Milliseconds to debounce filesystem change events before rebuilding the index. |
|
| Transport: |
|
| Port for HTTP server. |
|
| Auth mode: |
|
| Log level (RFC 5424). |
|
| Enable OpenTelemetry instrumentation (spans, metrics, completion logs). |
|
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:httpRun 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-serverThe Dockerfile defaults to HTTP transport, stateless session mode, 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 |
|
|
| Server-specific environment variable parsing and validation with Zod. |
| Tool definitions ( |
|
|
| Unit and integration tests mirroring |
| Seed workflow library — |
Development guide
See CLAUDE.md for development guidelines and architectural rules. The short version:
Handlers throw, framework catches — no
try/catchin tool logicUse
ctx.logfor request-scoped loggingRegister new tools via the barrel in
src/mcp-server/tools/definitions/index.tsFilesystem operations go through
WorkflowIndexService, not directly in tool handlers
Contributing
Issues and pull requests are welcome. Run checks and tests before submitting:
bun run devcheck
bun run testLicense
Apache-2.0 — see LICENSE for details.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceA Model Context Protocol implementation that enables LLMs to execute complex, multi-step workflows combining tool usage with cognitive reasoning, providing structured, reusable paths through tasks with advanced control flow.Last updated94228MIT
- Alicense-qualityCmaintenanceA declarative framework that manages LLM resources, prompts, and tools through YAML configuration files. It enables LLMs to interact with external data, CLI commands, and Python functions using the Model Context Protocol.Last updated19MIT
- AlicenseAqualityBmaintenanceModule discovery, documentation search, and skill generation for AI agents via the Model Context Protocol.Last updated184GPL 3.0
- Alicense-qualityDmaintenanceProvides structured workflows (phases, gates, coordination) for AI agents, enabling complex task execution with quality enforcement and multi-agent coordination via Model Context Protocol.Last updated1Apache 2.0
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Stop re-explaining yourself to Agents. Give it the right context, right when needed.
Connect AI agents to Replynodes over the Model Context Protocol.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/cyanheads/workflows-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server