Task Orchestration
Aufgaben-Orchestrator
Ein Model Context Protocol (MCP) Server für Aufgaben-Orchestrierung und -Verwaltung. Dieses Tool hilft dabei, Ziele in überschaubare Aufgaben zu unterteilen und deren Fortschritt zu verfolgen.
Verwendung
Idealerweise sollte das LLM verstehen, wann dieses MCP-Tool verwendet werden sollte. Als Beispiel-Prompt könnte jedoch so etwas funktionieren:
"Erstelle ein neues Entwicklungsziel für mich. Das Ziel lautet 'Benutzerauthentifizierung implementieren' und ist für das Repository 'my-web-app'."
LASS MICH WISSEN, falls Probleme auftreten, indem du ein neues Issue im 'Discussions'-Tab oben erstellst.
Related MCP server: Jotdown
Funktionen
Ziele erstellen und verwalten
Ziele in hierarchische Aufgaben unterteilen
Status der Aufgabenerledigung verfolgen
Unterstützung für Unteraufgaben und Abhängigkeitsmanagement zwischen übergeordneten Aufgaben und Unteraufgaben
Persistente Speicherung mit LokiDB
Roadmap
Komplexe Aufgaben-/Ziel-Interdependenz-Orchestrierung
Löschen von Zielen
Abschluss-Dispositionen
Benutzeroberfläche zur Visualisierung des Fortschritts
API-Referenz
Namenskonvention für Aufgaben-IDs
Aufgaben-IDs verwenden eine Punkt-Notation (z. B. "1", "1.1", "1.1.1"), wobei jedes Segment eine Ebene in der Hierarchie darstellt.
Für jedes neue Ziel beginnen die Aufgaben-IDs der obersten Ebene mit "1" und werden sequenziell erhöht (z. B. "1", "2", "3").
Unteraufgaben haben IDs, die durch Anhängen eines neuen Segments an die ID ihres übergeordneten Elements gebildet werden (z. B. "1.1" ist eine Unteraufgabe von "1").
Die Kombination aus
goalIdundtaskIdist garantiert eindeutig.
Tools
Der Server stellt die folgenden Tools bereit (basierend auf build/index.js):
create_goalErstellt ein neues Ziel
Parameter:
{ description: string; // The goal description repoName: string; // The repository name associated with this goal }Beispiel-Eingabe:
{ "description": "Implement user authentication", "repoName": "example/auth-service" }Rückgabe:
{ goalId: number }
add_tasksFügt einem Ziel mehrere Aufgaben hinzu. Aufgaben können in einer hierarchischen Struktur bereitgestellt werden. Verwende für Aufgaben, die Kinder bestehender Aufgaben sind, das Feld
parentId. Der Vorgang ist transaktional: Entweder sind alle Aufgaben im Batch erfolgreich oder der gesamte Vorgang schlägt fehl.Parameter:
{ 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. }>; }Beispiel-Eingabe:
{ "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" } ] }Rückgabe:
HierarchicalTaskResponse[].HierarchicalTaskResponse-Objekte sind vereinfacht und enthalten keinecreatedAt,updatedAtoderparentId.
remove_tasksFührt ein Soft-Delete für mehrere Aufgaben eines Ziels durch. Aufgaben werden als gelöscht markiert, verbleiben aber im System. Standardmäßig kann eine übergeordnete Aufgabe mit Unteraufgaben nicht per Soft-Delete gelöscht werden, ohne explizit ihre Kinder zu löschen. Soft-gelöschte Aufgaben sind standardmäßig von
get_tasks-Ergebnissen ausgeschlossen, es sei denn,includeDeletedTasksist auf true gesetzt.Parameter:
{ 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. }Beispiel-Eingabe (ohne Löschen der Kinder):
{ "goalId": 1, "taskIds": ["2", "3"] }Beispiel-Eingabe (mit Löschen der Kinder):
{ "goalId": 1, "taskIds": ["1"], "deleteChildren": true }Rückgabe:
{ removedTasks: TaskResponse[], completedParents: TaskResponse[] }.TaskResponse-Objekte sind vereinfacht und enthalten keinecreatedAt,updatedAtoderparentId.
get_tasksRuft Aufgaben für ein Ziel ab. Aufgaben-IDs verwenden eine Punkt-Notation (z. B. "1", "1.1", "1.1.1"). Wenn
includeSubtasksangegeben ist, geben die Antworten hierarchische Aufgabenobjekte zurück. Andernfalls werden vereinfachte Aufgabenobjekte ohnecreatedAt,updatedAtoderparentIdzurückgegeben.Parameter:
{ 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. }Beispiel-Eingabe:
{ "goalId": 1, "includeSubtasks": "recursive", "includeDeletedTasks": true }Rückgabe:
TaskResponse[].TaskResponse-Objekte sind vereinfacht und enthalten keinecreatedAt,updatedAtoderparentId.
complete_task_statusMarkiert Aufgaben als erledigt. Standardmäßig kann eine übergeordnete Aufgabe nicht als erledigt markiert werden, wenn sie unerledigte Unteraufgaben hat.
Parameter:
{ 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. }Beispiel-Eingabe (ohne Erledigung der Kinder):
{ "goalId": 1, "taskIds": ["1", "2"] }Beispiel-Eingabe (mit Erledigung der Kinder):
{ "goalId": 1, "taskIds": ["1"], "completeChildren": true }Rückgabe:
TaskResponse[].TaskResponse-Objekte sind vereinfacht und enthalten keinecreatedAt,updatedAtoderparentId.
Anwendungsbeispiele
Erstellen eines Ziels und von Aufgaben
// 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"Verwalten des Aufgabenstatus
// 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"
});Entfernen von Aufgaben
// 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
});Entwicklung
Voraussetzungen
Node.js 18+
pnpm
Einrichtung
Abhängigkeiten installieren:
pnpm installProjekt bauen:
pnpm buildTests ausführen:
pnpm test
Projektstruktur
src/- Quellcodeindex.ts- Hauptserver-Implementierungstorage.ts- Datenpersistenzschichttypes.ts- TypeScript-Typdefinitionenprompts.ts- KI-Prompt-Vorlagen__tests__/- Testdateien
Lizenz
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