maxiaolong 9c1b50b163 task-manager 修复bug,更新功能为自动完成任务。 2 days ago
..
.gitignore 561521199b 新增task-manager MCP服务器 1 week ago
README.md 9c1b50b163 task-manager 修复bug,更新功能为自动完成任务。 2 days ago
config.json 561521199b 新增task-manager MCP服务器 1 week ago
database.js 561521199b 新增task-manager MCP服务器 1 week ago
get_config.py 561521199b 新增task-manager MCP服务器 1 week ago
index.js 9c1b50b163 task-manager 修复bug,更新功能为自动完成任务。 2 days ago
logger.js 561521199b 新增task-manager MCP服务器 1 week ago
package-lock.json 561521199b 新增task-manager MCP服务器 1 week ago
package.json 561521199b 新增task-manager MCP服务器 1 week ago
task-processor.js 9c1b50b163 task-manager 修复bug,更新功能为自动完成任务。 2 days ago

README.md

Task Manager MCP Server

任务管理MCP服务器,用于从PostgreSQL数据库读取任务,通过MCP协议与Cursor交互执行代码开发任务。

功能特性

  • 从PostgreSQL数据库的task_list表读取待处理任务
  • 通过MCP协议将任务发送给Cursor执行代码开发
  • 自动更新任务状态(pending → processing → completed/failed)
  • 支持自动轮询,每5分钟检查一次新任务
  • 完整的错误处理和日志记录

安装

  1. 安装依赖:
cd mcp-servers/task-manager
npm install
  1. 创建数据库表:
# 在PostgreSQL数据库中执行
psql -U postgres -d dataops -f ../../database/create_task_list_table.sql
  1. 数据库配置:

重要:MCP服务器从独立的配置文件mcp-servers/task-manager/config.json中读取数据库URI。

编辑mcp-servers/task-manager/config.json文件,设置正确的PostgreSQL连接URI:

{
  "database": {
    "uri": "postgresql://postgres:dataOps@192.168.3.143:5432/dataops"
  }
}

如果需要覆盖,可以在.cursor/mcp.json中设置DATABASE_URL环境变量。

其他环境变量配置(在.cursor/mcp.json中):

POLL_INTERVAL=300000  # 轮询间隔(毫秒),默认5分钟
LOG_LEVEL=info        # 日志级别
AUTO_START_POLLING=true  # 自动启动轮询

配置Cursor

MCP服务器已配置在.cursor/mcp.json中。确保:

  1. mcp-servers/task-manager/config.json中配置了正确的PostgreSQL数据库URI
  2. Node.js版本 >= 18.0.0
  3. 已安装所有依赖

使用方法

1. 创建任务

在PostgreSQL数据库中插入任务记录:

INSERT INTO task_list (task_name, task_description, status, create_by)
VALUES (
    '开发用户登录功能',
    '# 任务描述\n\n开发一个用户登录功能,包括:\n\n1. 用户认证API\n2. JWT token生成\n3. 密码加密存储\n\n## 数据结构\n\n- users表:id, username, password, email',
    'pending',
    'admin'
);

2. 通过Cursor执行任务

在Cursor中,可以使用以下MCP工具:

获取待处理任务列表

调用工具: get_pending_tasks

执行单个任务

自动完成模式(推荐):

调用工具: execute_task
参数: { 
  "task_id": 1,
  "auto_complete": true  // 默认值,AI 会自动生成代码并更新状态
}

手动模式:

调用工具: execute_task
参数: { 
  "task_id": 1,
  "auto_complete": false  // 需要手动生成代码并调用 update_task_status
}

批量处理所有任务

调用工具: process_all_tasks
参数: { "auto_poll": true }  // 启用自动轮询

更新任务状态

调用工具: update_task_status
参数: {
    "task_id": 1,
    "status": "completed",
    "code_name": "auth.py",
    "code_path": "app/core/auth.py"
}

3. 自动轮询

当调用process_all_tasks并设置auto_poll: true时,服务器会:

  1. 处理所有待处理任务
  2. 每5分钟自动检查一次新任务
  3. 发现新任务时自动处理

