411 lines
11 KiB
Markdown
411 lines
11 KiB
Markdown
# MCP-Tasks CLI Reference
|
|
|
|
This skill provides comprehensive CLI reference for the mcp-tasks command-line tool.
|
|
|
|
## Overview
|
|
|
|
The mcp-tasks CLI provides task management via command-line interface for scripting and automation. For agent workflows, use the MCP server instead.
|
|
|
|
## Installation
|
|
|
|
The CLI is distributed as a pre-built Babashka uberscript in this plugin:
|
|
```bash
|
|
plugins/mcp-tasks-cli/bin/mcp-tasks
|
|
```
|
|
|
|
Add to PATH or invoke directly:
|
|
```bash
|
|
# Add to PATH (example)
|
|
export PATH="$PATH:/path/to/plugins/mcp-tasks-cli/bin"
|
|
|
|
# Or invoke directly
|
|
/path/to/plugins/mcp-tasks-cli/bin/mcp-tasks --help
|
|
```
|
|
|
|
## Configuration Discovery
|
|
|
|
No `--config-path` required. The CLI automatically searches for `.mcp-tasks.edn`:
|
|
- Starts from current directory
|
|
- Traverses up directory tree
|
|
- Stops at filesystem root or when found
|
|
|
|
Example:
|
|
```bash
|
|
# Project structure:
|
|
# /project/.mcp-tasks.edn
|
|
# /project/src/
|
|
|
|
# Works from any subdirectory:
|
|
cd /project/src
|
|
mcp-tasks list # Finds /project/.mcp-tasks.edn
|
|
```
|
|
|
|
## Commands
|
|
|
|
| Command | Purpose | Required Args | Key Options |
|
|
|---------|---------|---------------|-------------|
|
|
| `list` | Query tasks with filters | None | `--status`, `--category`, `--type`, `--parent-id`, `--task-id`, `--title-pattern`, `--limit`, `--unique` |
|
|
| `show` | Display single task | `--task-id` | `--format` |
|
|
| `add` | Create new task | `--category`, `--title` | `--description`, `--type`, `--parent-id`, `--prepend` |
|
|
| `complete` | Mark task complete | `--task-id` or `--title` | `--category`, `--completion-comment` |
|
|
| `update` | Update task fields | `--task-id` | `--title`, `--description`, `--design`, `--status`, `--category`, `--type`, `--parent-id`, `--meta`, `--relations` |
|
|
| `delete` | Delete task | `--task-id` or `--title-pattern` | None |
|
|
|
|
## Global Options
|
|
|
|
| Option | Values | Default | Description |
|
|
|--------|--------|---------|-------------|
|
|
| `--format` | `edn`, `json`, `human` | `edn` | Output format |
|
|
| `--help` | - | - | Show help message |
|
|
|
|
## Command Details
|
|
|
|
### list
|
|
|
|
Query tasks with optional filters.
|
|
|
|
**Usage:**
|
|
```bash
|
|
mcp-tasks list [options]
|
|
```
|
|
|
|
**Options:**
|
|
|
|
| Flag | Alias | Type | Description |
|
|
|------|-------|------|-------------|
|
|
| `--status` | `-s` | keyword | Filter by status: `open`, `closed`, `in-progress`, `blocked`, `any` |
|
|
| `--category` | `-c` | string | Filter by category name |
|
|
| `--type` | `-t` | keyword | Filter by type: `task`, `bug`, `feature`, `story`, `chore` |
|
|
| `--parent-id` | `-p` | integer | Filter by parent task ID |
|
|
| `--task-id` | - | integer | Filter by specific task ID |
|
|
| `--title-pattern` | `--title` | string | Filter by title pattern (regex or substring) |
|
|
| `--limit` | - | integer | Maximum tasks to return (default: 30) |
|
|
| `--unique` | - | boolean | Enforce 0 or 1 match (error if >1) |
|
|
| `--format` | - | keyword | Output format: `edn`, `json`, `human` |
|
|
|
|
**Examples:**
|
|
```bash
|
|
# List open tasks in human format
|
|
mcp-tasks list --status open --format human
|
|
|
|
# List all tasks for a category
|
|
mcp-tasks list --status any --category simple
|
|
|
|
# List story child tasks
|
|
mcp-tasks list --parent-id 31 --status open
|
|
```
|
|
|
|
### show
|
|
|
|
Display a single task by ID.
|
|
|
|
**Usage:**
|
|
```bash
|
|
mcp-tasks show --task-id <id> [options]
|
|
```
|
|
|
|
**Options:**
|
|
|
|
| Flag | Alias | Type | Required | Description |
|
|
|------|-------|------|----------|-------------|
|
|
| `--task-id` | `--id` | integer | Yes | Task ID to display |
|
|
| `--format` | - | keyword | No | Output format: `edn`, `json`, `human` |
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Show task in EDN format
|
|
mcp-tasks show --task-id 42
|
|
|
|
# Show task in human-readable format
|
|
mcp-tasks show --id 42 --format human
|
|
```
|
|
|
|
### add
|
|
|
|
Create a new task.
|
|
|
|
**Usage:**
|
|
```bash
|
|
mcp-tasks add --category <name> --title <title> [options]
|
|
```
|
|
|
|
**Options:**
|
|
|
|
| Flag | Alias | Type | Required | Description |
|
|
|------|-------|------|----------|-------------|
|
|
| `--category` | `-c` | string | Yes | Task category (e.g., `simple`, `medium`, `large`) |
|
|
| `--title` | `-t` | string | Yes | Task title |
|
|
| `--description` | `-d` | string | No | Task description |
|
|
| `--type` | - | keyword | No | Task type (default: `task`). Options: `task`, `bug`, `feature`, `story`, `chore` |
|
|
| `--parent-id` | `-p` | integer | No | Parent task ID (for child tasks) |
|
|
| `--prepend` | - | boolean | No | Add task at beginning instead of end |
|
|
| `--format` | - | keyword | No | Output format: `edn`, `json`, `human` |
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Create simple task
|
|
mcp-tasks add --category simple --title "Fix parser bug"
|
|
|
|
# Create task with description
|
|
mcp-tasks add -c medium -t "Add auth" -d "Implement JWT auth"
|
|
|
|
# Create child task
|
|
mcp-tasks add --category simple --title "Subtask" --parent-id 31
|
|
```
|
|
|
|
### complete
|
|
|
|
Mark a task as complete and move to archive.
|
|
|
|
**Usage:**
|
|
```bash
|
|
mcp-tasks complete (--task-id <id> | --title <pattern>) [options]
|
|
```
|
|
|
|
**Options:**
|
|
|
|
| Flag | Alias | Type | Required | Description |
|
|
|------|-------|------|----------|-------------|
|
|
| `--task-id` | `--id` | integer | * | Task ID to complete |
|
|
| `--title` | `-t` | string | * | Task title pattern (alternative to task-id) |
|
|
| `--category` | `-c` | string | No | Task category (for verification) |
|
|
| `--completion-comment` | `--comment` | string | No | Optional completion comment |
|
|
| `--format` | - | keyword | No | Output format: `edn`, `json`, `human` |
|
|
|
|
\* At least one of `--task-id` or `--title` required.
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Complete by ID
|
|
mcp-tasks complete --task-id 42
|
|
|
|
# Complete by title with comment
|
|
mcp-tasks complete --title "Fix bug" --comment "Fixed via PR #123"
|
|
|
|
# Complete with category verification
|
|
mcp-tasks complete --id 42 --category simple
|
|
```
|
|
|
|
### update
|
|
|
|
Update task fields.
|
|
|
|
**Usage:**
|
|
```bash
|
|
mcp-tasks update --task-id <id> [options]
|
|
```
|
|
|
|
**Options:**
|
|
|
|
| Flag | Alias | Type | Required | Description |
|
|
|------|-------|------|----------|-------------|
|
|
| `--task-id` | `--id` | integer | Yes | Task ID to update |
|
|
| `--title` | `-t` | string | No | New task title |
|
|
| `--description` | `-d` | string | No | New task description |
|
|
| `--design` | - | string | No | New task design notes |
|
|
| `--status` | `-s` | keyword | No | New status: `open`, `closed`, `in-progress`, `blocked` |
|
|
| `--category` | `-c` | string | No | New task category |
|
|
| `--type` | - | keyword | No | New task type: `task`, `bug`, `feature`, `story`, `chore` |
|
|
| `--parent-id` | `-p` | integer/string | No | New parent task ID (pass `"null"` to remove) |
|
|
| `--meta` | - | JSON string | No | New metadata as JSON object (replaces entire map) |
|
|
| `--relations` | - | JSON string | No | New relations as JSON array (replaces entire vector) |
|
|
| `--format` | - | keyword | No | Output format: `edn`, `json`, `human` |
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Update status
|
|
mcp-tasks update --task-id 42 --status in-progress
|
|
|
|
# Update title and description
|
|
mcp-tasks update --id 42 --title "New title" --description "New desc"
|
|
|
|
# Update metadata
|
|
mcp-tasks update --task-id 42 --meta '{"priority":"high"}'
|
|
|
|
# Remove parent relationship
|
|
mcp-tasks update --task-id 42 --parent-id "null"
|
|
```
|
|
|
|
### delete
|
|
|
|
Delete a task from tasks.ednl (archives to complete.ednl with `:status :deleted`).
|
|
|
|
**Usage:**
|
|
```bash
|
|
mcp-tasks delete (--task-id <id> | --title-pattern <pattern>) [options]
|
|
```
|
|
|
|
**Options:**
|
|
|
|
| Flag | Alias | Type | Required | Description |
|
|
|------|-------|------|----------|-------------|
|
|
| `--task-id` | `--id` | integer | * | Task ID to delete |
|
|
| `--title-pattern` | `--title` | string | * | Title pattern to match (alternative to task-id) |
|
|
| `--format` | - | keyword | No | Output format: `edn`, `json`, `human` |
|
|
|
|
\* At least one of `--task-id` or `--title-pattern` required.
|
|
|
|
**Constraints:**
|
|
- Cannot delete tasks with non-closed children (must complete or delete children first)
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Delete by ID
|
|
mcp-tasks delete --task-id 42
|
|
|
|
# Delete by title pattern
|
|
mcp-tasks delete --title-pattern "old-task"
|
|
|
|
# Delete with human-readable output
|
|
mcp-tasks delete --id 42 --format human
|
|
```
|
|
|
|
## Output Formats
|
|
|
|
### EDN (Default)
|
|
|
|
Clojure EDN format suitable for programmatic consumption:
|
|
```clojure
|
|
{:tasks [{:id 42 :title "Fix bug" :status :open ...}]
|
|
:metadata {:open-task-count 5 :returned-count 1}}
|
|
```
|
|
|
|
### JSON
|
|
|
|
JSON format for integration with non-Clojure tools:
|
|
```json
|
|
{
|
|
"tasks": [{"id": 42, "title": "Fix bug", "status": "open", ...}],
|
|
"metadata": {"open_task_count": 5, "returned_count": 1}
|
|
}
|
|
```
|
|
|
|
### Human
|
|
|
|
Human-readable tabular format:
|
|
```
|
|
Tasks (1 found, showing 1):
|
|
|
|
ID | Status | Category | Type | Title
|
|
----|--------|----------|------|--------
|
|
42 | open | simple | task | Fix bug
|
|
|
|
Metadata:
|
|
Open tasks: 5
|
|
Returned: 1
|
|
```
|
|
|
|
## Common Workflows
|
|
|
|
### Query and Display
|
|
```bash
|
|
# Find tasks by status and category
|
|
mcp-tasks list --status open --category medium --format human
|
|
|
|
# Show specific task details
|
|
mcp-tasks show --task-id 42 --format human
|
|
```
|
|
|
|
### Create and Manage Tasks
|
|
```bash
|
|
# Create simple task
|
|
mcp-tasks add --category simple --title "Fix parser"
|
|
|
|
# Create story with child tasks
|
|
mcp-tasks add --category large --title "User auth" --type story
|
|
mcp-tasks add --category medium --title "Login" --parent-id 100
|
|
|
|
# Update task status
|
|
mcp-tasks update --task-id 101 --status in-progress
|
|
|
|
# Complete task with comment
|
|
mcp-tasks complete --task-id 101 --comment "Implemented"
|
|
```
|
|
|
|
### Scripting Examples
|
|
```bash
|
|
# Get open task count (JSON + jq)
|
|
mcp-tasks list --status open --format json | jq '.metadata.open_task_count'
|
|
|
|
# List all story tasks
|
|
mcp-tasks list --type story --status any --format human
|
|
|
|
# Batch update tasks (shell loop)
|
|
for id in 42 43 44; do
|
|
mcp-tasks update --task-id $id --status closed
|
|
done
|
|
```
|
|
|
|
## File Locations
|
|
|
|
The CLI operates on these files within the `.mcp-tasks/` directory:
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `.mcp-tasks.edn` | Configuration file (searched automatically) |
|
|
| `.mcp-tasks/tasks.ednl` | Incomplete tasks |
|
|
| `.mcp-tasks/complete.ednl` | Completed/deleted tasks archive |
|
|
| `.mcp-tasks/prompts/<category>.md` | Category-specific prompts (not used by CLI) |
|
|
|
|
## CLI vs MCP Server
|
|
|
|
**Use CLI for:**
|
|
- Shell scripting and automation
|
|
- CI/CD pipelines
|
|
- Batch operations
|
|
- Quick queries from terminal
|
|
- Integration with non-agent tools
|
|
|
|
**Use MCP Server for:**
|
|
- Agent-driven task execution
|
|
- Interactive task refinement
|
|
- Workflow automation with prompts
|
|
- Story-based development
|
|
- Git integration (branches, worktrees)
|
|
|
|
The CLI and MCP server operate on the same `.mcp-tasks/` data files and can be used interchangeably.
|
|
|
|
## Error Handling
|
|
|
|
**Configuration not found:**
|
|
```
|
|
Error: Could not find .mcp-tasks.edn in current directory or any parent directory
|
|
```
|
|
Solution: Initialize project with `.mcp-tasks.edn` or run from correct directory.
|
|
|
|
**Unknown option:**
|
|
```
|
|
Unknown option: --invalid. Use --help to see valid options.
|
|
```
|
|
Solution: Check command-specific help with `mcp-tasks <command> --help`.
|
|
|
|
**Invalid format:**
|
|
```
|
|
Invalid format: xml. Must be one of: edn, json, human
|
|
```
|
|
Solution: Use one of the supported format values.
|
|
|
|
**Missing required argument:**
|
|
```
|
|
Required option: --task-id (or --id)
|
|
```
|
|
Solution: Provide all required arguments for the command.
|
|
|
|
**Task not found:**
|
|
```
|
|
Error: No task found with task-id: 999
|
|
```
|
|
Solution: Verify task ID exists using `mcp-tasks list`.
|
|
|
|
## Limitations
|
|
|
|
- No interactive prompts (use flags for all input)
|
|
- No task execution workflows (use MCP server)
|
|
- No git integration (use MCP server)
|
|
- No worktree management (use MCP server)
|
|
- No branch automation (use MCP server)
|
|
|
|
## Version
|
|
|
|
Check version in `plugins/mcp-tasks-cli/.claude-plugin/plugin.json`.
|