workflows-mcp is a powerful Model Context Protocol (MCP) implementation that enables large language models to execute complex, multi-step workflows combining tool usage with cognitive reasoning. Instead of ad-hoc task execution, it provides structured, reusable workflows for deterministic and reproducible 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"]
}
}
}
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"
}
}
run_workflow_step - Execute the next step in the workflow
{
"execution_id": "execution-uuid",
"step_result": "result from previous step",
"next_step_needed": true
}
get_workflow_versions - List all available versions of a workflow
{
"workflow_id": "workflow-uuid"
}
rollback_workflow - Rollback a workflow to a previous version
{
"workflow_id": "workflow-uuid",
"target_version": "1.0.0",
"reason": "Reverting breaking changes"
}
The workflow system supports interactive, step-by-step execution:
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"
Control which variables are visible to each step to reduce context size:
{
"name": "Optimized Workflow",
"strict_dependencies": true,
"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": []
},
{
"id": 3,
"action": "compose",
"dependencies": [2],
"save_result_as": "report"
},
{
"id": 4,
"action": "validate",
"show_all_variables": true,
"save_result_as": "validation"
}
]
}
strict_dependencies
(boolean, default: false)
false
: Steps without dependencies see all variablestrue
: Steps without dependencies see NO variablesdependencies
(array of step IDs)
show_all_variables
(boolean)
You can manually add workflows by placing JSON files in the imports directory:
~/.workflows-mcp/imports/
.json
)Example 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": {}
}
]
}
To add this MCP server to Claude Code, run this command in your terminal:
claude mcp add-json "workflows" '{"command":"npx","args":["-y","@fiveohhwon/workflows-mcp"]}'
See the official Claude Code MCP documentation for more details.
There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json
file so that it is available in all of your projects.
If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json
file.
To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".
When you click that button the ~/.cursor/mcp.json
file will be opened and you can add your server like this:
{
"mcpServers": {
"workflows": {
"command": "npx",
"args": [
"-y",
"@fiveohhwon/workflows-mcp"
]
}
}
}
To add an MCP server to a project you can create a new .cursor/mcp.json
file or add it to the existing one. This will look exactly the same as the global MCP server example above.
Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.
The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.
You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.
To add this MCP server to Claude Desktop:
1. Find your configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
~/.config/Claude/claude_desktop_config.json
2. Add this to your configuration file:
{
"mcpServers": {
"workflows": {
"command": "npx",
"args": [
"-y",
"@fiveohhwon/workflows-mcp"
]
}
}
}
3. Restart Claude Desktop for the changes to take effect