# Task Manager MCP Server

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

## 功能特性

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

## 安装

1. 安装依赖：

```bash
cd mcp-servers/task-manager
npm install
```

2. 创建数据库表：

```bash
# 在PostgreSQL数据库中执行
psql -U postgres -d dataops -f ../../database/create_task_list_table.sql
```

3. 数据库配置：

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

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

```json
{
  "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数据库中插入任务记录：

```sql
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` - 失败

## 数据库表结构

```sql
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. **技术要求**：如有特殊技术要求，应明确说明

示例：

```markdown
# 开发用户登录功能

## 功能要求

开发一个用户登录功能，包括：

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_URL`或`SQLALCHEMY_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

