# 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 } ``` #### 批量处理所有任务 ``` 调用工具: 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. **获取任务**:MCP服务器从数据库读取`pending`状态的任务 3. **执行任务**:通过MCP协议将任务描述发送给Cursor 4. **开发代码**:Cursor根据任务描述开发代码 5. **更新状态**:任务完成后,更新状态为`completed`,并记录代码文件名和路径 6. **轮询检查**:如果启用自动轮询,每5分钟检查一次新任务 ## 故障处理 ### 任务执行失败 如果任务执行失败,状态会更新为`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