Agent Skills: MCP-Tasks CLI Reference

This skill provides comprehensive CLI reference for the mcp-tasks command-line tool.

UncategorizedID: plurigrid/asi/cli-usage

Install this agent skill to your local

pnpm dlx add-skill https://github.com/plurigrid/asi/tree/HEAD/skills/cli-usage

Skill Files

Browse the full folder contents for cli-usage.

Download Skill

Loading file tree…

skills/cli-usage/SKILL.md

Skill Metadata

Name
cli-usage
Description
This skill provides comprehensive CLI reference for the mcp-tasks command-line tool.

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:

plugins/mcp-tasks-cli/bin/mcp-tasks

Add to PATH or invoke directly:

# 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:

# 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:

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:

# 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:

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:

# 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:

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:

# 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:

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:

# 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:

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:

# 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:

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:

# 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:

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

{
  "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

# 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

# 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

# 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.