workflow_get returns the workflow together with the global instructions in the same response, so the agent never needs a second call to know how to run it. The filesystem watcher rebuilds the index on any edit, which means you can change a playbook in your editor and the running server picks it up.
A workflow library served over MCP. It indexes a directory of YAML playbooks by name and version at startup, watches the filesystem for changes, and hands complete workflow definitions to an agent on request.
- workflow_list — list permanent workflows, filtered by keyword, category or tags; set includeTools to surface the server/tool pairs each workflow depends on
- workflow_get — fetch a complete workflow by name, semver-aware, with the global instructions document already attached
- workflow_create — write a new permanent workflow, one file per name and version, so revisions coexist
- workflow_create_temp — write a throwaway one-shot workflow that is retrievable but stays out of list results
- workflow_delete — remove a permanent workflow by name and optional version
- Typed errors with reason codes such as not_found, version_not_found and already_exists, so a caller can branch instead of parsing messages
- Template placeholders come back verbatim — the server never interpolates them
No API keys. Bun v1.3.0 or higher, or Node.js v24+, and a directory of YAML workflow files — the repository ships a seed library you can start from. Point WORKFLOWS_DIR at it; GLOBAL_INSTRUCTIONS_PATH and WATCHER_DEBOUNCE_MS are optional overrides. Runs over stdio or Streamable HTTP, and ships as a Docker image.
One command — bunx @cyanheads/workflows-mcp-server@latest
