工作流管理协议

一个强大的模型上下文协议(MCP)实现,使LLM能够执行具有认知操作和工具集成的复杂多步骤工作流。

  • by FiveOhhWon
  • JavaScript
  • 本地部署
  • 28 星标
  • 更新于
在 GitHub 查看 FiveOhhWon/workflows-mcp

使用说明

工作流mcp

🤖 与合著 克劳德代码 -构建工作流程,以便LLM最终可以按照食谱进行操作,而不会烧毁厨房! 🔥

一个强大的模型上下文协议(MCP)实现,使LLM能够通过认知动作和工具集成执行复杂的多步骤工作流。

🌟 概述

工作流mcp通过提供结构化、可重用的工作流,将工具使用与认知推理相结合,改变了人工智能助手处理复杂任务的方式。工作流通过多步骤流程提供确定性、可重复的路径,而不是临时任务执行。

🚀 主要特点

  • 📋 结构化工作流:为LLM定义清晰、循序渐进的说明
  • 🧠 认知行为:超越工具调用-分析、考虑、验证和推理
  • 🔀 高级控制流:分支、循环、并行执行
  • 💾 状态管理:跨工作流程步骤跟踪变量和结果
  • 🔍 全面验证:执行前确保工作流的完整性
  • 📊 执行跟踪:监控成功率和绩效指标
  • 🛡️ 类型安全:通过Zod验证完全支持TypeScript
  • 🎯 依赖管理:控制变量可见性以减少令牌使用
  • ⚡ 性能优化:差分更新和渐进式加载

📦 安装

使用npx(推荐)

npx @fiveohhwon/workflows-mcp

来自npm

npm install -g @fiveohhwon/workflows-mcp

来源

git clone https://github.com/FiveOhhWon/workflows-mcp.git
cd workflows-mcp
npm install
npm run build

🏃 配置

克劳德桌面版

将此配置添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json

使用npx(推荐):

{
  "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"]
    }
  }
}

发展模式

对于热重载开发:

npm run dev

📖 工作流结构

工作流是JSON文档,定义了LLM执行的一系列步骤:

{
  "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"
    }
  ]
}

🎯 操作类型

工具操作

  • tool_call:使用参数执行特定工具

认知行为

  • 分析:检查数据并确定模式
  • 考虑:在决定之前评估选项
  • 研究:从来源收集信息
  • 验证:检查条件或数据完整性
  • 总结:将信息浓缩到关键点
  • 决定:根据标准做出选择
  • 提取:从内容中提取特定信息
  • 作曲:生成新内容

控制流程

  • 分支:条件执行路径
  • 循环:迭代项目或条件
  • 并行:同时执行多个步骤
  • 等待输入:暂停用户输入

公用事业行动

  • 变换:转换数据格式
  • 检查点:保存工作流状态
  • 通知:发送更新
  • 断言:确保满足条件
  • 重试:再次尝试上一步

🛠️ 可用工具

工作流管理

  1. 创建工作流 -创建新工作流

    {
      "workflow": {
        "name": "My Workflow",
        "description": "What it does",
        "goal": "Desired outcome",
        "steps": [...]
      }
    }
    
  2. list_workflows -列出所有具有过滤功能的工作流

    {
      "filter": {
        "tags": ["automation"],
        "name_contains": "review"
      },
      "sort": {
        "field": "created_at",
        "order": "desc"
      }
    }
    
  3. get_workflow -检索特定工作流

    {
      "id": "workflow-uuid"
    }
    
  4. update_workflow -修改现有工作流

    {
      "id": "workflow-uuid",
      "updates": {
        "description": "Updated description"
      },
      "increment_version": true
    }
    
  5. 删除工作流 -软删除(可恢复)

    {
      "id": "workflow-uuid"
    }
    
  6. start_workflow -启动工作流执行会话

    {
      "id": "workflow-uuid",
      "inputs": {
        "param1": "value1"
      }
    }
    

    返回第一步的执行指令和execution_id。

  7. 运行工作流步骤 -执行工作流中的下一步

    {
      "execution_id": "execution-uuid",
      "step_result": "result from previous step",
      "next_step_needed": true
    }
    

    在完成每个步骤后调用此命令以继续完成工作流。

  8. get_workflow_versions -列出工作流的所有可用版本

    {
      "workflow_id": "workflow-uuid"
    }
    

    返回用于版本历史跟踪的所有已保存版本的列表。

  9. 回滚工作流程 -将工作流回滚到以前的版本

    {
      "workflow_id": "workflow-uuid",
      "target_version": "1.0.0",
      "reason": "Reverting breaking changes"
    }
    

    将以前的版本还原为活动工作流。

🔄 逐步执行

工作流系统支持交互式、分步执行,类似于顺序思维工具:

  1. 启动工作流 随着 start_workflow -返回第一步指令
  2. 执行该步骤 遵循提供的说明
  3. 继续下一步 随着 run_workflow_step,通过:
    • 这 execution_id 从开始工作流程
    • 任何 step_result 从当前步骤开始
    • next_step_needed: true 继续(或假提前结束)
  4. 重复 直到工作流完成

每一步都提供:

  • 明确的操作指南
  • 当前变量状态
  • 预期输出格式
  • 下一步指导

模板变量

工作流系统支持使用模板变量替换 {{variable}} 语法:

  • IN参数: "path": "output_{{format}}.txt" → "path": "output_csv.txt"
  • 在描述中: "Processing {{count}} records" → "Processing 100 records"
  • 在提示中: "Enter value for {{field}}" → "Enter value for email"
  • 在转型中:变量会自动替换

