返回市场
编排器MCP服务器

编排器MCP服务器

作者:jeanibarz2 星标更新:2025-05-01

项目介绍

工作流编排器 MCP 服务器

该项目实现了一个基于人工智能的工作流编排器作为 MCP(模型上下文协议)服务器。它旨在通过利用大型语言模型(LLM)进行智能决策和适应性来管理和执行复杂的动态工作流。

核心概念

编排器将复杂任务分解为在工作流中定义的可管理的离散步骤。一个AI代理(LLM)根据以下内容动态确定这些步骤的顺序:

  • 工作流定义(用Markdown编写)。
  • 当前任务上下文(状态变量)。
  • 执行步骤的客户端提供的实时反馈。

关键概念包括:

  • AI驱动的决策: 基于步骤结果和上下文实现动态分支、错误处理和适应性。
  • Markdown定义: 工作流和步骤在人类可读的Markdown文件中定义。
  • 持久状态: 工作流状态存储在本地SQLite数据库中,支持长时间运行的过程。
  • 工作流恢复: 中断的工作流可以被恢复,AI帮助将客户端的状态与持久化状态进行协调。

特点

  • 智能非线性工作流: 超越刚性的脚本,实现可适应的过程。
  • 可重用及模块化的步骤: Markdown中的步骤定义促进重用和维护。
  • 人类可读及可编辑: 容易编写和理解工作流。
  • 可适应的指令及AI提示: 动态生成的提示为AI提供丰富的上下文。
  • 持久状态管理: 使用SQLite可靠地跟踪工作流进度。
  • 恢复能力: 平滑地恢复并继续中断的工作流。

架构

系统采用模块化架构:

graph LR
    客户端 --> A["API 层(FastMCP)"];
    A --> B[编排引擎];
    B --> C[工作流定义服务];
    B --> D[状态持久化模块];
    B --> E[AI交互模块];
    C --> F[(工作流文件 *.md)];
    D --> G[(SQLite 数据库)];
    E --> H[(外部LLM服务)];
  • API层(FastMCP服务器): 处理MCP工具请求。
  • 编排引擎: 协调工作流执行的核心逻辑。
  • 工作流定义服务: 加载、解析和验证Markdown工作流定义。
  • 状态持久化模块: 管理SQLite数据库中的工作流状态和历史(workflow_state.db)。
  • AI交互模块: 与外部LLM服务通信。

