Task Orchestration
작업 오케스트레이터
작업 오케스트레이션 및 관리를 위한 MCP(Model Context Protocol) 서버입니다. 이 도구는 목표를 관리 가능한 작업으로 세분화하고 진행 상황을 추적하는 데 도움을 줍니다.
사용 방법
이상적으로는 LLM이 이 MCP 도구를 언제 사용해야 하는지 이해할 수 있어야 합니다. 하지만 샘플 프롬프트로 다음과 같은 형식을 사용할 수 있습니다.
"새로운 개발 목표를 만들어 줘. 목표는 '사용자 인증 구현'이고 'my-web-app' 저장소를 위한 거야."
문제가 발생하면 상단 'Discussions' 탭에서 새 이슈를 생성하여 알려주세요.
Related MCP server: Jotdown
주요 기능
목표 생성 및 관리
목표를 계층적 작업으로 세분화
작업 완료 상태 추적
하위 작업 지원 및 상위 작업과 하위 작업 간의 종속성 관리
LokiDB를 사용한 영구 저장소
로드맵
복잡한 작업/목표 간 상호 종속성 오케스트레이션
목표 삭제
완료 처리
진행 상황 시각화를 위한 UI
API 참조
작업 ID 명명 규칙
작업 ID는 점 표기법(예: "1", "1.1", "1.1.1")을 사용하며, 각 세그먼트는 계층 구조의 레벨을 나타냅니다.
각 새 목표에 대해 최상위 작업 ID는 "1"로 시작하며 순차적으로 증가합니다(예: "1", "2", "3").
하위 작업은 상위 작업 ID에 새 세그먼트를 추가하여 형성된 ID를 가집니다(예: "1.1"은 "1"의 하위 작업).
goalId와taskId의 조합은 고유함이 보장됩니다.
도구
서버는 다음 도구를 제공합니다(build/index.js 기준):
create_goal새 목표 생성
매개변수:
{ description: string; // The goal description repoName: string; // The repository name associated with this goal }샘플 입력:
{ "description": "Implement user authentication", "repoName": "example/auth-service" }반환값:
{ goalId: number }
add_tasks목표에 여러 작업을 추가합니다. 작업은 계층 구조로 제공될 수 있습니다. 기존 작업의 하위 작업인 경우
parentId필드를 사용하세요. 이 작업은 트랜잭션 방식으로 처리됩니다. 즉, 배치 내의 모든 작업이 성공하거나 전체 작업이 실패합니다.매개변수:
{ goalId: number; // ID of the goal to add tasks to (number) tasks: Array<{ title: string; // Title of the task (string) description: string; // Detailed description of the task (string) parentId?: string | null; // Optional parent task ID for tasks that are children of *existing* tasks. Do not use for new subtasks defined hierarchically within this batch. subtasks?: Array<any>; // An array of nested subtask objects to be created under this task. }>; }샘플 입력:
{ "goalId": 1, "tasks": [ { "title": "Design database schema", "description": "Define tables for users, roles, and permissions", "subtasks": [ { "title": "Create ERD", "description": "Draw entity-relationship diagram" } ] }, { "title": "Implement user registration", "description": "Create API endpoint for new user signup", "parentId": "1" } ] }반환값:
HierarchicalTaskResponse[].HierarchicalTaskResponse객체는 단순화되어 있으며createdAt,updatedAt,parentId를 포함하지 않습니다.
remove_tasks목표에서 여러 작업을 소프트 삭제합니다. 작업은 삭제된 것으로 표시되지만 시스템에 남아 있습니다. 기본적으로 하위 작업이 있는 상위 작업은 하위 작업을 명시적으로 삭제하지 않으면 소프트 삭제할 수 없습니다. 소프트 삭제된 작업은
includeDeletedTasks가 true로 설정되지 않는 한 기본적으로get_tasks결과에서 제외됩니다.매개변수:
{ goalId: number; // ID of the goal to remove tasks from taskIds: string[]; // IDs of the tasks to remove (array of strings). Task IDs use dot-notation (e.g., "1", "1.1"). deleteChildren?: boolean; // Whether to delete child tasks along with the parent (boolean). Defaults to false. If false, attempting to delete a parent task with existing subtasks will throw an error. }샘플 입력 (하위 작업 삭제 안 함):
{ "goalId": 1, "taskIds": ["2", "3"] }샘플 입력 (하위 작업 삭제 포함):
{ "goalId": 1, "taskIds": ["1"], "deleteChildren": true }반환값:
{ removedTasks: TaskResponse[], completedParents: TaskResponse[] }.TaskResponse객체는 단순화되어 있으며createdAt,updatedAt,parentId를 포함하지 않습니다.
get_tasks목표에 대한 작업을 가져옵니다. 작업 ID는 점 표기법(예: "1", "1.1", "1.1.1")을 사용합니다.
includeSubtasks가 지정되면 응답은 계층적 작업 객체를 반환합니다. 그렇지 않으면createdAt,updatedAt,parentId가 없는 단순화된 작업 객체가 반환됩니다.매개변수:
{ goalId: number; // ID of the goal to get tasks for (number) taskIds?: string[]; // Optional: IDs of tasks to fetch (array of strings). If null or empty, all tasks for the goal will be fetched. includeSubtasks?: "none" | "first-level" | "recursive"; // Level of subtasks to include: "none" (only top-level tasks), "first-level" (top-level tasks and their direct children), or "recursive" (all nested subtasks). Defaults to "none". includeDeletedTasks?: boolean; // Whether to include soft-deleted tasks in the results (boolean). Defaults to false. }샘플 입력:
{ "goalId": 1, "includeSubtasks": "recursive", "includeDeletedTasks": true }반환값:
TaskResponse[].TaskResponse객체는 단순화되어 있으며createdAt,updatedAt,parentId를 포함하지 않습니다.
complete_task_status작업을 완료로 표시합니다. 기본적으로 상위 작업은 완료되지 않은 하위 작업이 있는 경우 완료로 표시할 수 없습니다.
매개변수:
{ goalId: number; // ID of the goal containing the tasks taskIds: string[]; // IDs of the tasks to update (array of strings). Task IDs use dot-notation (e.g., "1", "1.1"). completeChildren?: boolean; // Whether to complete all child tasks recursively (boolean). Defaults to false. If false, a task can only be completed if all its subtasks are already complete. }샘플 입력 (하위 작업 완료 안 함):
{ "goalId": 1, "taskIds": ["1", "2"] }샘플 입력 (하위 작업 완료 포함):
{ "goalId": 1, "taskIds": ["1"], "completeChildren": true }반환값:
TaskResponse[].TaskResponse객체는 단순화되어 있으며createdAt,updatedAt,parentId를 포함하지 않습니다.
사용 예시
목표 및 작업 생성
// Create a new goal. Its top-level tasks will start with ID "1".
const goal = await callTool('create_goal', {
description: 'Implement user authentication',
repoName: 'user/repo'
});
// Add a top-level task
const task1 = await callTool('add_tasks', {
goalId: goal.goalId,
tasks: [
{
title: 'Set up authentication middleware',
description: 'Implement JWT-based authentication'
}
]
});
// task1.addedTasks[0].id will be "1"
// Add a subtask to the previously created task "1"
const task2 = await callTool('add_tasks', {
goalId: goal.goalId,
tasks: [
{
title: 'Create login endpoint',
description: 'Implement POST /auth/login',
parentId: "1" // ParentId must refer to an *already existing* task ID
}
]
});
// task2.addedTasks[0].id will be "1.1"작업 상태 관리
// Mark a parent task as complete, which will also complete its children
await callTool('complete_task_status', {
goalId: 1,
taskIds: ["1"],
completeChildren: true
});
// Get all tasks including subtasks recursively
const allTasks = await callTool('get_tasks', {
goalId: 1,
includeSubtasks: "recursive"
});작업 제거
// Attempt to remove a parent task without deleting children (will fail if it has subtasks)
try {
await callTool('remove_tasks', {
goalId: 1,
taskIds: ["1"]
});
} catch (error) {
console.error(error.message); // Expected to throw an error if subtasks exist
}
// Remove a parent task and its children
await callTool('remove_tasks', {
goalId: 1,
taskIds: ["1"],
deleteChildren: true
});개발
사전 요구 사항
Node.js 18+
pnpm
설정
의존성 설치:
pnpm install프로젝트 빌드:
pnpm build테스트 실행:
pnpm test
프로젝트 구조
src/- 소스 코드index.ts- 메인 서버 구현storage.ts- 데이터 지속성 계층types.ts- TypeScript 타입 정의prompts.ts- AI 프롬프트 템플릿__tests__/- 테스트 파일
라이선스
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/coderexpert123/task-orchestrator'
If you have feedback or need assistance with the MCP directory API, please join our Discord server