diff --git a/docs/superpowers/specs/2026-03-15-mcp-server-design.md b/docs/superpowers/specs/2026-03-15-mcp-server-design.md index 81ae6c1..440c8c9 100644 --- a/docs/superpowers/specs/2026-03-15-mcp-server-design.md +++ b/docs/superpowers/specs/2026-03-15-mcp-server-design.md @@ -41,7 +41,9 @@ src/Mcp/ │ │ ├── ListPrioritiesTool.php │ │ ├── ListEffortsTool.php │ │ ├── ListTagsTool.php -│ │ └── ListGroupsTool.php +│ │ ├── ListGroupsTool.php +│ │ ├── CreateGroupTool.php +│ │ └── UpdateGroupTool.php │ ├── TimeEntry/ │ │ ├── ListTimeEntriesTool.php │ │ ├── CreateTimeEntryTool.php @@ -247,9 +249,9 @@ location /_mcp { - **Returns**: `{ success: true, message: "Task PROJECT-123 deleted" }` - **Implementation**: `EntityManager::remove()` + flush (cascade deletes documents) -### TaskMeta Tools (Read-Only) +### TaskMeta Tools -Statuses, priorities, efforts, and tags are **global** (shared across all projects). Groups are **per-project**. +Statuses, priorities, efforts, and tags are **global** (shared across all projects, read-only via MCP). Groups are **per-project** (read/create/update). #### `list-statuses` - **Description**: List all task statuses (needed to create/update tasks) @@ -277,6 +279,27 @@ Statuses, priorities, efforts, and tags are **global** (shared across all projec - **Returns**: Array of `{ id, title, description, color, project: { id, code, name }, archived }` - **Implementation**: `TaskGroupRepository` with optional project filter +#### `create-group` +- **Description**: Create a new task group for a project +- **Parameters**: + - `projectId` (int, required) + - `title` (string, required) + - `description` (string, optional) + - `color` (string, optional, default: #222783) +- **Returns**: Created group object +- **Implementation**: Create `TaskGroup` entity, set project relation, persist + +#### `update-group` +- **Description**: Update an existing task group (partial update) +- **Parameters**: + - `id` (int, required) + - `title` (string, optional) + - `description` (string, optional) + - `color` (string, optional) + - `archived` (bool, optional) +- **Returns**: Updated group object +- **Implementation**: Find group, apply changes, flush + ### TimeEntry Tools #### `list-time-entries`