(详情参见docs/architecture_and_data_model.md#2-high-level-architecture

工作流

工作流定义在指定的MCP服务器设置中的WORKFLOW_DEFINITIONS_DIR目录下的子目录中。每个工作流包含:

  • index.md:定义总体目标并列出步骤。
  • steps/:包含每个步骤的单独Markdown文件的目录,包括# 编排指导# 客户端指令

可用的工作流:

  • ANALYZE_GITLAB_ISSUE
  • COMMIT_SUGGESTER
  • JOKE_GENERATOR
  • README_FRESHNESS_CHECK
  • REFACTOR_WITH_TESTS
  • RESUME
  • SAVE
  • SUGGEST_REFACTORING
  • WORKFLOW_CREATOR

(详情参见docs/architecture_and_data_model.md#8-workflow-definition-service-details

MCP工具

此服务器提供以下MCP工具:

  • list_workflows:列出可用的工作流定义。
  • start_workflow:按名称启动工作流,可选带有初始上下文。
    • 输入:{ "workflow_name": "string", "context": {} }
  • get_workflow_status:获取正在运行的工作流实例的当前状态。
    • 输入:{ "instance_id": "string" }
  • advance_workflow:报告上一步的结果并请求下一步。
    • 输入:{ "instance_id": "string", "report": { "step_id": "string", "result": any, "status": "string", ... }, "context_updates": {} }
  • resume_workflow:重新连接到现有工作流实例,提供客户端假设的状态以进行协调。
    • 输入:{ "instance_id": "string", "assumed_current_step_name": "string", "report": { ... }, "context_updates": {} }

(详细输入/输出模式参见MCP服务器定义或docs/architecture_and_data_model.md#7-api-specification,注意从HTTP API到MCP工具的映射)

配置

服务器通过环境变量进行配置。路径可以相对于当前工作目录指定,也可以指定为绝对路径:

  • WORKFLOW_DEFINITIONS_DIR(必需):工作流定义目录的路径(例如,./workflows/home/user/projects/orchestrator-mcp-server/workflows)。
  • WORKFLOW_DB_PATH(必需):SQLite数据库文件的路径(例如,./data/workflows.sqlite/home/user/projects/orchestrator-mcp-server/data/workflows.sqlite)。
  • GEMINI_MODEL_NAME(除非USE_STUB_AI_CLIENTtrue,否则必需):要使用的Gemini模型的名称(例如,gemini-2.5-flash-latest)。
  • USE_STUB_AI_CLIENT(可选):设置为true以使用测试的模拟AI客户端,绕过对AI服务配置的需求(默认:false)。
  • LOG_LEVEL(可选):日志级别(默认:info)。
  • AI_SERVICE_ENDPOINT(可选):LLM服务API的URL(仅在不使用模拟客户端时使用)。
  • AI_SERVICE_API_KEY(可选):LLM服务的API密钥(仅在不使用模拟客户端时使用)。
  • AI_REQUEST_TIMEOUT_MS(可选):AI请求的超时时间(毫秒,默认:30000)。

快速开始 / 运行服务器

  1. 前提条件:
    • uv管理的Python环境。
    • 设置所需的环境变量(参见配置)。
    • 确保WORKFLOW_DEFINITIONS_DIRWORKFLOW_DB_PATH目录存在且可写。
  2. 安装依赖项:
    uv sync
    
  3. 运行服务器:
    uv run python -m orchestrator_mcp_server
    
    或者,如果您已使用pipx install .安装了服务器,可以直接运行orchestrator-mcp-server命令。默认情况下,服务器使用相对路径(./workflows./data/workflows.sqlite)用于工作流定义和数据库。要使用这些默认路径,必须从项目的根目录(/home/jean/git/orchestrator-mcp-server)运行orchestrator-mcp-server命令。如果设置了WORKFLOW_DEFINITIONS_DIRWORKFLOW_DB_PATH环境变量为绝对路径(参见配置),则可以从任何目录运行orchestrator-mcp-server命令。

在Cline中运行

要在Cline中作为MCP服务器运行编排器,请在您的cline_mcp_settings.json文件的mcpServers内容中添加以下配置:

"orchestrator-mcp-server": {
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "command": "orchestrator-mcp-server",
      "env": {
        "WORKFLOW_DEFINITIONS_DIR": "/home/YOUR_USERNAME/git/orchestrator-mcp-server/workflows",
        "WORKFLOW_DB_PATH": "/home/YOUR_USERNAME/git/orchestrator-mcp-server/workflow_state.db",
        "GEMINI_MODEL_NAME": "gemini-2.5-flash-preview-04-17",
        "GEMINI_API_KEY": "YOUR__API_KEY"
      },
      "transportType": "stdio"
    }

记得将"YOUR_USERNAME"替换为您实际的用户名,并将"YOUR_ANONYMIZED_API_KEY"替换为您实际的Gemini API密钥,并根据项目的位置调整路径。

开发状态

下一步:

  • 实现全面的集成测试,以验证系统在各种条件下的行为。
  • 继续完善错误处理和边缘情况。
  • 扩展文档,增加使用示例和最佳实践。
  • 开发适用于常见用例的额外工作流模板。

测试

主要的测试策略涉及使用模拟AI交互模块提供确定性响应的API和核心组件的集成测试。使用专用的测试数据库。单元测试覆盖特定的实用函数和解析逻辑。

(详情参见docs/architecture_and_data_model.md#12-testing-strategy