Skip to main content
Glama
storypixel

mcp-taskwarrior-ai

by storypixel
README.md
# 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

## Installation

### Prerequisites

1. Install Taskwarrior (if not already installed):
```bash
brew install task
```

2. Install Node.js (v20 or later):
```bash
brew install node
```

### Setup

1. Clone the repository:
```bash
git clone https://github.com/storypixel/mcp-taskwarrior-ai.git
cd mcp-taskwarrior-ai
```

2. Install dependencies:
```bash
npm install
```

3. Build the project:
```bash
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:

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

Or using the Claude CLI:
```bash
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.

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

#### `task_smart_add`
Add tasks with structured metadata:

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

#### `task_ticket_sync`
Import tasks from a ticket's checklist:

```typescript
{
  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:

```typescript
{
  context: "DRX-12345"
}
```

#### `task_raw`
Execute raw Taskwarrior commands for advanced users:

```typescript
{
  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:
```bash
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

```bash
npm run dev
```

### Testing

Run the test script to verify the server is working:

```bash
node test.js
```

### Building

```bash
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`:
```markdown
- [ ] 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:
```bash
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](https://taskwarrior.org/) - the command-line task management tool.

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