Skip to main content
Glama
storypixel

mcp-taskwarrior-ai

by storypixel

MCP Taskwarrior AI Bridge

An AI-native Taskwarrior bridge that provides natural language task management for Claude Code and other AI systems. This MCP (Model Context Protocol) server extends Taskwarrior with context-aware, natural language capabilities while building on top of the existing Taskwarrior infrastructure.

Features

  • Natural Language Processing: Convert everyday language into Taskwarrior commands

  • Project Context Awareness: Automatically detects current project/ticket context

  • Ticket Integration: Sync tasks from ticket checklists (supports .tickets/ directory structure)

  • Eisenhower Matrix: Organize tasks by urgency and importance

  • Smart Task Addition: Intelligently parse priorities, due dates, projects, and tags

  • Shareable & Versioned: Configuration can be tracked in Git

Related MCP server: Taskmaster

Installation

Prerequisites

  1. Install Taskwarrior (if not already installed):

brew install task
  1. Install Node.js (v20 or later):

brew install node

Setup

  1. Clone the repository:

git clone https://github.com/storypixel/mcp-taskwarrior-ai.git
cd mcp-taskwarrior-ai
  1. Install dependencies:

npm install
  1. Build the project:

npm run build

Integration with Claude Code

Add the server to your Claude Code MCP configuration:

  1. Open your Claude Code settings

  2. Add to MCP servers:

{
  "mcpServers": {
    "taskwarrior": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/mcp-taskwarrior-ai/dist/index.js"],
      "env": {}
    }
  }
}

Or using the Claude CLI:

claude mcp add taskwarrior -s project -- node /path/to/mcp-taskwarrior-ai/dist/index.js

Usage

Natural Language Commands

The bridge understands natural language for task management:

  • Adding tasks: "add fix the login bug", "create task for code review", "todo implement caching"

  • Listing tasks: "show all tasks", "what should I work on next", "list urgent tasks", "show tasks for today"

  • Completing tasks: "mark task 5 as done", "complete task 1", "finish the review task"

  • Context queries: "where am I", "what's my current project", "show current context"

Available Tools

task_natural

Execute Taskwarrior commands using natural language.

{
  query: "add fix the authentication bug with high priority"
}

task_smart_add

Add tasks with structured metadata:

{
  description: "Implement user authentication",
  project: "myheb-android",
  priority: "H",
  due: "tomorrow",
  tags: ["security", "auth"]
}

task_ticket_sync

Import tasks from a ticket's checklist:

{
  ticket: "DRX-12345"
}

task_eisenhower

Get tasks organized by Eisenhower Matrix quadrants.

task_where_am_i

Get current context and suggested next actions based on project state.

task_context_set

Set the current project/context for all task operations:

{
  context: "DRX-12345"
}

task_raw

Execute raw Taskwarrior commands for advanced users:

{
  command: "modify 1 priority:H +urgent"
}

Project Context Integration

The bridge automatically detects project context using:

  1. .taskproject file - If present, defines the project name for Taskwarrior

  2. Git repository name - Falls back to the repo name from git

  3. Directory name - Uses current directory name if not in git

To override project detection, create a .taskproject file:

echo "my-project-name" > .taskproject

This is useful when one workspace manages tasks for another project.

The bridge also detects:

  • Current Git branch (for ticket context)

  • Task state from .task-state.json

  • Ticket tasks from .tickets/<ticket>/mr-checklist.md

Architecture

┌─────────────────┐
│  Claude Code    │
│   or AI Agent   │
└────────┬────────┘
         │ Natural Language
         ▼
┌─────────────────┐
│  MCP Server     │
│  - NLP Parser   │
│  - Context Mgr  │
└────────┬────────┘
         │ Taskwarrior Commands
         ▼
┌─────────────────┐
│   Taskwarrior   │
│   (task CLI)    │
└─────────────────┘

Development

Running in Development Mode

npm run dev

Testing

