taskqueue-mcp
A Model Context Protocol (MCP) server for AI task management, helping AI assistants handle multi-step tasks in a structured way with optional user approval checkpoints.
MCP Task Manager
MCP Task Manager (npm package: taskqueue-mcp) is a Model Context Protocol (MCP) server for AI task management. This tool helps AI assistants handle multi-step tasks in a structured way, with optional user approval checkpoints.
Features
- Task planning with multiple steps
- Progress tracking
- User approval of completed tasks
- Project completion approval
- Task details visualization
- Task status state management
- Enhanced CLI for task inspection and management
Usage
Usually you will set the tool configuration in Claude Desktop, Cursor, or another MCP client as follows:
{
"tools": {
"taskqueue": {
"command": "npx",
"args": ["-y", "taskqueue-mcp"]
}
}
}
To use the CLI utility, you can use the following command:
npx task-manager-cli --help
This will show the available commands and options.
Available MCP Tools
The TaskManager now uses a direct tools interface with specific, purpose-built tools for each operation:
Project Management Tools
list_projects: Lists all projects in the systemread_project: Gets details about a specific projectcreate_project: Creates a new project with initial tasksdelete_project: Removes a projectadd_tasks_to_project: Adds new tasks to an existing projectfinalize_project: Finalizes a project after all tasks are done
Task Management Tools
list_tasks: Lists all tasks for a specific projectread_task: Gets details of a specific taskcreate_task: Creates a new task in a projectupdate_task: Modifies a task's properties (title, description, status)delete_task: Removes a task from a projectapprove_task: Approves a completed taskget_next_task: Gets the next pending task in a projectmark_task_done: Marks a task as completed with details
Task Status and Workflows
Tasks have a status field that can be one of:
not started: Task has not been started yetin progress: Task is currently being worked ondone: Task has been completed (requirescompletedDetails)
Status Transition Rules
The system enforces the following rules for task status transitions:
- Tasks follow a specific workflow with defined valid transitions:
- From
not started: Can only move toin progress - From
in progress: Can move to eitherdoneor back tonot started - From
done: Can move back toin progressif additional work is needed
- From
- When a task is marked as "done", the
completedDetailsfield must be provided to document what was completed - Approved tasks cannot be modified
- A project can only be approved when all tasks are both done and approved
These rules help maintain the integrity of task progress and ensure proper documentation of completed work.
Usage Workflow
A typical workflow for an LLM using this task manager would be:
create_project: Start a project with initial tasksget_next_task: Get the first pending task- Work on the task
mark_task_done: Mark the task as complete with details- Wait for approval (user must call
approve_taskthrough the CLI) get_next_task: Get the next pending task- Repeat steps 3-6 until all tasks are complete
finalize_project: Complete the project (requires user approval)
CLI Commands
Task Approval
Task approval is controlled exclusively by the human user through the CLI command:
npm run approve-task -- <projectId> <taskId>
Options:
-f, --force: Force approval even if the task is not marked as done
Note: Tasks must be marked as "done" with completed details before they can be approved (unless using --force).
Listing Tasks and Projects
The CLI provides a command to list all projects and tasks:
npm run list-tasks
To view details of a specific project:
npm run list-tasks -- -p <projectId>
This command displays information about all projects in the system or a specific project, including:
- Project ID and initial prompt
- Completion status
- Task details (title, description, status, approval)
- Progress metrics (approved/completed/total tasks)
Data Schema and Storage
File Location
The task manager stores data in a JSON file that must be accessible to both the server and CLI.
The default platform-specific location is:
- Linux:
~/.local/share/taskqueue-mcp/tasks.json - macOS:
~/Library/Application Support/taskqueue-mcp/tasks.json - Windows:
%APPDATA%\taskqueue-mcp\tasks.json
Using a custom file path for storing task data is not recommended, because you have to remember to set the same path for both the MCP server and the CLI, or they won't be able to coordinate with each other. But if you do want to use a custom path, you can set the TASK_MANAGER_FILE_PATH environment variable in your MCP client configuration:
{
"tools": {
"taskqueue": {
"command": "npx",
"args": ["-y", "taskqueue-mcp"],
"env": {
"TASK_MANAGER_FILE_PATH": "/path/to/tasks.json"
}
}
}
}
Then, before running the CLI, you should export the same path in your shell:
export TASK_MANAGER_FILE_PATH="/path/to/tasks.json"
Data Schema
The JSON file uses the following structure:
TaskManagerFile
├── projects: Project[]
├── projectId: string # Format: "proj-{number}"
├── initialPrompt: string # Original user request text
├── projectPlan: string # Additional project details
├── completed: boolean # Project completion status
└── tasks: Task[] # Array of tasks
├── id: string # Format: "task-{number}"
├── title: string # Short task title
├── description: string # Detailed task description
├── status: string # Task status: "not started", "in progress", or "done"
├── approved: boolean # Task approval status
├── completedDetails: string # Completion information (required when status is "done")
├── toolRecommendations: string # Suggested tools that might be helpful for this task
└── ruleRecommendations: string # Suggested rules/guidelines to follow for this task
License
MIT