工作流编排器MCP服务器
该项目将AI驱动的工作流编排器实现为MCP(模型上下文协议)服务器。它旨在通过利用大型语言模型(LLM)进行智能决策和适应性来管理和执行复杂的动态工作流程。
核心概念
编排器将复杂的任务分解为工作流中定义的可管理的离散步骤。AI代理(LLM)根据以下内容动态确定这些步骤的顺序:
- 工作流定义(用Markdown编写)。
- 当前任务上下文(状态变量)。
- 执行步骤的客户端提供的实时反馈。
关键概念包括:
- 人工智能驱动决策: 支持基于步骤结果和上下文的动态分支、错误处理和自适应。
- Markdown定义: 工作流程和步骤在人类可读的Markdown文件中定义。
- 持久状态: 工作流状态存储在本地SQLite数据库中,允许长时间运行的流程。
- 工作流恢复: 中断的工作流可以恢复,人工智能可以帮助协调客户端的状态和持久状态。
特性
- 智能非线性工作流程: 从僵化的脚本转向适应性强的流程。
- 可重复使用和模块化步骤: Markdown中的步骤定义有助于提高重用性和可维护性。
- 人类可读和可编辑: 易于编写和理解工作流程。
- 适应性指令和AI提示: 动态生成的提示为AI提供了丰富的上下文。
- 持久状态管理: 使用SQLite可靠地跟踪工作流进度。
- 恢复能力: 无缝恢复并继续中断的工作流。
建筑
该系统采用模块化架构:
graph LR
Client --> A["API Layer (FastMCP)"];
A --> B[Orchestration Engine];
B --> C[Workflow Definition Service];
B --> D[State Persistence Module];
B --> E[AI Interaction Module];
C --> F[(Workflow Files *.md)];
D --> G[(SQLite Database)];
E --> H[(External LLM Service)];- API层(FastMCP服务器): 处理MCP工具请求。
- 编排引擎: 协调工作流执行的核心逻辑。
- 工作流定义服务: 加载、解析和验证Markdown工作流定义。
- 状态持久性模块: 管理SQLite数据库中的工作流状态和历史记录(
workflow_state.db). - AI交互模块: 与外部LLM服务通信。
(参见 docs/architecture_and_data_model.md#2-high-level-architecture 详细信息)。
工作流
工作流在 WORKFLOW_DEFINITIONS_DIR MCP服务器设置中指定的目录。每个工作流都有:
index.md:定义总体目标并列出步骤。steps/:一个包含每个步骤的单个Markdown文件的目录,包括# Orchestrator Guidance和# Client Instructions.
可用工作流:
- 分析itlab_问题
- 委员会建议者
- jokegenerator
- README_freshenness_CHECK
- 重构器与测试
- 简历
- 保存
- 建议分解
- 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_CLIENT是true):要使用的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).
快速入门/运行服务器
- 先决条件:
- Python环境由管理 uv. - 设置所需的环境变量(请参阅配置)。 - 确保目录 WORKFLOW_DEFINITIONS_DIR 和 WORKFLOW_DB_PATH 存在并且可写。
- 安装依赖关系:
uv sync- 运行服务器:
uv run python -m orchestrator_mcp_server或者,如果您使用安装了服务器 pipx install .,你可以运行 orchestrator-mcp-server 直接命令。默认情况下,服务器使用相对路径(./workflows 和 ./data/workflows.sqlite)用于工作流定义和数据库。要使用这些默认路径,您必须运行 orchestrator-mcp-server 来自项目根目录的命令(/home/jean/git/orchestrator-mcp-server).如果你设置 WORKFLOW_DEFINITIONS_DIR 和 WORKFLOW_DB_PATH 将环境变量转换为绝对路径(请参阅配置),您可以运行 orchestrator-mcp-server 命令从任何目录。
与Cline一起跑步
要在Cline中将编排器作为MCP服务器运行,请将以下配置添加到 mcpServers 您的内容 cline_mcp_settings.json 文件:
"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键,如果您的项目位于其他位置,请调整路径。
开发状态
下一步:
- 实施全面的集成测试,以验证系统在各种条件下的行为。
- 继续改进错误处理和边缘情况。
- 用使用示例和最佳实践扩展文档。
- 为常见用例开发其他工作流模板。
测试
主要的测试策略包括使用 人工智能交互模块 以提供确定性响应。使用专用测试数据库。单元测试涵盖了特定的实用函数和解析逻辑。
(参见 docs/architecture_and_data_model.md#12-testing-strategy 详细信息)。
