返回市场
任务驱动器-mcp

任务驱动器-mcp

作者:HamStudy4 星标更新:2025-07-18

项目介绍

TaskDriver MCP

一个用于管理和编排LLM代理作为任务执行者的Model Context Protocol (MCP)服务器。

安装

# 全局安装
npm install -g taskdriver-mcp

# 或使用npx/bunx直接运行
npx taskdriver-mcp --help
bunx taskdriver-mcp --help

快速开始

命令行界面使用

# 创建一个新的项目
npx taskdriver-mcp create-project "my-project" "我的第一个项目"

# 列出项目
npx taskdriver-mcp list-projects

# 获取项目详情
npx taskdriver-mcp get-project "my-project"

# 创建任务类型模板
npx taskdriver-mcp create-task-type "my-project" "analysis"

# 创建任务
npx taskdriver-mcp create-task "my-project"

# 获取代理的下一个任务
npx taskdriver-mcp get-next-task "my-project" "my-agent"

# 完成任务
npx taskdriver-mcp complete-task "my-agent" "my-project" "task-id" "任务已完成"

MCP服务器模式

以MCP服务器模式运行TaskDriver,用于标准I/O传输:

npx taskdriver-mcp mcp

HTTP服务器模式

以HTTP REST API服务器模式运行TaskDriver:

npx taskdriver-mcp server

特性

  • 多模式部署:MCP服务器(标准I/O)、HTTP REST API和命令行界面
  • 基于项目的组织:通过项目隔离任务、代理和配置
  • 基于模板的任务类型:创建可复用的任务模板并进行变量替换
  • 原子任务分配:无竞态条件的任务分配给代理
  • 租约管理:自动清理过期任务和失败代理
  • 多种存储后端:文件、MongoDB和Redis存储提供者
  • 全面监控:健康检查、指标和详细的项目统计信息
  • 批处理:分组相关任务并跟踪批处理完成情况
  • 重试逻辑:为失败任务配置重试策略

部署模式

1. MCP服务器(标准I/O)

适用于与支持模型上下文协议的LLM框架集成:

bun run mcp

MCP服务器提供了19个工具来实现完整的任务管理:

  • 项目管理(创建、列出、更新、删除)
  • 任务生命周期(创建、分配、完成、失败)
  • 代理操作(注册、状态)
  • 监控(状态、指标、健康)

2. HTTP REST API

适用于Web应用和服务:

bun run http

访问API在http://localhost:3000,具有所有操作的完整REST端点。

3. 命令行界面

适用于直接命令行使用和自动化:

taskdriver --help

核心概念

项目

项目为任务和代理提供了隔离环境:

# 创建一个项目
taskdriver create-project "ai-analysis" "AI驱动的代码分析项目" \\
  --instructions "@project-instructions.md" \\
  --max-retries 3 \\
  --lease-duration 15

# 列出项目
taskdriver list-projects

# 获取项目详情
taskdriver get-project "ai-analysis"

任务类型

任务类型是创建相似任务的模板:

# 使用模板创建任务类型
taskdriver create-task-type "ai-analysis" "code-review" \\
  --template "@review-template.md" \\
  --variables "repository_url" "branch_name" "focus_area"

# 列出任务类型
taskdriver list-task-types "ai-analysis"

任务

任务是由代理执行的具体工作项:

# 创建一个任务
taskdriver create-task "ai-analysis" "task-type-id" "审查安全漏洞" \\
  --variables '{"repository_url": "https://github.com/user/repo", "focus_area": "security"}'

# 列出任务
taskdriver list-tasks "ai-analysis" --status queued

# 获取任务详情
taskdriver get-task "task-id"

代理

代理是执行任务的工作者:

# 注册一个代理
taskdriver register-agent "ai-analysis" "security-agent"

# 获取代理的下一个任务
taskdriver get-next-task "security-agent" "ai-analysis"

# 完成一个任务
taskdriver complete-task "security-agent" "ai-analysis" "task-id" \\
  --result '{"status": "completed", "findings": ["vulnerability1", "vulnerability2"]}'

文件读取支持

描述和模板都支持使用@前缀从文件中读取内容:

# 从文件中读取项目描述
taskdriver create-project "my-project" "@project-description.txt"

# 从文件中读取项目说明
taskdriver create-project "my-project" "简短描述" --instructions "@instructions.md"

# 从文件中读取任务模板
taskdriver create-task-type "my-project" "analysis" --template "@analysis-template.md"

配置

环境变量

核心配置

# 服务器配置
TASKDRIVER_HOST=localhost                    # 服务器主机(默认:localhost)
TASKDRIVER_PORT=3000                        # 服务器端口(默认:3000)
TASKDRIVER_MODE=auto                        # 服务器模式:自动、mcp、http、cli