模板变量是从当前工作流会话变量中解析出来的,包括:

  • 提供的初始输入 start_workflow
  • 通过以下方式保存前一步骤的结果 save_result_as
  • 工作流执行过程中设置的任何变量

🎯 依赖关系管理和性能优化

工作流系统包括高级功能,可最大限度地减少令牌使用并提高复杂工作流的性能:

基于依赖关系的变量过滤

控制每个步骤可见的变量,以大幅减少上下文大小:

{
  "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 (布尔值,默认值:false)
    • false:没有依赖关系的步骤可以查看所有变量(向后兼容)
    • true:没有依赖关系的步骤看不到变量(必须显式声明)

步骤级别设置

  • dependencies (步骤ID数组)

    • 列出此步骤需要哪些先前步骤的输出
    • 步骤仅查看所列步骤的输出和工作流输入
    • 严格模式下的空数组表示没有可见变量
  • show_all_variables (布尔值)

    • 覆盖需要完全可见性的特定步骤
    • 可用于验证或调试步骤

性能特点

  1. 差异状态更新:仅显示已更改的变量

    • + variable_name:新增变量
    • ~ variable_name:修改的变量
    • 未更改的变量不显示
  2. 逐步加载:仅显示接下来的3个步骤

    • 减少长工作流的上下文
    • 显示剩余的“…和X步”
  3. 选择性变量显示:基于依赖关系

    • 大大减少了具有冗长输出的工作流的令牌
    • 在内部保持完整状态以进行分支/重试

令牌优化的最佳实践

  1. 使用 strict_dependencies: true 适用于具有大量中间输出的工作流
  2. 明确声明依赖关系 尽量减少可变能见度
  3. 尽早放置详细输出 在工作流中,并在后续步骤中过滤掉它们
  4. 使用有意义的变量名 明确依赖关系
  5. 组相关步骤 尽量减少交叉依赖

示例:带过滤的数据处理

{
  "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"
    }
  ]
}

在这个例子中:

  • 步骤2处理大量原始数据,但仅输出关键指标
  • 步骤3在不查看大量原始数据的情况下分析指标
  • 步骤4仅根据指标和分析创建报告
  • 通过过滤掉冗长的中间数据,最大限度地减少了令牌的使用

📚 示例工作流

代码审查工作流程

分析代码质量,识别问题,并提供改进建议。

  • 样本数据: /workflows/examples/sample-data/sample-code-for-review.js

数据处理管道

ETL工作流,包括验证、质量检查和条件分支。

  • 样本数据: /workflows/examples/sample-data/sample-data.csv

研究助理

收集信息,验证来源,并生成全面的报告。

简单文件处理器

显示文件操作、分支和转换的基本示例。

请参阅 /workflows/examples 完整工作流定义的目录。

📁 手动工作流导入

您可以通过将JSON文件放置在import目录中手动添加工作流:

  1. 导航至 ~/.workflows-mcp/imports/
  2. 将您的工作流JSON文件放在那里(任何以结尾的文件名 .json)
  3. 启动或重新启动MCP服务器
  4. 工作流将通过以下方式自动导入:
    • 如果缺少或无效,则分配新的UUID
    • 如果不存在,则创建元数据
    • 原始文件已移动到 imports/processed/ 成功导入后

工作流文件结构示例:

{
  "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

📝 更新日志

v0.3.3(最新版本)

  • ⚡ 添加了基于依赖关系的变量过滤,用于令牌优化
  • ✨ 添加 strict_dependencies 显式变量控制的工作流标志
  • ✨ 添加 dependencies 用于选择性变量可见性的数组到步骤
  • ✨ 添加 show_all_variables 需要时,可实现完全可见性的步进覆盖
  • 🎯 已实现差异状态更新(仅显示更改的变量)
  • 📊 添加了逐步加载(仅显示接下来的3个步骤)
  • 🐛 修复了update_workflow工具中的UUID验证错误
  • 📝 添加了明确的说明,以防止在工作流执行过程中出现注释

v0.3.0

  • ✨ 添加了具有自动版本历史记录的工作流版本控制
  • ✨ 添加 get_workflow_versions 列出所有版本的工具
  • ✨ 添加 rollback_workflow 恢复以前版本的工具
  • 📁 版本历史记录存储在 ~/.workflows-mcp/versions/

v0.2.1

  • ✨ 添加了模板变量分辨率({{variable}} 语法)
  • ✨ 修复了正确处理条件步骤的分支逻辑
  • ✨ 增强的create_workflow工具,具有全面的嵌入式文档
  • 🐛 修复了ES模块导入问题
  • 📁 使用示例数据文件夹改进了文件组织

v0.2.0版本

  • ✨ 逐步执行工作流
  • ✨ 添加 start_workflow 和 run_workflow_step 工具
  • ✨ 工作流状态的会话管理
  • 🔄 替换 run_workflow 交互式执行

v0.1.0

  • 🎉 初始版本
  • ✨ 核心工作流引擎
  • ✨ 16种动作类型
  • ✨ 导入/导出功能
  • ✨ 示例工作流

🔮 路线图

  • [x] 核心工作流引擎
  • [x] 基本动作类型
  • [x] 工作流验证
  • [x] 示例工作流
  • [x] 逐步执行
  • [x] 变量插值
  • [x] 分支逻辑
  • [x] 进出口系统
  • []高级错误处理和重试逻辑
  • []循环和并行执行
  • []工作流市场
  • []可视化工作流生成器
  • []性能优化
  • [x] 工作流版本控制和回滚

🤝 贡献

我们欢迎捐款!请查看我们的 贡献指南 了解详情。

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

建立在 模型上下文协议 Anthropic的规范。