Taskwarrior MCP Server
The Taskwarrior MCP Server enables AI assistants to fully manage tasks using the Taskwarrior command-line tool, covering everything from basic operations to intelligent productivity analysis.
Core Task Operations:
List tasks — Filter by status, project, tags, due dates, urgency, or custom Taskwarrior expressions
Add tasks — Create tasks with description, project, priority (H/M/L), due date, tags, and dependencies
Modify tasks — Update any attribute including description, project, priority, due date, and tags
Complete / Delete tasks — Mark tasks done or remove them (deletions are recoverable via undo)
Get task details — View all attributes and annotations for a specific task
Annotate tasks — Add notes or comments to a task
Start / Stop tasks — Track active work by marking tasks in-progress or paused
Undo — Revert the last operation
Organization & Overview:
List projects and tags with task/usage counts
Task summary statistics — Pending task counts broken down by project, priority, and urgency
Agent Intelligence Features:
Smart task recommendations with scoring and reasoning
Identify ready-to-work tasks (no pending dependencies)
Find blocked tasks and analyze dependency bottlenecks
Triage stale/forgotten tasks that need attention
Output Formats: Most tools support both Markdown (human-readable) and JSON (machine-readable) output.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Taskwarrior MCP Serverlist all tasks in my Work project that are due this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Taskwarrior MCP Server
An MCP (Model Context Protocol) server that enables AI assistants to interact with Taskwarrior, the powerful command-line task management tool.
Features
Full Taskwarrior Integration: List, create, modify, complete, and delete tasks
Project & Tag Management: Organize tasks with projects and tags
Annotations: Add notes and context to tasks
Filtering: Use Taskwarrior's powerful filter expressions
Multiple Output Formats: Get responses in Markdown or JSON
Agent Intelligence: Smart suggestions, dependency analysis, triage tools
Related MCP server: Tasks MCP Server
Prerequisites
Python 3.10 or higher
Taskwarrior installed and available in your PATH
Installing Taskwarrior
# macOS
brew install task
# Ubuntu/Debian
sudo apt install taskwarrior
# Fedora
sudo dnf install task
# Arch Linux
sudo pacman -S taskInstallation
From PyPI (recommended)
pip install taskwarrior-mcpFrom Source
git clone https://github.com/yourusername/taskwarrior-mcp.git
cd taskwarrior-mcp
pip install -e .Verifying Installation
# Check the version
python -c "from taskwarrior_mcp import __version__; print(__version__)"
# Or run the server directly
taskwarrior-mcp --helpConfiguration
See the examples/ directory for complete configuration files.
Claude Desktop
Add to your Claude Desktop configuration file:
Platform | Location |
macOS |
|
Windows |
|
{
"mcpServers": {
"taskwarrior": {
"command": "taskwarrior-mcp"
}
}
}Claude Code CLI
Add to your ~/.claude/settings.json:
{
"mcpServers": {
"taskwarrior": {
"command": "taskwarrior-mcp"
}
}
}Using uvx (no installation required)
{
"mcpServers": {
"taskwarrior": {
"command": "uvx",
"args": ["taskwarrior-mcp"]
}
}
}Advanced Configuration
Use environment variables to customize Taskwarrior behavior:
{
"mcpServers": {
"taskwarrior": {
"command": "taskwarrior-mcp",
"env": {
"TASKRC": "/path/to/custom/.taskrc",
"TASKDATA": "/path/to/custom/.task"
}
}
}
}See examples/ for more configurations including multiple databases.
Available Tools
Core Task Management
Tool | Description |
| List tasks with optional filtering |
| Create a new task |
| Mark a task as completed |
| Modify task attributes |
| Delete a task |
| Get detailed info about a task |
| Get detailed info about multiple tasks at once |
| Add a note to a task |
| Start working on a task |
| Stop working on a task |
| List all projects |
| Get detailed project summaries with priority breakdown, due dates, and active tasks |
| List all tags |
| Undo the last operation |
| Get task statistics |
Agent Intelligence Tools
Tool | Description |
| Get smart task recommendations with scoring and reasoning |
| List tasks that are ready to work on (no pending dependencies) |
| List tasks that are blocked by dependencies |
| Analyze dependency graphs and find bottlenecks |
| Find forgotten/stale tasks that need attention |
| Get rich task context with computed insights |
Usage Examples
Once configured, you can interact with Taskwarrior through your AI assistant:
Basic Task Management
"What tasks do I have?"
"Add a task to review the quarterly report with high priority"
"Show me all tasks in the work project"
"Complete task 5"
"What's due this week?"
Agent Intelligence
"What should I work on next?" - Uses
taskwarrior_suggestfor smart recommendations"What tasks are ready to start?" - Uses
taskwarrior_readyfor unblocked tasks"What's blocking my progress?" - Uses
taskwarrior_blockedandtaskwarrior_dependencies"Any tasks I've forgotten about?" - Uses
taskwarrior_triagefor stale/orphaned tasks"Give me context on task 5" - Uses
taskwarrior_contextfor rich task details
Development
Setup
git clone https://github.com/yourusername/taskwarrior-mcp.git
cd taskwarrior-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"Running Tests
pytestCode Quality
# Format code
black .
ruff check --fix .
# Type checking
mypy taskwarrior_mcp.pyLicense
MIT License - see LICENSE for details.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines on:
Development setup
Commit message conventions (Conventional Commits)
Pull request process
Code style requirements
Available Tools
13 toolstaskwarrior_addA
Create a new task in Taskwarrior.
Use this tool to add new tasks with optional project, priority, due date, and tags.
Args:
params: AddTaskInput containing description and optional attributes
Returns:
Confirmation message with the created task ID
Examples:
- Simple task: params with description="Buy groceries"
- Task with project: params with description="Review PR", project="work"
- High priority task: params with description="Fix bug", priority="H"
- Task with due date: params with description="Submit report", due="friday"
- Task with tags: params with description="Call mom", tags=["personal", "important"]
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-destructive, non-read-only, non-idempotent operation. The description adds valuable context about what gets created (new tasks with specific attributes) and the confirmation message format, though it doesn't mention rate limits, authentication needs, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, usage, Args, Returns, Examples) and front-loaded information. The examples are helpful but somewhat lengthy; every sentence earns its place by providing concrete guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, 0% schema description coverage, and presence of an output schema, the description provides complete context. It explains what the tool does, how to use parameters, what to expect in return, and includes multiple examples covering common use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining all parameter semantics through examples and the Args/Returns sections. It clarifies what each optional field means (project, priority, due date, tags) and provides concrete usage examples that add meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new task in Taskwarrior') and resource ('task'), distinguishing it from siblings like modify, delete, or list. It explicitly identifies what the tool does beyond just the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance ('Use this tool to add new tasks') and mentions optional attributes, but doesn't explicitly state when to use this vs alternatives like taskwarrior_modify or taskwarrior_annotate. No clear exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_annotateA
Add an annotation (note) to a task.
Use this tool to add notes, comments, or additional context to a task.
Args:
params: AnnotateTaskInput containing task_id and annotation text
Returns:
Confirmation message
Examples:
- Add note: params with task_id="5", annotation="Discussed with John, needs review"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide key behavioral information: readOnlyHint=false (mutation), destructiveHint=false (non-destructive). The description adds that this adds notes/comments/context, which aligns with annotations. However, it doesn't disclose additional behavioral traits like whether annotations are editable, if there are rate limits, or authentication requirements beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with purpose statement, usage guidance, args/returns sections, and an example. It's appropriately sized at 4 sentences plus structured elements. Some redundancy exists (e.g., 'Add an annotation' then 'add notes'), but overall it's efficient and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with annotations covering safety (non-destructive, non-readonly), an output schema exists (returns confirmation message), and the description provides adequate parameter context, the description is reasonably complete. It could improve by mentioning sibling relationships more explicitly, but it covers the essential context for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining that 'params' contains 'task_id and annotation text' and provides an example. However, it doesn't fully explain parameter semantics beyond what the example shows, such as format constraints for task_id or annotation length limits mentioned in the schema. Baseline 3 is appropriate given partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Add an annotation (note) to a task' with the verb 'add' and resource 'task'. It distinguishes from siblings like 'taskwarrior_modify' by focusing specifically on annotations rather than general task updates. However, it doesn't explicitly contrast with all siblings, keeping it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance: 'Use this tool to add notes, comments, or additional context to a task.' This suggests when to use it but doesn't explicitly state when NOT to use it or name alternatives like 'taskwarrior_modify' for other task modifications. The guidance is helpful but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_completeAIdempotent
Mark a task as completed.
Use this tool when a task has been finished and should be marked as done.
Args:
params: CompleteTaskInput containing the task_id to complete
Returns:
Confirmation message
Examples:
- Complete task #5: params with task_id="5"
- Complete by UUID: params with task_id="a1b2c3d4"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true (safe to retry) and destructiveHint=false (non-destructive), which the description doesn't contradict. The description adds useful context about what the tool does (marks as done) and provides examples, but doesn't mention potential side effects like timestamp updates or status changes beyond completion. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (description, usage, args, returns, examples). Every sentence adds value: the first states the purpose, the second provides usage guidelines, and the rest clarify parameters and outputs with minimal waste. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter, idempotent operation) and the presence of an output schema (returns confirmation message), the description is complete. It covers purpose, usage, parameters with examples, and return expectations, aligning well with annotations and sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining the parameter in the Args section ('CompleteTaskInput containing the task_id to complete') and providing examples with both numeric IDs and UUIDs. However, it doesn't add detailed semantics beyond what the schema's property name and examples imply, keeping it at baseline level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Mark a task as completed') and identifies the resource ('task'), distinguishing it from siblings like taskwarrior_delete (remove) or taskwarrior_modify (edit). The verb+resource combination is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('when a task has been finished and should be marked as done'), providing clear context. It distinguishes from alternatives by focusing on completion rather than deletion, modification, or other states (e.g., taskwarrior_start/stop for active tasks).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_deleteADestructiveIdempotent
Delete a task from Taskwarrior.
Use this tool to remove a task. The task is marked as deleted but can be
recovered with 'undo' if needed.
Args:
params: DeleteTaskInput containing the task_id to delete
Returns:
Confirmation message
Examples:
- Delete task #5: params with task_id="5"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true, but the description adds valuable context beyond this: it clarifies that deletion is reversible via 'undo' (important behavioral trait) and that tasks are 'marked as deleted' rather than permanently erased. This enhances understanding without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by usage notes, parameter explanation, and an example. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive operation with recovery), rich annotations (e.g., destructiveHint, idempotentHint), and the presence of an output schema (implied by 'Returns: Confirmation message'), the description is complete. It covers purpose, usage, behavioral nuances, and parameters adequately without needing to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining the parameter in the 'Args' section and providing an example ('task_id="5"'). However, it doesn't add deep semantic meaning beyond what's implied by the schema (e.g., format details or constraints), so it meets the baseline for adequate but not exceptional coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete a task from Taskwarrior') and distinguishes it from siblings like 'taskwarrior_complete' or 'taskwarrior_modify' by specifying it's for removal rather than status changes or edits. The verb+resource combination is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('to remove a task') and mentions recovery via 'undo', which implicitly references the sibling 'taskwarrior_undo'. However, it doesn't explicitly state when not to use it (e.g., vs. 'taskwarrior_complete' for marking done) or name alternatives, keeping it from a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_getARead-onlyIdempotent
Get detailed information about a specific task.
Use this tool to view all attributes and annotations of a single task.
Args:
params: GetTaskInput containing task_id and response_format
Returns:
Detailed task information (markdown or JSON)
Examples:
- Get task #5: params with task_id="5"
- Get task as JSON: params with task_id="5", response_format="json"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating safe, repeatable read operations. The description adds useful context beyond this: it specifies the tool returns 'detailed information' and supports multiple output formats (markdown/JSON), which clarifies behavioral traits not covered by annotations. No contradictions with annotations are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized, with a clear purpose statement, usage guideline, parameter explanation, and examples. Each sentence adds value, and it's front-loaded with key information. Minor room for improvement in brevity, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single-task retrieval), rich annotations (covering safety and idempotency), and the presence of an output schema (implied by 'Returns' statement), the description is mostly complete. It explains the purpose, usage, parameters, and output formats adequately, though it could benefit from more explicit sibling tool differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, but the description compensates by explaining the 'params' input containing 'task_id' and 'response_format', with examples for usage. It adds meaning beyond the bare schema, such as clarifying that 'task_id' can be an ID or UUID and describing the output format options. However, it doesn't fully detail all parameter nuances, so it meets the baseline for partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed information about a specific task' and 'view all attributes and annotations of a single task.' This specifies the verb ('get/view') and resource ('task'), but doesn't explicitly differentiate it from sibling tools like 'taskwarrior_list' or 'taskwarrior_summary' beyond focusing on a single task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'Use this tool to view all attributes and annotations of a single task.' This implies usage for detailed, individual task retrieval rather than listing or summarizing multiple tasks. However, it doesn't explicitly state when not to use it or name alternatives like 'taskwarrior_list' for multiple tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_listARead-onlyIdempotent
List tasks from Taskwarrior with optional filtering.
Use this tool to view tasks, search for specific tasks, or get an overview
of pending work. Supports Taskwarrior filter expressions for powerful querying.
Args:
params: ListTasksInput containing filter, status, limit, and response_format
Returns:
Formatted list of tasks (markdown or JSON based on response_format)
Examples:
- List all pending tasks: params with status="pending"
- List tasks for a project: params with filter="project:work"
- List urgent tasks: params with filter="+urgent"
- List tasks due today: params with filter="due:today"
- List completed tasks: params with status="completed"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating safe, non-destructive read operations. The description adds valuable context beyond annotations: it mentions support for 'powerful querying' with Taskwarrior filter expressions and describes the return format options (markdown or JSON). No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement, usage guidelines, parameter summary, and examples. It's appropriately sized for a tool with multiple parameters and examples. However, the 'Args' and 'Returns' sections are somewhat redundant given the detailed schema, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (filtering capabilities), rich input schema with full coverage, annotations covering safety, and an output schema (implied by response_format), the description is complete. It explains the tool's purpose, provides usage examples, and clarifies output formatting, leaving no significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage (all parameters are well-documented with descriptions, defaults, and constraints), so the baseline is 3. The description's 'Args' section repeats the parameter name but adds minimal value beyond the schema. The examples provide helpful semantic context for filter usage, but this doesn't significantly elevate the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('list tasks', 'view tasks', 'search for specific tasks', 'get an overview') and identifies the resource ('from Taskwarrior'). It distinguishes this tool from siblings like taskwarrior_add, taskwarrior_complete, etc., by focusing on listing/filtering rather than creating or modifying tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('to view tasks, search for specific tasks, or get an overview of pending work'), including specific examples like listing pending tasks or tasks for a project. However, it doesn't explicitly state when NOT to use it or name alternatives among siblings (e.g., taskwarrior_summary for aggregated views).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_modifyAIdempotent
Modify an existing task's attributes.
Use this tool to update task description, project, priority, due date, or tags.
Args:
params: ModifyTaskInput containing task_id and attributes to modify
Returns:
Confirmation message with updated task info
Examples:
- Change description: params with task_id="5", description="Updated task name"
- Change project: params with task_id="5", project="personal"
- Set priority: params with task_id="5", priority="H"
- Add tags: params with task_id="5", add_tags=["urgent"]
- Remove due date: params with task_id="5", due=""
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (mutation), idempotentHint=true (safe to retry), and destructiveHint=false (non-destructive). The description adds value by specifying that it modifies 'existing' tasks and provides examples of behavioral details like using empty strings to remove values (e.g., due='') and how to handle tags without prefixes. It does not contradict annotations and enriches the context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, usage guidelines, args/returns sections, and multiple examples. Each sentence earns its place by providing essential information without redundancy, and it is front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with multiple attributes), low schema coverage (0%), and presence of an output schema (returns confirmation message), the description is complete. It covers purpose, usage, parameters with examples, and behavioral details, leaving output specifics to the schema. No gaps are evident for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full burden. It compensates by listing key parameters (task_id, description, project, priority, due, add_tags) in the description and examples, explaining semantics like 'use empty string to remove' for project and due, and priority values (H, M, L). This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Modify') and resource ('an existing task's attributes'), distinguishing it from siblings like taskwarrior_add (create), taskwarrior_delete (remove), or taskwarrior_complete (mark as done). It specifies what can be updated (description, project, priority, due date, or tags), making the purpose specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use this tool to update...' and lists specific attributes, providing clear context for when to use it. However, it does not mention when not to use it or name alternatives (e.g., taskwarrior_delete for removal, taskwarrior_annotate for adding notes), so it lacks explicit exclusions or sibling comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_projectsARead-onlyIdempotent
List all projects in Taskwarrior.
Use this tool to see all projects and the number of tasks in each.
Args:
params: ListProjectsInput with response_format
Returns:
List of projects with task counts
Examples:
- List projects: params with response_format="markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds value by mentioning the return format options and that it includes task counts, which are behavioral details beyond annotations. However, it doesn't elaborate on potential limitations like pagination or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, usage, args, returns, examples) and front-loaded with the core function. Each sentence adds value, but the 'Args' and 'Returns' sections could be slightly more concise by integrating information, and the example is somewhat redundant with the args explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single parameter with enum), rich annotations covering safety and behavior, and the presence of an output schema (implied by 'Returns' reference), the description is complete enough. It explains the tool's purpose, usage, parameters, and output format adequately without needing to duplicate structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the schema provides no parameter documentation. The description compensates by explaining the 'response_format' parameter in the Args and Examples sections, specifying the two enum values and their purposes. This adds meaningful semantics, though it doesn't fully detail the 'params' wrapper structure beyond referencing ListProjectsInput.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all projects') and resource ('in Taskwarrior'), distinguishing it from sibling tools like taskwarrior_list (general listing) or taskwarrior_tags (different resource). The first sentence directly communicates the tool's function without being tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('to see all projects and the number of tasks in each'), which implicitly differentiates it from other listing tools. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the siblings, preventing a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_startAIdempotent
Start working on a task.
Use this tool to indicate you're actively working on a task. This adds the
'active' state to the task.
Args:
params: StartTaskInput containing the task_id to start
Returns:
Confirmation message
Examples:
- Start task #5: params with task_id="5"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover key traits (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description adds value by explaining the 'active' state effect. However, it doesn't disclose additional behaviors like error conditions, permissions needed, or how it interacts with other tools (e.g., if starting an already active task). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (description, args, returns, examples) and front-loaded purpose. Slightly verbose in the example section, but overall efficient with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (state change operation), annotations provide safety profile, and output schema exists (implied by 'Returns'), the description is reasonably complete. It covers purpose, parameter usage, and example, though could improve on error handling or sibling tool context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by specifying the parameter as 'task_id to start' and providing an example. It adds meaning beyond the schema's minimal documentation, though it doesn't detail format constraints (e.g., UUID vs. numeric ID) or validation rules. Baseline adjusted upward due to compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Start working on') and resource ('a task'), specifying that it adds the 'active' state to the task. However, it doesn't explicitly differentiate from siblings like 'taskwarrior_modify' or 'taskwarrior_annotate' which might also affect task states, missing full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides implied usage ('Use this tool to indicate you're actively working on a task'), but lacks explicit guidance on when to use this vs. alternatives like 'taskwarrior_modify' for state changes or 'taskwarrior_stop' for ending work. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_stopAIdempotent
Stop working on a task.
Use this tool to indicate you've paused work on a task.
Args:
params: StopTaskInput containing the task_id to stop
Returns:
Confirmation message
Examples:
- Stop task #5: params with task_id="5"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations: it clarifies that stopping indicates 'paused work,' which isn't covered by annotations like idempotentHint or destructiveHint. Annotations already indicate it's not read-only, not destructive, and idempotent, but the description usefully explains the behavioral intent. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by sections for Args, Returns, and Examples. Each sentence adds value without redundancy, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (1 parameter, annotations provided, output schema exists), the description is fairly complete. It explains the purpose, usage, and parameters, and since an output schema exists, it doesn't need to detail return values. However, it could be more comprehensive on parameter details given the 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'params: StopTaskInput containing the task_id to stop' and provides an example with 'task_id="5",' adding some meaning. However, it doesn't fully detail parameter semantics like format constraints or what 'task_id' entails beyond the schema's basic type, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Stop') and resource ('working on a task'), making it easy to understand. However, it doesn't explicitly differentiate from sibling tools like 'taskwarrior_start' or 'taskwarrior_pause' (if such a tool existed), which would require more specific context about what 'stop' means in this system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance by stating 'Use this tool to indicate you've paused work on a task,' which suggests when to use it. However, it lacks explicit alternatives (e.g., when to use 'complete' or 'delete' instead) or exclusions, leaving some ambiguity compared to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_summaryARead-onlyIdempotent
Get a summary of task statistics.
Use this tool to get an overview of pending tasks, including counts by
project, priority, and urgency.
Returns:
Summary statistics of tasks
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds useful context beyond this: it specifies the scope ('pending tasks') and the types of statistics ('counts by project, priority, and urgency'), which helps the agent understand what data to expect. No contradictions with annotations are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise: three sentences that efficiently state the purpose, usage, and return value. Every sentence adds value without redundancy, and it's front-loaded with the core functionality. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, read-only, idempotent), rich annotations (covering safety and behavior), and the presence of an output schema (which handles return values), the description is complete enough. It adds necessary context about the summary's content (pending tasks, counts by categories) without needing to detail outputs or parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (though empty). With no parameters, the baseline is 4, as there's nothing for the description to compensate for. The description appropriately doesn't discuss parameters, focusing instead on the tool's output and usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a summary of task statistics' and specifies it provides 'an overview of pending tasks, including counts by project, priority, and urgency.' This is specific (verb+resource+scope) and distinguishes it from siblings like taskwarrior_list (which likely lists individual tasks) or taskwarrior_projects (which likely lists projects). However, it doesn't explicitly contrast with all siblings, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance: 'Use this tool to get an overview of pending tasks...' This suggests when to use it (for summary statistics rather than detailed lists). However, it doesn't explicitly state when NOT to use it or name specific alternatives (e.g., 'use taskwarrior_list for detailed task information'), which would be needed for a higher score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_tagsARead-onlyIdempotent
List all tags used in Taskwarrior.
Use this tool to see all tags and how many tasks use each tag.
Args:
params: ListTagsInput with response_format
Returns:
List of tags with usage counts
Examples:
- List tags: params with response_format="markdown"
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a read-only, non-destructive, idempotent operation with a closed world. The description adds useful context about what information is returned (tags with usage counts) and provides an example, but does not disclose additional behavioral traits like rate limits, authentication needs, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, usage, args, returns, example) and avoids redundant information. Every sentence adds value, though the example could be slightly more informative about format differences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter), rich annotations covering safety and behavior, and the presence of an output schema, the description is sufficiently complete. It explains the tool's purpose, usage, parameter role, and return format, though it could briefly mention the output schema's existence for clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for the single parameter, the description compensates by explaining the parameter's purpose ('response_format') in the Args and Returns sections, and provides an example showing its usage. However, it does not detail the specific effects of choosing 'markdown' vs 'json' formats beyond general descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all tags') and resource ('used in Taskwarrior'), distinguishing it from sibling tools like taskwarrior_projects or taskwarrior_list. It explicitly mentions the output includes usage counts, which differentiates it from a simple tag listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('to see all tags and how many tasks use each tag'), but does not explicitly mention when not to use it or name specific alternatives among siblings. The example reinforces the primary use case without comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskwarrior_undoA
Undo the last Taskwarrior operation.
Use this tool to revert the most recent change to tasks.
Args:
params: UndoInput (no parameters needed)
Returns:
Confirmation message
Examples:
- Undo last action: params with no special values
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it specifies that it only undoes the 'most recent change' and provides an example of usage. Annotations already cover the safety profile (destructiveHint=false, readOnlyHint=false), but the description enhances understanding of the tool's specific scope and limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, usage, args, returns, examples) and wastes no words. Every sentence adds value, though the 'Args' and 'Returns' sections could be slightly more detailed given the simple nature of this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple undo operation with good annotations and an output schema, the description is nearly complete. It explains what the tool does, when to use it, parameter requirements, and provides an example. The only minor gap is not explicitly stating what constitutes a 'change' or potential limitations beyond the most recent one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and only one parameter (params of type UndoInput with no properties), the description compensates well by stating 'no parameters needed' in the Args section. This clarifies what might otherwise be confusing about an empty parameter object, though it doesn't explain why the parameter structure exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('undo') and target resource ('last Taskwarrior operation'), distinguishing it from siblings like taskwarrior_modify or taskwarrior_delete. It provides a precise verb+resource combination that leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('to revert the most recent change to tasks') and implies when not to use it (only for the last operation, not for selective undo). While it doesn't name specific alternatives, the context of sibling tools makes it clear this is for reversal operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose targeting specific operations in Taskwarrior's task management lifecycle. Tools like add, modify, complete, delete, start, and stop handle different states and actions without overlap, while list, get, projects, tags, summary, and annotate serve distinct informational roles. The descriptions reinforce these boundaries, making tool selection unambiguous.
All tool names follow a consistent 'taskwarrior_' prefix with a descriptive verb_noun pattern (e.g., taskwarrior_add, taskwarrior_list, taskwarrior_modify). This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions across the 13 tools.
With 13 tools, this server is well-scoped for managing tasks in Taskwarrior, covering core CRUD operations (add, get, modify, delete), lifecycle states (start, stop, complete), informational queries (list, projects, tags, summary), and utilities (annotate, undo). Each tool earns its place without bloat, aligning with the domain's complexity.
The tool set provides complete coverage for Taskwarrior's domain, including task creation, retrieval, updating, deletion, state management (start/stop/complete), filtering, metadata access (projects/tags), annotations, undo functionality, and summary statistics. No obvious gaps exist; agents can perform all essential workflows without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Task management your AI agents can actually run. One line becomes a context-ready task over MCP.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn unofficial MCP server that enables AI agents to create and list tasks in Todoist using natural language. It supports task details such as due dates, priorities, and labels, while allowing for project-based filtering.3MIT
- FlicenseNot gradedqualityDmaintenanceA task management MCP server that provides tools to create, list, complete, and delete tasks using pluggable storage backends. It enables users to interact with their task lists through natural language using MCP-compatible clients like Claude Desktop.
- AlicenseNot gradedqualityFmaintenanceAn MCP server that provides AI assistants with full access to Todoist tasks, projects, labels, and filters. It enables comprehensive task management, project organization, and productivity tracking through a wide range of specialized tools.416MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for TickTick task management. Enables AI assistants to create, update, list, search, and complete tasks via natural language.4128MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/tylyan/taskwarrior-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server