
Workflows
STDIOStructured workflow management for LLMs to execute complex, multi-step tasks with cognitive actions.
Structured workflow management for LLMs to execute complex, multi-step tasks with cognitive actions.
🤖 Co-authored with Claude Code - Building workflows so LLMs can finally follow a recipe without burning the kitchen! 🔥
A powerful Model Context Protocol (MCP) implementation that enables LLMs to execute complex, multi-step workflows with cognitive actions and tool integrations.
workflows-mcp transforms how AI assistants handle complex tasks by providing structured, reusable workflows that combine tool usage with cognitive reasoning. Instead of ad-hoc task execution, workflows provide deterministic, reproducible paths through multi-step processes.
npx @fiveohhwon/workflows-mcp
npm install -g @fiveohhwon/workflows-mcp
git clone https://github.com/FiveOhhWon/workflows-mcp.git cd workflows-mcp npm install npm run build
Add this configuration to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{ "mcpServers": { "workflows": { "command": "npx", "args": ["-y", "@fiveohhwon/workflows-mcp"] } } }
{ "mcpServers": { "workflows": { "command": "workflows-mcp" } } }
{ "mcpServers": { "workflows": { "command": "node", "args": ["/absolute/path/to/workflows-mcp/dist/index.js"] } } }
For development with hot reload:
npm run dev
Workflows are JSON documents that define a series of steps for an LLM to execute:
{ "name": "Code Review Workflow", "description": "Automated code review with actionable feedback", "goal": "Perform comprehensive code review", "version": "1.0.0", "inputs": { "file_path": { "type": "string", "description": "Path to code file", "required": true } }, "steps": [ { "id": 1, "action": "tool_call", "tool_name": "read_file", "parameters": {"path": "{{file_path}}"}, "save_result_as": "code_content" }, { "id": 2, "action": "analyze", "description": "Analyze code quality", "input_from": ["code_content"], "save_result_as": "analysis" } ] }
create_workflow - Create a new workflow
{ "workflow": { "name": "My Workflow", "description": "What it does", "goal": "Desired outcome", "steps": [...] } }
list_workflows - List all workflows with filtering
{ "filter": { "tags": ["automation"], "name_contains": "review" }, "sort": { "field": "created_at", "order": "desc" } }
get_workflow - Retrieve a specific workflow
{ "id": "workflow-uuid" }
update_workflow - Modify existing workflow
{ "id": "workflow-uuid", "updates": { "description": "Updated description" }, "increment_version": true }
delete_workflow - Soft delete (recoverable)
{ "id": "workflow-uuid" }
start_workflow - Start a workflow execution session
{ "id": "workflow-uuid", "inputs": { "param1": "value1" } }
Returns execution instructions for the first step and an execution_id.
run_workflow_step - Execute the next step in the workflow
{ "execution_id": "execution-uuid", "step_result": "result from previous step", "next_step_needed": true }
Call this after completing each step to proceed through the workflow.
get_workflow_versions - List all available versions of a workflow
{ "workflow_id": "workflow-uuid" }
Returns list of all saved versions for version history tracking.
rollback_workflow - Rollback a workflow to a previous version
{ "workflow_id": "workflow-uuid", "target_version": "1.0.0", "reason": "Reverting breaking changes" }
Restores a previous version as the active workflow.
The workflow system supports interactive, step-by-step execution similar to the sequential thinking tool:
start_workflow
- returns the first step instructionsrun_workflow_step
, passing:
execution_id
from start_workflowstep_result
from the current stepnext_step_needed: true
to continue (or false to end early)Each step provides:
The workflow system supports template variable substitution using {{variable}}
syntax:
"path": "output_{{format}}.txt"
→ "path": "output_csv.txt"
"Processing {{count}} records"
→ "Processing 100 records"
"Enter value for {{field}}"
→ "Enter value for email"
Template variables are resolved from the current workflow session variables, including:
start_workflow
save_result_as
The workflow system includes advanced features to minimize token usage and improve performance for complex workflows:
Control which variables are visible to each step to dramatically reduce context size:
{ "name": "Optimized Workflow", "strict_dependencies": true, // Enable strict mode "steps": [ { "id": 1, "action": "tool_call", "tool_name": "read_large_file", "save_result_as": "large_data" }, { "id": 2, "action": "analyze", "input_from": ["large_data"], "save_result_as": "summary", "dependencies": [] // In strict mode, sees NO previous variables }, { "id": 3, "action": "compose", "dependencies": [2], // Only sees 'summary' from step 2 "save_result_as": "report" }, { "id": 4, "action": "validate", "show_all_variables": true, // Override to see everything "save_result_as": "validation" } ] }
strict_dependencies
(boolean, default: false)
false
: Steps without dependencies see all variables (backward compatible)true
: Steps without dependencies see NO variables (must explicitly declare)dependencies
(array of step IDs)
show_all_variables
(boolean)
Differential State Updates: Only shows variables that changed
+ variable_name
: Newly added variables~ variable_name
: Modified variablesProgressive Step Loading: Only shows next 3 upcoming steps
Selective Variable Display: Based on dependencies
strict_dependencies: true
for workflows with large intermediate outputs{ "name": "Large Data Processing", "strict_dependencies": true, "inputs": { "file_path": { "type": "string", "required": true } }, "steps": [ { "id": 1, "action": "tool_call", "tool_name": "read_csv", "parameters": { "path": "{{file_path}}" }, "save_result_as": "raw_data" }, { "id": 2, "action": "transform", "transformation": "Extract key metrics only", "dependencies": [1], // Only sees raw_data "save_result_as": "metrics" }, { "id": 3, "action": "analyze", "criteria": "Identify trends and anomalies", "dependencies": [2], // Only sees metrics, not raw_data "save_result_as": "analysis" }, { "id": 4, "action": "compose", "criteria": "Create executive summary", "dependencies": [2, 3], // Sees metrics and analysis only "save_result_as": "report" } ] }
In this example:
Analyzes code quality, identifies issues, and provides improvement suggestions.
/workflows/examples/sample-data/sample-code-for-review.js
ETL workflow with validation, quality checks, and conditional branching.
/workflows/examples/sample-data/sample-data.csv
Gathers information, validates sources, and produces comprehensive reports.
Basic example showing file operations, branching, and transformations.
See the /workflows/examples
directory for complete workflow definitions.
You can manually add workflows by placing JSON files in the imports directory:
~/.workflows-mcp/imports/
.json
)imports/processed/
after successful importExample workflow file structure:
{ "name": "My Custom Workflow", "description": "A manually created workflow", "goal": "Accomplish something specific", "version": "1.0.0", "steps": [ { "id": 1, "action": "tool_call", "description": "First step", "tool_name": "example_tool", "parameters": {} } ] }
workflows-mcp/
├── src/
│ ├── types/ # TypeScript interfaces and schemas
│ ├── services/ # Core services (storage, validation)
│ ├── utils/ # Utility functions
│ └── index.ts # MCP server implementation
├── workflows/
│ └── examples/ # Example workflows
│ └── sample-data/ # Sample data files for testing
└── tests/ # Test suite
# Install dependencies npm install # Run in development mode npm run dev # Build for production npm run build # Run tests npm test # Type checking npm run typecheck
strict_dependencies
workflow flag for explicit variable controldependencies
array to steps for selective variable visibilityshow_all_variables
step override for full visibility when neededget_workflow_versions
tool to list all versionsrollback_workflow
tool to restore previous versions~/.workflows-mcp/versions/
{{variable}}
syntax)start_workflow
and run_workflow_step
toolsrun_workflow
with interactive executionWe welcome contributions! Please see our Contributing Guidelines for details.
This project is licensed under the MIT License - see the LICENSE file for details.
Built on the Model Context Protocol specification by Anthropic.