Exposes declarative YAML-defined workflows as tools for AI agents to automate CI/CD, data processing, and DevOps tasks.
Also known as orieg/yaml-workflow, yaml-workflow
- Stars
- 5
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.9.6
- Last commit
- Oct 12, 2026
- License
- MIT
What is YAML Workflow MCP?
YAML Workflow exposes declarative YAML-defined workflows as tools for AI agents to automate CI/CD, data processing, and DevOps tasks.
Summary generated from the project's README
About YAML Workflow MCP server
YAML Workflow provides a lightweight engine for automating tasks through declarative YAML files. It is designed for developers needing to manage CI/CD pipelines, data processing, and DevOps automation without the heavy infrastructure requirements of traditional orchestrators. Users can define reproducible workflows that include shell commands, Python code, HTTP requests, and file operations using Jinja2 templating for dynamic variables.
This server can be installed via pip with the mcp extra to expose these workflows as tools for AI agents. It runs locally or in CI environments and supports features like parallel execution through depends_on logic, state persistence for resuming failed runs, and a watch mode for development. Because it follows a GitOps approach, all workflow definitions remain version-controlled alongside your application code. The system is highly extensible through a plugin system and custom task registration, making it a flexible alternative to complex shell scripts or enterprise-scale orchestration platforms.
What you can do with it
- 1Automate CI/CD pipelinesAn AI agent can execute multi-step build, test, and deployment sequences defined in YAML.
- 2Manage batch data processingDevelopers can run ETL pipelines that include automatic retries and the ability to resume after a failure.
- 3Orchestrate AI and LLM workflowsThe engine can manage complex API calls involving authentication, retries, and batch processing.
- 4Replace complex shell scriptsUsers can transition from fragile shell scripts to parameterized, reproducible workflows with better error handling.
Written from the project's README. Every use case is checked against a quote from it.
How to install YAML Workflow MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall YAML Workflow MCP in Claude Code
$ claude mcp add yaml-workflow -- uvx yaml-workflowInstall YAML Workflow MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"yaml-workflow": {
"command": "uvx",
"args": [
"yaml-workflow"
]
}
}
}Install YAML Workflow MCP in VS Code
.vscode/mcp.json
{
"servers": {
"yaml-workflow": {
"type": "stdio",
"command": "uvx",
"args": [
"yaml-workflow"
]
}
}
}Install YAML Workflow MCP in VS Code CLI
$ code --add-mcp '{"name":"yaml-workflow","type":"stdio","command":"uvx","args":["yaml-workflow"]}'Install YAML Workflow MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"yaml-workflow": {
"command": "uvx",
"args": [
"yaml-workflow"
]
}
}
}Install YAML Workflow MCP in Codex
$ codex mcp add yaml-workflow -- uvx yaml-workflowInstall YAML Workflow MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.yaml-workflow] command = "uvx" args = ["yaml-workflow"]
Install YAML Workflow MCP in Gemini CLI
$ gemini mcp add -s user yaml-workflow uvx -- yaml-workflowInstall YAML Workflow MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"yaml-workflow": {
"command": "uvx",
"args": [
"yaml-workflow"
]
}
}
}Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachableorieg/yaml-workflow is public and reachablegithub.com/orieg/yaml-workflow ↗Pass
- Package names this repository as its sourceyaml-workflow names orieg/yaml-workflow as sourcepypi.org/project/yaml-workflow/ ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for yaml-workflowpypi.org/project/yaml-workflow/ ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-10-12github.com/orieg/yaml-workflow ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from yaml-workflowPass
- No critical advisory in the package or its dependencies4 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubYAML Workflow
A lightweight workflow engine for CI/CD pipelines, data processing, and DevOps automation. Define reproducible, version-controlled workflows in YAML — run them locally, in CI, or on any machine with Python installed.
Why yaml-workflow?
Most workflow tools require servers, databases, and complex infrastructure. yaml-workflow takes a GitOps approach — workflows are plain YAML files, version-controlled alongside your code:
| yaml-workflow | Airflow / Prefect / Dagster | |
|---|---|---|
| Setup | pip install yaml-workflow |
Server, database, scheduler, workers |
| Configuration | Plain YAML files | Python DAGs + infrastructure config |
| Dependencies | 2 (PyYAML, Jinja2) | 50+ packages, Docker, PostgreSQL |
| Use case | Local automation, scripts, CI/CD, data pipelines | Enterprise orchestration at scale |
| Learning curve | Minutes | Hours to days |
| State | File-based, resumable | Database-backed |
Choose yaml-workflow when you need:
- Simple task automation without infrastructure overhead
- Reproducible pipelines defined in version-controlled YAML
- Batch processing with parallel execution
- State persistence and workflow resume after failures
- A lightweight alternative to shell scripts with better error handling
- GitOps-friendly pipelines that live in your repo alongside the code
- A single tool that runs the same pipeline locally and in CI
Features
- YAML-driven workflow definition with Jinja2 templating
- Multiple task types: shell, Python, file, template, HTTP, batch
- Workflow composition via
imports— reuse steps across workflows - Plugin system via entry points —
pip install yaml-workflow-myplugin - Watch mode —
--watchto re-run on file changes - Dry-run mode to preview without executing
- Workflow visualization (ASCII branching DAG and Mermaid)
- Parallel execution with configurable worker pools
- State persistence and resume capability
- Retry mechanisms with configurable strategies
- Namespaced variables (
args,env,steps,batch) - Flow control with custom step sequences and conditions
- Extensible task system via
@register_taskdecorator - Parallel step execution via
depends_on— run independent steps concurrently - Secrets validation — fail fast if required environment variables are missing
- Structured output (
--format json) for CI integration and scripting - MCP server — expose workflows as AI agent tools (
pip install yaml-workflow[mcp]) - Web dashboard — monitor runs and trigger workflows (
pip install yaml-workflow[serve]) - GitHub Action — run workflows in CI with
uses: orieg/yaml-workflow@v0.9.3
Use Cases
- CI/CD pipelines — multi-step build, test, deploy workflows in YAML
- Data processing — batch ETL pipelines with retry and resume on failure
- DevOps automation — infrastructure tasks with secrets management and notifications
- AI/LLM pipelines — orchestrate API calls with auth, retry, and batch processing
- Local automation — replace shell scripts with reproducible, parameterized workflows
Quick Start
# Install (isolated CLI — recommended)
pipx install yaml-workflow # Core CLI
pipx install 'yaml-workflow[all]' # + web dashboard + MCP server
# Or with pip
pip install yaml-workflow
# Initialize example workflows
yaml-workflow init
# Run a workflow with parameters
yaml-workflow run workflows/hello_world.yaml name=Alice
Example workflow (hello_world.yaml):
name: Hello World
description: A simple greeting workflow
params:
name:
type: string
default: World
steps:
- name: create_greeting
task: template
inputs:
template: "Hello, {{ args.name }}!"
output_file: greeting.txt
- name: show_greeting
task: shell
inputs:
command: cat greeting.txt
Visualize workflows
yaml-workflow visualize workflows/data_pipeline.yaml
Workflow: Data Pipeline
┌─────────────────┐
│ detect_format │
│ python_code │
└─────────────────┘
│
▼
┌────────────────┐ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ process_json │ │ process_csv │ │ process_xml │ │ handle_unknown │
│ shell │ │ shell │ │ shell │ │ shell │
└────────────────┘ └────────────────┘ └────────────────┘ └────────────────┘
│
▼
┌─────────────────┐
│ generate_report │
│ python_code │
└─────────────────┘
Adjacent conditional steps are automatically grouped as branches. Use --format mermaid to export for docs or GitHub rendering.
Dry-run mode
Preview what a workflow would do without executing anything:
yaml-workflow run workflows/hello_world.yaml name=Alice --dry-run
[DRY-RUN] Workflow: Hello World
[DRY-RUN] Steps: 2 to execute
[DRY-RUN] Step 'create_greeting' — task: template — WOULD EXECUTE
template: Hello, Alice!
output_file: greeting.txt
[DRY-RUN] Step 'show_greeting' — task: shell — WOULD EXECUTE
command: cat greeting.txt
[DRY-RUN] Complete. 2 step(s) would execute, 0 would be skipped.
[DRY-RUN] No files were written. No tasks were executed.
Workflow composition
Reuse steps across workflows with imports:
# main.yaml
imports:
- ./shared/logging_steps.yaml
- ./shared/common_params.yaml
steps:
- name: my_step
task: shell
inputs:
command: echo "runs after imported steps"
Imported steps are prepended. Imported params provide defaults that the main workflow can override. Supports transitive imports with circular detection.
Parallel Steps
Run independent steps concurrently with depends_on:
steps:
- name: fetch_api
task: http.request
inputs: {url: "https://api.example.com/data"}
- name: fetch_db
task: python_code
inputs:
code: "result = query_database()"
- name: merge
task: python_code
depends_on: [fetch_api, fetch_db]
inputs:
code: |
api_data = steps["fetch_api"]["result"]
db_data = steps["fetch_db"]["result"]
result = {"merged": True}
Watch mode
Automatically re-run on file changes during development:
yaml-workflow run workflows/hello_world.yaml name=Alice --watch
Monitors the workflow file and all imported files. Press Ctrl+C to stop.
GitHub Actions
Run workflows in CI with the yaml-workflow action:
- name: Run pipeline
uses: orieg/yaml-workflow@v0.9.3
id: pipeline
with:
workflow: workflows/deploy.yaml
params: |
env=production
version=1.2.0
format: json
- name: Use results
run: echo '${{ steps.pipeline.outputs.result }}'
Docker & Kubernetes
Run anywhere without installing Python:
# Run a workflow in Docker
docker run --rm -v $(pwd)/workflows:/app/workflows \
ghcr.io/orieg/yaml-workflow run /app/workflows/pipeline.yaml
# Start the web dashboard
docker run -p 8080:8080 -v $(pwd)/workflows:/app/workflows \
ghcr.io/orieg/yaml-workflow
Deploy on Kubernetes with the Helm chart:
helm install my-workflows ./helm/yaml-workflow \
--set-file workflows.files.pipeline\\.yaml=workflows/pipeline.yaml
Compatible with ArgoCD (GitOps) and Argo Workflows. See the Kubernetes guide.
More commands
# List available workflows
yaml-workflow list
# Validate a workflow (with JSON output for CI)
yaml-workflow validate workflows/hello_world.yaml --format json
# Resume a failed workflow
yaml-workflow run workflows/hello_world.yaml --resume
# Structured output for scripting
yaml-workflow run workflows/pipeline.yaml --format json --output results.json
Documentation
Full documentation is available at orieg.github.io/yaml-workflow.
- Getting Started - Installation and first workflow
- Task Types - Shell, Python, file, template, and batch tasks
- Workflow Structure - YAML configuration reference
- Templating - Jinja2 variable substitution
- State Management - Persistence and resume
- Task Development - Creating custom tasks
- API Reference - Full API documentation
Contributing
Contributions are welcome! See the Contributing Guide for development setup and guidelines.
License
This project is licensed under the MIT License - see the LICENSE file for details.
YAML Workflow MCP questions
How do I add YAML Workflow MCP to Claude Code?
Run claude mcp add yaml-workflow -- uvx yaml-workflow in your terminal. Add --scope user to make it available in every project.
How do I add YAML Workflow MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
How can I use YAML Workflow with an AI agent?
You can expose your workflows as AI agent tools by installing the MCP server component using pip install yaml-workflow[mcp].
Can I run workflows in parallel?
Yes, you can achieve parallel execution of independent steps by using the depends_on keyword to define step dependencies.
What happens if a workflow fails?
The engine supports state persistence and allows you to resume a workflow after a failure.
Does it support templating?
Yes, it uses Jinja2 for YAML-driven workflow definitions and variable substitution.