This skill provides comprehensive CLI reference for the mcp-tasks command-line tool.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add plurigrid/asi --skill cli-usage --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Cli Usage?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/plurigrid-cli-usage)More formats (shields.io, HTML) on the badges page.
---
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:
```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`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!