Run the test script to verify the server is working:

node test.js

Building

npm run build

Configuration

The server uses your existing Taskwarrior configuration (~/.taskrc). You can customize Taskwarrior settings as usual.

Context Detection

The bridge uses the current working directory and automatically detects project context. No hardcoded paths or specific project names are used.

Ticket Integration

Place ticket tasks in:

.tickets/
└── DRX-12345/
    ├── context.md       # Ticket context
    └── mr-checklist.md  # Tasks as checklist items

Format for mr-checklist.md:

- [ ] Update unit tests
- [ ] Add documentation
- [ ] Run linting

Prompts

The server includes built-in prompts:

Daily Review

Get a prioritized plan for the day including today's tasks, urgent items, and recommended next actions.

Weekly Planning

Organize tasks for the week ahead with active projects overview.

Troubleshooting

"Cannot proceed without rc file"

Initialize Taskwarrior:

task version

Context not detected

Ensure you're in a project directory or have .task-state.json in your workspace.

Ticket sync not finding tasks

Verify .tickets/<ticket>/mr-checklist.md exists and contains checkbox items.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Author

storypixel

Acknowledgments

Built on top of Taskwarrior - the command-line task management tool.

Available Tools

7 tools
task_context_setB

Set the current project/context for task operations

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesProject or context name (e.g., "myheb-android", "pharmacy", "DRX-12345")

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description fails to disclose behavioral traits such as whether the context is ephemeral or persistent, if it overwrites existing context, or any side effects. The brief description carries the full burden but offers insufficient detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, completely front-loaded with the core action. It is efficient with no redundancy, though it could arguably include more useful details without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description provides the basic 'what it does' but lacks contextual completeness regarding behavior (e.g., durability, scope, how to revert). It is minimally adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing examples in the parameter description. The tool description adds minimal additional meaning (tying to task operations), which is already implied by the tool name and context. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Set' and identifies the resource as 'current project/context for task operations', clearly distinguishing it from sibling tools like task_eisenhower or task_natural which focus on different task operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention prerequisites or context persistence. No usage cues are given beyond the basic action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_eisenhowerA

Get tasks organized by Eisenhower Matrix (Urgent/Important quadrants)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or side effects. The agent must infer from 'Get' that it is a read operation, but this is not explicitly confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose. Every word is meaningful, and there is no redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no parameters, no output schema), the description adequately explains what the tool does. However, it does not describe the return format or any constraints, which might leave minor gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters in the input schema (100% coverage by default). The description adds no param-specific information because none exist, which is acceptable. Baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get tasks organized by Eisenhower Matrix (Urgent/Important quadrants)', which specifies the verb (Get), resource (tasks), and organization format. Among sibling tools, no other tool offers this specific matrix view, so it naturally differentiates itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It lacks explicit context, prerequisites, or examples of appropriate scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_naturalA

Execute Taskwarrior commands using natural language. Examples: "add fix the login bug", "show tasks for today", "what should I work on next", "mark task 5 as done", "list urgent tasks"

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language task query or command

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It explains the function and gives examples but does not disclose limitations, error handling, or scope of supported commands.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence plus examples, front-loaded, no unnecessary words. Every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is mostly complete. It could mention supported command scope, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. The description adds useful examples beyond the schema's parameter description, clarifying acceptable input formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it executes Taskwarrior commands using natural language. This distinguishes it from sibling tools like task_raw (raw commands) and task_smart_add (AI-aided add).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Examples imply use for natural language queries, but no explicit guidance on when to prefer this tool over siblings or when not to use it. Missing when-to-use and when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_rawB