任务状态

  • pending - 待处理
  • processing - 处理中
  • completed - 已完成
  • failed - 失败

数据库表结构

CREATE TABLE task_list (
    task_id SERIAL PRIMARY KEY,
    task_name VARCHAR(255) NOT NULL,
    task_description TEXT NOT NULL,
    status VARCHAR(20) NOT NULL DEFAULT 'pending',
    code_name VARCHAR(255),
    code_path VARCHAR(500),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    create_by VARCHAR(100) NOT NULL
);

任务描述格式

任务描述应为markdown格式,包含:

  1. 功能要求:详细描述需要开发的功能
  2. 数据结构:描述涉及的数据表结构或数据格式
  3. 技术要求:如有特殊技术要求,应明确说明

示例:

# 开发用户登录功能

## 功能要求

开发一个用户登录功能,包括:

1. 用户认证API端点
2. JWT token生成和验证
3. 密码加密存储(使用bcrypt)

## 数据结构

users表结构:
- id: INTEGER PRIMARY KEY
- username: VARCHAR(50) UNIQUE
- password: VARCHAR(255)  # 加密后的密码
- email: VARCHAR(100)
- created_at: TIMESTAMP

## API端点

POST /api/auth/login
请求体: { "username": "string", "password": "string" }
响应: { "token": "string", "user": {...} }

工作流程

🚀 自动完成模式(推荐)

  1. 创建任务:在数据库中插入任务记录,状态为pending
  2. 执行任务:调用 execute_task (默认 auto_complete: true) 或 process_all_tasks
  3. 自动生成代码:AI 根据任务描述自动生成 Python 代码文件
  4. 自动更新状态:AI 自动调用 update_task_status 工具更新任务状态为 completed
  5. 轮询检查:如果启用自动轮询,每5分钟检查一次新任务

✅ 自动完成优势

  • 🤖 完全自动化:无需人工干预
  • 📝 明确指令:AI 收到详细的自动执行步骤
  • ✓ 状态同步:代码生成完成后立即更新状态
  • 🔄 高效流程:适合批量处理任务

📋 手动模式

  1. 创建任务:在数据库中插入任务记录,状态为pending
  2. 获取任务:调用 execute_task 并设置 auto_complete: false
  3. 查看任务描述:系统返回详细的任务描述和执行指令
  4. 开发代码:根据任务描述手动开发 Python 代码文件
  5. 更新状态:手动调用 update_task_status 工具,提供:
    • task_id: 任务ID
    • status: "completed""failed"
    • code_name: 生成的代码文件名(如 "user_login.py"
    • code_path: 代码文件路径(如 "app/core/auth"
  6. 轮询检查:如果启用自动轮询,每5分钟检查一次新任务

⚠️ 手动模式注意事项

  • 任务不会自动完成,必须手动调用 update_task_status
  • 如果只执行任务而不更新状态,任务会一直保持 processing 状态
  • 适合需要人工审核或特殊处理的任务

故障处理

任务执行失败

如果任务执行失败,状态会更新为failed。可以:

  1. 检查任务描述是否清晰完整
  2. 查看错误日志
  3. 修改任务描述后,将状态改回pending重新处理

数据库连接失败

确保:

  1. PostgreSQL服务正在运行
  2. mcp-servers/task-manager/config.json中的database.uri配置正确
  3. 数据库用户有足够的权限
  4. 如果使用环境变量,确保DATABASE_URLSQLALCHEMY_DATABASE_URI已正确设置

MCP服务器无法启动

检查:

  1. Node.js版本 >= 18.0.0
  2. 所有依赖已安装:npm install
  3. 文件权限正确

开发说明

项目结构

mcp-servers/task-manager/
├── index.js              # MCP服务器主文件
├── database.js           # 数据库操作模块
├── task-processor.js     # 任务处理逻辑
├── config.json           # 数据库配置文件(独立配置)
├── package.json          # 项目配置
└── README.md            # 本文档

扩展功能

可以扩展的功能:

  1. 任务优先级支持
  2. 任务依赖关系
  3. 任务执行历史记录
  4. 任务执行时间统计
  5. 邮件/通知功能

许可证

MIT