# 存储提供者
TASKDRIVER_STORAGE_PROVIDER=file            # 存储提供者:文件、mongodb、redis
TASKDRIVER_STORAGE_CONNECTION_STRING=       # MongoDB/Redis连接字符串

文件存储配置

TASKDRIVER_FILE_DATA_DIR=./data             # 文件存储的数据目录
TASKDRIVER_FILE_LOCK_TIMEOUT=30000          # 文件锁超时时间(毫秒)

MongoDB配置

TASKDRIVER_MONGODB_DATABASE=taskdriver      # MongoDB数据库名称
TASKDRIVER_MONGODB_OPTIONS={}               # MongoDB连接选项(JSON)

Redis配置

TASKDRIVER_REDIS_DATABASE=0                 # Redis数据库编号
TASKDRIVER_REDIS_KEY_PREFIX=taskdriver:     # Redis键前缀
TASKDRIVER_REDIS_OPTIONS={}                 # Redis连接选项(JSON)

日志配置

TASKDRIVER_LOG_LEVEL=info                   # 日志级别:调试、信息、警告、错误
TASKDRIVER_LOG_PRETTY=false                 # 是否美化打印日志(真/假)
TASKDRIVER_LOG_CORRELATION=true             # 是否启用关联ID(真/假)

安全配置

TASKDRIVER_ENABLE_AUTH=true                 # 是否启用身份验证(真/假)
TASKDRIVER_API_KEY_LENGTH=32                # API密钥长度(字符数)
TASKDRIVER_SESSION_TIMEOUT=3600             # 会话超时时间(秒)

默认任务配置

TASKDRIVER_DEFAULT_MAX_RETRIES=3            # 任务默认最大重试次数
TASKDRIVER_DEFAULT_LEASE_DURATION=10        # 任务默认租约持续时间(分钟)
TASKDRIVER_REAPER_INTERVAL=1                # 清理间隔(分钟)

存储提供者

文件存储(开发)

TASKDRIVER_STORAGE_PROVIDER=file
TASKDRIVER_FILE_DATA_DIR=./data

MongoDB(生产)

TASKDRIVER_STORAGE_PROVIDER=mongodb
TASKDRIVER_MONGODB_URI=mongodb://localhost:27017/taskdriver

Redis(高性能)

TASKDRIVER_STORAGE_PROVIDER=redis
TASKDRIVER_REDIS_URI=redis://localhost:6379

API参考

REST API

当运行HTTP服务器时,在/api/docs处可以找到完整的REST API文档。

关键端点:

  • GET /api/projects - 列出项目
  • POST /api/projects - 创建项目
  • GET /api/projects/:id - 获取项目详情
  • POST /api/projects/:id/tasks - 创建任务
  • GET /api/projects/:id/tasks - 列出任务
  • POST /api/agents/:name/tasks/assign - 分配任务给代理

MCP工具

当以MCP服务器模式运行时,有19个可用工具:

项目管理

  • create_project - 创建新项目
  • list_projects - 列出所有项目
  • get_project - 获取项目详情
  • update_project - 更新项目属性

任务管理

  • create_task_type - 创建任务模板
  • list_task_types - 列出任务类型
  • create_task - 创建新任务
  • list_tasks - 列出任务(带过滤)
  • get_task - 获取任务详情

代理操作

  • register_agent - 注册新代理
  • list_agents - 列出代理
  • assign_task - 分配任务给代理
  • complete_task - 标记任务已完成
  • fail_task - 标记任务已失败

监控

  • get_project_stats - 获取项目统计信息
  • health_check - 系统健康检查
  • get_lease_stats - 获取租约统计信息
  • extend_task_lease - 延长任务租约
  • cleanup_expired_leases - 清理过期租约

监控和操作

健康检查

# 检查系统健康
taskdriver health-check

# 获取项目统计信息
taskdriver get-project-stats "my-project"

# 清理过期租约
taskdriver cleanup-leases "my-project"

指标

当运行HTTP服务器时,Prometheus指标可在/metrics处获取。

开发

测试

# 运行所有测试
bun test

# 运行特定测试套件
bun test test/services/
bun test test/storage/
bun test test/integration/

# 运行带有覆盖率的测试
b
bun test --coverage

# 端到端测试
./test/e2e/run-all-tests.sh

开发命令

# 开发模式,热重载
bun run dev

# 构建TypeScript
bun run build

# 清理构建产物
bun run clean

示例

请参阅docs/examples/目录中的完整使用示例:

文档

贡献

请阅读CONTRIBUTING.md,了解我们的行为准则以及提交拉取请求的过程。

许可证

本项目采用MIT许可证 - 详情见LICENSE文件。