Tasks
Complete task management through the MCP Server. Create, update, filter, assign, and track tasks across your GitScrum projects using AI assistants.
Open Source — GitScrum MCP Server is open source under the MIT license. Available on npm and GitHub. Model Context Protocol server for GitScrum — Claude, GitHub Copilot, Cursor, and any MCP-compatible client full operational access to your project management stack.
The task tool is the most comprehensive tool in the GitScrum MCP Server. With 12 actions covering the entire task lifecycle, it handles everything from personal task lists and daily planners to advanced filtering, task duplication, and cross-project moves. Every operation your team performs on the Kanban board, your AI assistant can execute through natural language.
This single consolidated tool replaces what would otherwise be dozens of individual API endpoints. The AI assistant determines which action to call based on your natural language instruction, maps your intent to the correct parameters, and returns structured results you can act on immediately.
Actions Overview
| Action | Purpose | Required Parameters |
|---|---|---|
my | Fetch all tasks assigned to you across projects | None |
today | Fetch tasks due or scheduled for today | None |
notifications | Retrieve task-related notifications and unread count | None |
get | Get full details of a specific task | uuid |
create | Create a new task with all fields in one call | companyslug, projectslug, title |
update | Modify any field on an existing task | uuid, companyslug, projectslug |
complete | Mark a task as done | uuid |
subtasks | List all child tasks of a parent task | uuid |
filter | Search tasks with advanced multi-field filtering | companyslug, projectslug |
by_code | Look up a task by its human-readable code (e.g. PROJ-123) | taskcode, companyslug, project_slug |
duplicate | Clone a task with all its properties | uuid, companyslug, projectslug |
move | Transfer a task to a different project or column | uuid, companyslug, projectslug, newprojectslug, newworkflowid |
Personal Task Views
The my and today actions require no parameters. The MCP server identifies you through your authenticated session and returns tasks across all your projects.
my returns every task currently assigned to you, regardless of project or status. This is the equivalent of opening your personal task dashboard in the GitScrum web application. Results include task title, project name, status, priority, due date, and assignees.
today narrows the scope to tasks that are due today or explicitly scheduled for today. This is your daily planning view — the tasks that need attention right now.
notifications fetches your task-related notifications along with the unread count. This includes mentions, assignment changes, status updates, and comments on your tasks.
You: "What's on my plate?"
AI: Calls task action=my → returns your full task list
You: "What do I need to finish today?"
AI: Calls task action=today → returns today's tasks
You: "Do I have any new notifications?"
AI: Calls task action=notifications → returns notifications with unread countCreating Tasks
The create action builds a new task in a single call. All optional fields — sprint, user story, column, type, effort, assignees, labels, dates, and estimates — can be set at creation time. There is no need for follow-up update calls.
Required Parameters
| Parameter | Type | Description |
|---|---|---|
company_slug | string | Workspace identifier (from the workspace tool) |
project_slug | string | Project identifier (from the project tool) |
title | string | Task name or title text |
Optional Parameters
| Parameter | Type | Description |
|---|---|---|
description | string | Task description in Markdown format |
sprint_slug | string | Sprint identifier to add the task to |
userstoryslug | string | User story identifier to link the task to |
column | string | Kanban column name (e.g. "In Progress", "Done"). The MCP server resolves this to the correct workflow_id automatically |
workflow_id | number | Kanban column ID. Use this if you already have the numeric ID from project action=workflows |
type_id | number | Task type ID (get available types from project action=types) |
effort_id | number | Priority/effort level ID (get available levels from project action=efforts) |
usernames | array of strings | Usernames to assign (get available members from project action=members) |
label_ids | array of numbers | Label IDs to attach (get available labels from project action=labels) |
due_date | string | Deadline in YYYY-MM-DD format |
start_date | string | Start date in YYYY-MM-DD format |
estimated_minutes | number | Time estimate in minutes (e.g. 120 for 2 hours) |
is_bug | boolean | Mark the task as a bug |
is_blocker | boolean | Mark the task as a blocker |
parent_id | string | Parent task UUID to create this as a subtask |
Smart Column Resolution
You can specify columns by name instead of numeric ID. When you pass column: "In Progress", the MCP server fetches the project's workflow configuration, finds the matching column by name (case-insensitive), and resolves it to the correct workflow_id. If the column name doesn't match any existing column, the server returns an error with the list of available columns so the AI assistant can suggest alternatives.
Example Prompts
You: "Create a task 'Fix login validation' in the backend project"
AI: Calls task action=create with title, project_slug, company_slug
You: "Create a bug 'Memory leak in dashboard' assigned to @sarah in the current sprint"
AI: Calls task action=create with title, is_bug=true, usernames=["sarah"], sprint_slug
You: "Add a subtask 'Write unit tests' under task [uuid]"
AI: Calls task action=create with title, parent_id=[uuid]
You: "Create a high-priority task 'Deploy hotfix' due tomorrow with 2-hour estimate"
AI: Calls task action=create with title, effort_id, due_date, estimated_minutes=120Updating Tasks
The update action modifies any field on an existing task. Only the fields you specify are changed — all other fields remain untouched.
Required Parameters
| Parameter | Type | Description |
|---|---|---|
uuid | string | Task UUID (from any task listing or get response) |
company_slug | string | Workspace identifier |
project_slug | string | Project identifier |
Optional Parameters
All optional parameters from the create action are available in update, plus:
| Parameter | Type | Description |
|---|---|---|
is_archived | boolean | Archive or unarchive the task |
The MCP server handles all necessary ID resolution during updates. If you pass sprintslug, the server resolves it to sprintid. If you pass column, the server resolves it to workflow_id. If you pass usernames, the server maps them to member IDs.
Example Prompts
You: "Move task GS-123 to the Done column"
AI: Fetches task by code → calls task action=update with column="Done"
You: "Assign @john and @maria to the login task"
AI: Calls task action=update with usernames=["john","maria"]
You: "Change the deadline to next Friday"
AI: Calls task action=update with due_date="2026-02-13"
You: "Mark the deployment task as a blocker"
AI: Calls task action=update with is_blocker=true
You: "Archive all completed tasks from last sprint"
AI: Filters completed tasks → calls update with is_archived=true for eachCompleting Tasks
The complete action marks a task as done. This is a dedicated action rather than an update with status change because completing a task may trigger additional workflows — sprint metrics update, notifications fire, and activity logs record the completion event.
You: "Complete task [uuid]"
AI: Calls task action=complete with uuid
You: "Mark the API migration task as done"
AI: Finds the task by name or code → calls task action=completeFiltering Tasks
The filter action provides advanced multi-field search across tasks within a project. Combine any number of filter criteria to narrow results precisely.
Required Parameters
| Parameter | Type | Description |
|---|---|---|
company_slug | string | Workspace identifier |
project_slug | string | Project identifier |
Filter Parameters
| Parameter | Type | Description |
|---|---|---|
status | string | Task status: todo, in-progress, done |
sprint | string | Sprint slug or title |
user_story | string | User story slug or title |
workflow | string | Kanban column title |
type | string | Task type title |
effort | string | Priority/effort level title |
labels | string | Comma-separated label titles |
users | string | Comma-separated usernames |
unassigned | boolean | Only show unassigned tasks |
is_blocker | boolean | Only show blocker tasks |
is_archived | boolean | Include archived tasks |
created_at | string | Date range YYYY-MM-DD=YYYY-MM-DD |
closed_at | string | Date range YYYY-MM-DD=YYYY-MM-DD |
per_page | number | Results per page (1-100, default 50) |
The filter action handles title-to-ID resolution automatically. When you pass workflow: "In Progress", the server looks up the workflow column by name and filters by its numeric ID. The same applies to labels, types, efforts, sprints, and user stories — you pass human-readable names, the server resolves them.
Example Prompts
You: "Filter tasks in progress assigned to @john"
AI: Calls task action=filter with status="in-progress", users="john"
You: "Show me all blockers in the current sprint"
AI: Calls task action=filter with is_blocker=true, sprint=[current sprint slug]
You: "Find unassigned bugs created this week"
AI: Calls task action=filter with unassigned=true, type="Bug", created_at="2026-02-02=2026-02-06"
You: "List all high-priority tasks labeled 'frontend'"
AI: Calls task action=filter with effort="High", labels="frontend"
You: "Show tasks closed last month"
AI: Calls task action=filter with closed_at="2026-01-01=2026-01-31"Looking Up Tasks by Code
Every task in GitScrum has a human-readable code like PROJ-123. The by_code action retrieves a task using this code instead of the UUID. This is particularly useful in conversations where team members reference tasks by their short code.
You: "Find task PROJ-456"
AI: Calls task action=by_code with task_code="PROJ-456"
You: "What's the status of AUTH-89?"
AI: Calls task action=by_code → returns full task details including statusDuplicating Tasks
The duplicate action clones a task with all its properties — title, description, labels, type, effort, and column placement. This is useful for creating similar tasks without re-entering all fields, or for setting up recurring work items.
You: "Duplicate task [uuid]"
AI: Calls task action=duplicate → returns the new cloned task
You: "Clone the weekly report task for next week"
AI: Finds the task → calls task action=duplicateMoving Tasks
The move action transfers a task to a different project and/or workflow column. This requires the target project slug and the target workflow column ID, because different projects may have different workflow configurations.
| Parameter | Type | Description |
|---|---|---|
uuid | string | Task UUID to move |
company_slug | string | Current workspace identifier |
project_slug | string | Current project identifier |
newprojectslug | string | Target project identifier |
newworkflowid | number | Target column ID in the destination project |
You: "Move task GS-123 to the Frontend project"
AI: Resolves project slug + workflow → calls task action=move
You: "Transfer the API task to the Done column in the Backend project"
AI: Calls task action=move with new_project_slug and new_workflow_idSubtasks
The subtasks action lists all child tasks of a given parent task. Combined with the create action's parent_id parameter, you can build complete task hierarchies through natural language.
You: "Show subtasks of the migration task"
AI: Calls task action=subtasks → returns child task list
You: "Break down the deployment task into: test staging, update configs, run migration"
AI: Calls task action=create three times with parent_id set to the deployment task UUIDRecommended Workflow
For teams adopting MCP-driven task management, this workflow maximizes efficiency:
1. Discover project context
Before creating tasks, fetch the project metadata your AI assistant needs for subsequent operations.
You: "Show me the workflows, types, and efforts for the Backend project"
AI: Calls project action=workflows, types, efforts → caches IDs for task operations2. Create tasks with full context
Use the cached metadata to create fully-configured tasks in a single call.
You: "Create a high-priority bug 'Login timeout on mobile' in the Backend project,
assign to @sarah, add to the current sprint, label it 'mobile' and 'auth'"
AI: Single create call with all fields populated3. Track daily work
Use personal views to stay on top of your workload.
You: "What's on my plate today?"
AI: Calls task action=today → shows your daily task list4. Filter and review
Use advanced filtering for sprint reviews, team standups, or progress tracking.
You: "Show all in-progress tasks for this sprint"
AI: Calls task action=filter with status and sprint5. Complete and iterate
Mark tasks as done and check sprint progress.
You: "Complete the login timeout fix"
AI: Calls task action=complete → updates sprint metricsContext Auto-Resolution
The task tool supports automatic context resolution. If the AI assistant already knows your workspace and project from a previous call in the same conversation, it can carry that context forward. This means you don't need to repeat "in the Backend project" for every task operation — the AI assistant remembers the project context from earlier in the conversation.
When a task is created, updated, or retrieved, the MCP server returns context metadata (companyslug, projectslug, task_uuid) that the AI assistant uses for follow-up operations.
Next Steps
- Sprints: Plan and track sprints that contain your tasks.
- Projects: Manage project settings, workflows, and team members.
- Time Tracking: Start timers and log time against tasks.
- Quick Start: Set up the MCP server if you haven't already.