Task Manager MCP 能够读取到任务,但是没有自动生成对应的代码。
Task Manager MCP 的工作流程分为以下步骤:
MCP 只负责任务管理,不负责代码生成。代码生成需要 AI 来完成。
execute_task)mcp_task-manager_execute_task({
task_id: 7,
auto_complete: true
})
返回内容:
注意: 这个函数不会自动生成代码,只是返回指令。
AI 需要:
update_task_status)mcp_task-manager_update_task_status({
task_id: 7,
status: "completed",
code_name: "import_dept_data.py",
code_path: "app/core/data_flow"
})
这一步是必须的,否则任务会一直停留在 "processing" 状态。
// 获取任务详情
mcp_task-manager_get_task_by_id({ task_id: 7 })
// 返回
{
"task_id": 7,
"task_name": "导入数据资源的科室对照表",
"status": "pending",
"task_description": "# Task: 导入数据资源的科室对照表\n..."
}
// 执行任务
mcp_task-manager_execute_task({
task_id: 7,
auto_complete: true
})
// 返回执行指令
{
"message": "请生成代码并更新任务状态...",
"task_description": "...",
"steps": [
"分析需求",
"生成代码",
"更新任务状态"
]
}
注意: 此时任务状态变为 "processing"。
AI 执行以下操作:
# 1. 创建代码文件
write("app/core/data_flow/import_dept_data.py", code_content)
# 2. 验证代码
python -m py_compile app/core/data_flow/import_dept_data.py
// AI 调用 MCP 工具更新状态
mcp_task-manager_update_task_status({
task_id: 7,
status: "completed",
code_name: "import_dept_data.py",
code_path: "app/core/data_flow"
})
// 返回
{
"task_id": 7,
"status": "completed",
"update_time": "2025-11-28T10:33:37.833Z"
}
pending (待处理)
↓
execute_task 调用
↓
processing (处理中)
↓
AI 生成代码
↓
update_task_status 调用
↓
completed (已完成)
原因: AI 没有调用 update_task_status 更新状态。
解决方案: 在生成代码后,必须调用 update_task_status。
不能。只有 "pending" 状态的任务才能执行。
解决方案:
// 先更新为 pending
mcp_task-manager_update_task_status({
task_id: 7,
status: "pending"
})
// 再执行
mcp_task-manager_execute_task({ task_id: 7 })
不会。MCP 只负责:
代码生成由 AI 负责。
// 查看 pending 状态的任务
mcp_task-manager_get_pending_tasks()
// 查看所有任务
mcp_task-manager_get_all_tasks({ limit: 20 })
| 工具 | 功能 | 参数 |
|---|---|---|
get_pending_tasks |
获取待处理任务列表 | 无 |
get_task_by_id |
根据ID获取任务详情 | task_id |
execute_task |
执行任务(返回指令) | task_id, auto_complete |
update_task_status |
更新任务状态 | task_id, status, code_name, code_path |
process_all_tasks |
批量处理所有待处理任务 | auto_poll |
create_task |
创建新任务 | task_name, task_description, create_by |
get_all_tasks |
获取所有任务(调试用) | limit |
// 1. 获取所有待处理任务
const pendingTasks = mcp_task-manager_get_pending_tasks()
// 2. 逐个执行
for (const task of pendingTasks) {
// 执行任务(获取指令)
const instructions = mcp_task-manager_execute_task({
task_id: task.task_id,
auto_complete: true
})
// AI 生成代码
// ... (AI 操作)
// 更新状态
mcp_task-manager_update_task_status({
task_id: task.task_id,
status: "completed",
code_name: "generated_file.py",
code_path: "app/core/data_flow"
})
}
try {
// 执行任务
const result = mcp_task-manager_execute_task({ task_id: 7 })
// AI 生成代码
// ...
// 更新为完成
mcp_task-manager_update_task_status({
task_id: 7,
status: "completed"
})
} catch (error) {
// 更新为失败
mcp_task-manager_update_task_status({
task_id: 7,
status: "failed"
})
}
// 启用自动轮询(每5分钟检查一次)
mcp_task-manager_process_all_tasks({
auto_poll: true
})
当创建 DataFlow 时,系统会自动生成任务描述:
# Task: {任务名称}
## Data Source
- Type: postgresql
- Host: 10.52.31.104
- Port: 5432
- Database: hospital_db
## Source Tables (DDL)
```sql
CREATE TABLE source_table (...);
CREATE TABLE target_table (
...,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
{rule 字段的内容}
Generate n8n workflow
## 生成的代码结构
### 标准模板
```python
"""
{任务名称}
功能:{任务描述}
模式:{update_mode}
作者:cursor
创建时间:{当前日期}
"""
import logging
from typing import Dict, List, Any
from app.extensions import db
from app.core.graph.neo4j_client import connect_graph
logger = logging.getLogger(__name__)
class DataProcessor:
"""数据处理器"""
def __init__(self):
self.processed_count = 0
self.error_count = 0
def get_data_source_info(self, bd_id: int):
"""获取数据源信息"""
pass
def extract_data(self):
"""提取数据"""
pass
def transform_data(self, data):
"""转换数据"""
pass
def load_data(self, data):
"""加载数据"""
pass
def run(self):
"""执行主流程"""
pass
def main_function():
"""主函数"""
processor = DataProcessor()
return processor.run()
if __name__ == '__main__':
result = main_function()
print(f"处理结果: {result}")
在 app/core/data_flow/dataflows.py 的 create_dataflow 函数中:
# 保存到 task_list 表
task_insert_sql = text("""
INSERT INTO public.task_list
(task_name, task_description, status, code_name, code_path, create_by, create_time)
VALUES
(:task_name, :task_description, :status, :code_name, :code_path, :create_by, :create_time)
""")
task_params = {
'task_name': script_name,
'task_description': task_description_md, # Markdown 格式的任务描述
'status': 'pending',
'code_name': script_name,
'code_path': 'app/core/data_flow',
'create_by': 'cursor',
'create_time': current_time
}
db.session.execute(task_insert_sql, task_params)
execute_task 不会自动生成代码,只返回指令update_task_status 更新状态// 1. 查看任务
mcp_task-manager_get_task_by_id({ task_id: 7 })
// 状态: pending
// 2. 执行任务
mcp_task-manager_execute_task({ task_id: 7, auto_complete: true })
// 状态: processing
// 返回: 任务描述 + 执行指令
// 3. AI 生成代码
write("app/core/data_flow/import_dept_data.py", code)
// 文件已创建
// 4. 更新状态
mcp_task-manager_update_task_status({
task_id: 7,
status: "completed",
code_name: "import_dept_data.py",
code_path: "app/core/data_flow"
})
// 状态: completed ✅
app/core/data_flow/dataflows.py - DataFlow 创建时写入 task_listdocs/DataFlow_task_list优化说明.md - 任务描述生成逻辑app/core/data_flow/import_dept_data.py - 任务 7 生成的代码