Tasks
About
An efficient task manager. Designed to minimize tool confusion and maximize LLM budget efficiency while providing powerful search, filtering, and organization capabilities across multiple file formats (Markdown, JSON, YAML)
Explore
- ⚡ Ultra-efficient design: Minimal tool count (5 tools) to reduce AI confusion
- 🎯 Budget-optimized: Batch operations, smart defaults and auto-operations minimize LLM API calls
- 🚀 Multi-format support: Markdown (.md), JSON (.json), and YAML (.yml) task files
- 🔍 Powerful search: Case-insensitive text/status filtering with OR logic, and ID-based lookup
- 📊 Smart organization: Status-based filtering with customizable workflow states
- 🎯 Position-based indexing: Easy task ordering with 0-based insertion
- 📁 Multi-source support: Manage multiple task files simultaneously
- 🔄 Real-time updates: Changes persist automatically to your chosen format
- 🤖 Auto WIP management: Automatically manages work-in-progress task limits
- 🚫 Duplicate prevention: Automatically prevents duplicate tasks
- 🛡️ Type-safe: Full TypeScript support with Zod validation
- 🔒 Ultra-safe: AI has no way to rewrite or delete your tasks (unless you enable it), only add and move them
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
TasksCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
- Node.js ≥20 - This package requires Node.js version 20 or higher
{
"mcpServers": {
"mcp-tasks": {
"command": "npx",
"args": ["-y", "mcp-tasks"]
}
}
}
Basic setup:
json{
"mcpServers": {
"mcp-tasks": {
"command": "npx",
"args": ["-y", "mcp-tasks"]
}
}
}
| Variable | Default | Description |
|----------|---------|-------------|
| TRANSPORT | stdio | Transport mode: stdio or http |
| PORT | 4680 | HTTP server port (when TRANSPORT=http) |
| PREFIX_TOOLS | true | Prefix tool names with tasks_ |
| STATUS_WIP | In Progress | Work-in-progress status name |
| STATUS_TODO | To Do | ToDo status name |
| STATUS_DONE | Done | Completed status name |
| STATUS_NOTES | Notes | Optional notes/non-actionable status name |
| STATUSES | Backlog | Comma-separated additional statuses |
| AUTO_WIP | true | One WIP moves rest to To Do, first To Do to WIP when no WIP's |
| KEEP_DELETED | true | Retain deleted tasks (AI can't lose you tasks!) |
| INSTRUCTIONS | ... | Included in all tool responses, for the AI to follow |
| SOURCES_PATH | ./sources.json | File to store source registry (internal) |
| DEBUG | false | if true, enable the tasks_debug tool |
Optional, the WIP/ToDo/Done statuses can be included to control their order.
Custom workflow statuses:
json{
"env": {
"STATUSES": "WIP,Pending,Archived,Done,To Review",
"STATUS_WIP": "WIP",
"STATUS_TODO": "Pending",
"AUTO_WIP": "false"
}
}
yamlgroups:
"In Progress":
- Write user registration
"To Do":
- Implement authentication
- Set up CI/CD pipeline
Backlog:
- Plan architecture
- Design database schema
Done:
- Set up project structure
- Initialize repository
bash
STATUS_WIP="Working" AUTO_WIP=false mcp-tasks
You can also use mcp-tasks (or npx mcp-tasks) as a command-line tool for quick task management:
bash
mcp-tasks setup tasks.md $PWD # Setup with workspace
git clone https://github.com/flesler/mcp-tasks
cd mcp-tasks
npm install
tasks_setup
Initializes a source from a file path. It must be absolute. Creates file if it does not exist. Returns the source ID for further use
tasks_search
Search tasks from specific statuses with optional text & ID filtering
tasks_add
Add new tasks with a specific status. It's faster and cheaper if you use this in batch, add all at once
tasks_update
Update tasks by ID to a different status. It's faster and cheaper if you use this in batch, update all at once
tasks_summary
Get count of tasks in each status and the work-in-progress tasks
When PREFIX_TOOLS=true (default), all tools are prefixed with tasks_:
| Tool | Description | Parameters |
|------|-------------|------------|
| tasks_setup | Initialize a task file (creates if missing, supports .md, .json, .yml) | source_path, workspace? |
| tasks_search | Search tasks with filtering | source_id, statuses?, terms?, ids? |
| tasks_add | Add new tasks to a status | source_id, texts[], status, index? |
| tasks_update | Update tasks by ID | source_id, ids[], status, index? |
| tasks_summary | Get task counts and work-in-progress | source_id |
ID Format: Both source_id (from file path) and task id (from task text) are 4-character alphanumeric strings (e.g., "xK8p", "m3Qw").
Setup a task file:
tasks_setup({
workspace: "/path/to/project",
source_path: "tasks.md" // relative to workspace or absolute
// source_path: "tasks.json"
// source_path: "tasks.yml"
})
// Returns: {"source":{"id":"xK8p","path":"/path/to/project/tasks.md"},"Backlog":0,"To Do":0,"In Progress":0,"Done":0,"inProgress":[]}
// Source ID (4-char alphanumeric) is used for all subsequent operations
Add tasks:
tasks_add({
source_id: "xK8p", // From setup response
texts: ["Implement authentication", "Write tests"],
status: "To Do",
index: 0 // Add at top (optional)
})
// Returns: {"source":{"id":"xK8p","path":"/absolute/path/to/tasks.md"},"Backlog":0,"To Do":2,"In Progress":0,"Done":0,"inProgress":[],"tasks":[{"id":"m3Qw","text":"Implement authentication","status":"To Do","index":0},{"id":"p9Lx","text":"Write tests","status":"To Do","index":1}]}
Search and filter:
tasks_search({
source_id: "xK8p", // From setup response
terms: ["auth", "deploy"], // Search terms (text or status, OR logic)
statuses: ["To Do"], // Filter by status
ids: ["m3Qw", "p9Lx"] // Filter by specific task IDs
})
// Returns: [{"id":"m3Qw","text":"Implement authentication","status":"To Do","index":0}]
Update tasks status:
tasks_update({
source_id: "xK8p", // From setup response
ids: ["m3Qw", "p9Lx"], // Task IDs from add/search responses
status: "Done" // Use "Deleted" to remove
})
// Returns: {"source":{"id":"xK8p","path":"/absolute/path/to/tasks.md"},"Backlog":0,"To Do":0,"In Progress":0,"Done":2,"inProgress":[],"tasks":[{"id":"m3Qw","text":"Implement authentication","status":"Done","index":0},{"id":"p9Lx","text":"Write tests","status":"Done","index":1}]}
Get overview:
tasks_summary({
source_id: "xK8p" // From setup response
})
// Returns: {"source":{"id":"xK8p","path":"/absolute/path/to/tasks.md"},"Backlog":0,"To Do":0,"In Progress":1,"Done":2,"inProgress":[{"id":"r7Km","text":"Fix critical bug","status":"In Progress","index":0}]}
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"tasks": {
"mcp-tasks": {
"command": "npx",
"args": [
"-y",
"mcp-tasks"
]
}
}
}
}
McpServers
{
"mcp-tasks": {
"command": "npx",
"args": [
"-y",
"mcp-tasks"
]
}
}
MCP Tasks 📋
A comprehensive and efficient Model Context Protocol (MCP) server for task management that works seamlessly with Claude, Cursor, and other MCP clients. Designed to minimize tool confusion and maximize LLM budget efficiency while providing powerful search, filtering, and organization capabilities across multiple file formats.
📚 Table of Contents
- ✨ Features
- 🚀 Quick Start
- 🤖 AI Integration Tips
- 🔧 Installation Examples
- 📁 Supported File Formats
- 🛠️ Available Tools
- 🎛️ Environment Variables
- 📊 File Formats
- 🖥️ Server Usage
- 💻 CLI Usage
- 🧪 Development
- 🛠️ Troubleshooting
- Why not let AI edit files directly?
- 🤝 Contributing
- 📄 License
- 🔗 Links
✨ Features
- ⚡ Ultra-efficient design: Minimal tool count (5 tools) to reduce AI confusion
- 🎯 Budget-optimized: Batch operations, smart defaults and auto-operations minimize LLM API calls
- 🚀 Multi-format support: Markdown (.md), JSON (.json), and YAML (.yml) task files
- 🔍 Powerful search: Case-insensitive text/status filtering with OR logic, and ID-based lookup
- 📊 Smart organization: Status-based filtering with customizable workflow states
- 🎯 Position-based indexing: Easy task ordering with 0-based insertion
- 📁 Multi-source support: Manage multiple task files simultaneously
- 🔄 Real-time updates: Changes persist automatically to your chosen format
- 🤖 Auto WIP management: Automatically manages work-in-progress task limits
- 🚫 Duplicate prevention: Automatically prevents duplicate tasks
- 🛡️ Type-safe: Full TypeScript support with Zod validation
- 🔒 Ultra-safe: AI has no way to rewrite or delete your tasks (unless you enable it), only add and move them
🚀 Quick Start
Option 1: NPX (Recommended)
```bashSign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



