Skip to main content
Glama

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 goalId und taskId ist garantiert eindeutig.

Tools

Der Server stellt die folgenden Tools bereit (basierend auf build/index.js):

  1. create_goal

    • Erstellt 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 }

  2. add_tasks

    • Fü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 keine createdAt, updatedAt oder parentId.

  3. remove_tasks

    • Fü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, includeDeletedTasks ist 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 keine createdAt, updatedAt oder parentId.

  4. get_tasks

    • Ruft Aufgaben für ein Ziel ab. Aufgaben-IDs verwenden eine Punkt-Notation (z. B. "1", "1.1", "1.1.1"). Wenn includeSubtasks angegeben ist, geben die Antworten hierarchische Aufgabenobjekte zurück. Andernfalls werden vereinfachte Aufgabenobjekte ohne createdAt, updatedAt oder parentId zurü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 keine createdAt, updatedAt oder parentId.

  5. complete_task_status

    • Markiert 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 keine createdAt, updatedAt oder parentId.

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

  1. Abhängigkeiten installieren:

    pnpm install
  2. Projekt bauen:

    pnpm build
  3. Tests ausführen:

    pnpm test

Projektstruktur

  • src/ - Quellcode

    • index.ts - Hauptserver-Implementierung

    • storage.ts - Datenpersistenzschicht

    • types.ts - TypeScript-Typdefinitionen

    • prompts.ts - KI-Prompt-Vorlagen

    • __tests__/ - Testdateien

Lizenz

MIT

Install Server
A
license - permissive license
B
quality
C
maintenance

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