Execute raw Taskwarrior commands for advanced users

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesRaw Taskwarrior command (without "task" prefix)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It fails to disclose that raw commands can modify or delete data without confirmation, which is critical for an agent to assess risk.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded and contains no fluff. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks output schema and annotations; description does not explain return format, error handling, or safety implications of raw command execution, making it incomplete for a potentially dangerous tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description covers the parameter completely (100% coverage). The tool description adds no extra meaning beyond stating it executes commands, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes raw Taskwarrior commands for advanced users. It is specific enough to differentiate from sibling tools like task_natural or task_smart_add, but could further clarify what 'raw' commands entail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for advanced users' implies usage when specialized tools are insufficient, but there is no explicit guidance on when to use or avoid this tool, nor alternatives listed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_smart_addC

Add a task with intelligent parsing of priority, due dates, projects, and tags

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionYesTask description
projectNoProject name (optional)
priorityNoPriority: H(igh), M(edium), L(ow)
dueNoDue date (e.g., "today", "tomorrow", "2024-01-15")
tagsNoTags for the task

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'intelligent parsing' but does not explain how parsing works, what happens on conflicts with explicit parameters, or any side effects. The tool's behavior regarding permissions or output is not disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no superfluous words. It could be more informative but is not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of intelligent parsing and the lack of output schema, the description omits important details like how to leverage parsing, what the function returns, and error handling. More context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for each parameter. The description adds marginal value by hinting at parsing from the description parameter, but does not clarify the interaction between parsed and explicit fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Add' and resource 'task', and mentions intelligent parsing of priority, due dates, projects, and tags. However, it does not differentiate from sibling tools like task_natural, which may also parse natural language input.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like task_natural or task_raw. There is no mention of prerequisites, best practices, or contexts to avoid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_ticket_syncB

Sync tasks from a ticket checklist to Taskwarrior

ParametersJSON Schema
NameRequiredDescriptionDefault
ticketYesTicket ID (e.g., "DRX-12345")

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as whether it is destructive, requires authentication, or handles duplicate tasks. The description implies reading from an external system and writing to Taskwarrior without further details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no extraneous words. However, slight structure improvement could be made by adding a brief usage note, but it is already efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is minimally adequate. It lacks behavioral context but given the low complexity, it covers core functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema's parameter description ('Ticket ID (e.g., "DRX-12345")'). No additional format or validation guidance is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'sync' and the resource 'tasks from a ticket checklist to Taskwarrior'. It distinguishes from siblings like task_smart_add or task_natural by specifying the source (ticket checklist) and target (Taskwarrior).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus sibling tools (e.g., task_smart_add). Missing context such as prerequisites (e.g., need a valid ticket ID) or scenarios where syncing is preferred over manual creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_where_am_iB

Get current context and suggested next actions based on project state

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It fails to disclose side effects, return value structure, or what 'current context' entails. The description is too vague to inform behavioral expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose. No wasted words; every part contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema or annotations, the description is too minimal. It does not address what kind of context or suggestions are returned, or how to interpret them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, schema coverage 100%. Baseline 4 applies; the description adds value by explaining tool output, which is not captured in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and identifies the resource ('current context and suggested next actions'), clearly distinguishing it from sibling tools like 'task_context_set' or 'task_eisenhower'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no mention of prerequisites or conditions. The description does not help an agent choose between this and sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedtask_context_set
    • First observedtask_eisenhower
    • First observedtask_natural
    • First observedtask_raw
    • First observedtask_smart_add
    • First observedtask_ticket_sync
    • First observedtask_where_am_i

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have distinct purposes, but task_natural and task_raw both execute commands, and task_context_set and task_where_am_i both deal with context, creating slight ambiguity.

Naming Consistency3/5

All tools have a 'task_' prefix, but the verb/noun pattern is inconsistent: mix of verb_noun (context_set, smart_add, ticket_sync), noun (eisenhower), adjective (natural, raw), and phrase (where_am_i).

Tool Count5/5

7 tools is well-scoped for a task management server, covering common operations without being excessive.

Completeness4/5

Core operations (add, query, context, sync) are covered, but missing dedicated tools for delete/update are offset by natural and raw commands that can handle them.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers