🚀 MCP任务管理工具 📋
MCP任务管理工具是一款高效的任务管理工具。它旨在减少工具使用的复杂性,最大程度提高大语言模型(LLM)的预算使用效率。同时,它具备强大的搜索、过滤和组织功能,支持多种文件格式,如Markdown、JSON和YAML。
🚀 快速开始
将以下内容添加到 ~/.cursor/mcp.json
(适用于Cursor)或 ~/.config/claude_desktop_config.json
(适用于Claude Desktop)中。
选项1:NPX(推荐)
{
"mcpServers": {
"mcp-tasks": {
"command": "npx",
"args": ["-y", "mcp-tasks"]
}
}
}
选项2:Docker
{
"mcpServers": {
"mcp-tasks": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"flesler/mcp-tasks"
]
}
}
}
✨ 主要特性
- ⚡ 超高效设计:仅使用5种工具,减少人工智能的混淆。
- 🎯 预算优化:通过批量操作、智能默认设置和自动操作,最大程度减少LLM API调用。
- 🚀 多格式支持:支持Markdown(
.md
)、JSON(.json
)和YAML(.yml
)任务文件。
- 🔍 强大搜索:支持不区分大小写的文本/状态过滤(使用OR逻辑),以及基于ID的查找。
- 📊 智能组织:支持基于状态的过滤,工作流状态可自定义。
- 🎯 基于位置的索引:通过基于0的插入方式,轻松对任务进行排序。
- 📁 多源支持:可同时管理多个任务文件。
- 🔄 实时更新:更改会自动保存到所选格式的文件中。
- 🤖 自动进行中任务管理:自动管理进行中任务的数量限制。
- 🚫 重复任务预防:自动防止重复任务的出现。
- 🛡️ 类型安全:完全支持TypeScript,并使用Zod进行验证。
- 🔒 超安全:人工智能无法重写或删除你的任务(除非你启用该功能),只能添加和移动任务。
- 📅 可选提醒:可以启用专门的提醒部分,人工智能可以持续查看和维护该部分。
🔧 安装示例
自定义环境的完整配置
{
"mcpServers": {
"mcp-tasks": {
"command": "npx",
"args": ["-y", "mcp-tasks"],
"env": {
"STATUS_WIP": "In Progress",
"STATUS_TODO": "To Do",
"STATUS_DONE": "Done",
"STATUS_REMINDERS": "Reminders",
"STATUS_NOTES": "Notes",
"STATUSES": "In Progress,To Do,Done,Backlog,Reminders,Notes",
"AUTO_WIP": "true",
"PREFIX_TOOLS": "true",
"KEEP_DELETED": "true",
"TRANSPORT": "stdio",
"PORT": "4680",
"INSTRUCTIONS": "Use mcp-tasks tools when the user mentions new or updated tasks"
}
}
}
}
HTTP传输以实现远程访问
首先启动服务器:
TRANSPORT=http PORT=4680 npx mcp-tasks
然后:
{
"mcpServers": {
"mcp-tasks": {
"type": "streamableHttp",
"url": "http://localhost:4680/mcp"
}
}
}
📁 支持的文件格式
扩展名 |
格式 |
适用场景 |
自动创建 |
.md |
Markdown |
人类可读的任务列表 |
✅ |
.json |
JSON |
结构化数据、API |
✅ |
.yml |
YAML |
配置文件 |
✅ |
格式会根据文件扩展名自动检测。所有格式都支持相同的功能,并且可以在同一项目中混合使用。
推荐:使用Markdown(.md
)格式,以便于人类阅读和编辑。
⚠️ 重要提示
建议从新文件开始使用,而不是使用现有的任务文件,以避免丢失非任务内容。
🛠️ 可用工具
当 PREFIX_TOOLS=true
(默认设置)时,所有工具都会以 tasks_
为前缀:
工具 |
描述 |
参数 |
tasks_setup |
初始化任务文件(如果文件不存在则创建,支持 .md 、.json 、.yml ) |
source_path , workspace? |
tasks_search |
搜索任务并进行过滤 |
source_id , statuses? , terms? , ids? |
tasks_add |
向某个状态添加新任务 |
source_id , texts[] , status , index? |
tasks_update |
通过ID更新任务 |
source_id , ids[] , status , index? |
tasks_summary |
获取任务数量和进行中任务的信息 |
source_id |
ID格式:source_id
(来自文件路径)和任务 id
(来自任务文本)都是4个字符的字母数字字符串(例如,"xK8p"
、"m3Qw"
)。
工具使用示例
初始化任务文件
tasks_setup({
workspace: "/path/to/project",
source_path: "tasks.md"
})
添加任务
tasks_add({
source_id: "xK8p",
texts: ["Implement authentication", "Write tests"],
status: "To Do",
index: 0
})
搜索和过滤
tasks_search({
source_id: "xK8p",
terms: ["auth", "deploy"],
statuses: ["To Do"],
ids: ["m3Qw", "p9Lx"]
})
更新任务状态
tasks_update({
source_id: "xK8p",
ids: ["m3Qw", "p9Lx"],
status: "Done"
})
获取概览信息
tasks_summary({
source_id: "xK8p"
})
🎛️ 环境变量
变量 |
默认值 |
描述 |
TRANSPORT |
stdio |
传输模式:stdio 或 http |
PORT |
4680 |
HTTP服务器端口(当 TRANSPORT=http 时) |
PREFIX_TOOLS |
true |
在工具名称前添加 tasks_ 前缀 |
STATUS_WIP |
In Progress |
进行中任务的状态名称 |
STATUS_TODO |
To Do |
待办任务的状态名称 |
STATUS_DONE |
Done |
已完成任务的状态名称 |
STATUS_REMINDERS |
Reminders |
给人工智能的提醒(空字符串表示禁用) |
STATUS_NOTES |
Notes |
备注/非可操作任务(空字符串表示禁用) |
STATUSES |
Backlog |
以逗号分隔的其他状态 |
AUTO_WIP |
true |
当没有进行中任务时,将一个待办任务移动到进行中状态,并将其他进行中任务移动到待办状态 |
KEEP_DELETED |
true |
保留已删除的任务(确保人工智能不会丢失你的任务!) |
INSTRUCTIONS |
... |
包含在所有工具响应中,供人工智能遵循 |
SOURCES_PATH |
./sources.json |
存储源注册表的文件(内部使用) |
DEBUG |
false |
如果为 true ,则启用 tasks_debug 工具 |
高级配置示例
可选地,可以包含进行中/待办/已完成状态,以控制它们的顺序。
自定义工作流状态
{
"env": {
"STATUSES": "WIP,Pending,Archived,Done,To Review",
"STATUS_WIP": "WIP",
"STATUS_TODO": "Pending",
"AUTO_WIP": "false"
}
}
📊 文件格式
Markdown(.md
) - 人类可读
# 任务 - 文件名
## 进行中
- [ ] 编写用户注册功能
## 待办
- [ ] 实现身份验证
- [ ] 设置CI/CD管道
## 积压
- [ ] 规划架构
- [ ] 设计数据库架构
## 已完成
- [x] 设置项目结构
- [x] 初始化仓库
## 提醒
- [ ] 在确认功能正常工作之前,不要将任务标记为已完成
- [ ] 将任务标记为已完成后,提交所有更改,并使用任务名称作为提交消息
## 备注
- [ ] 任务管理工具使用起来非常棒!
JSON(.json
) - 结构化数据
{
"groups": {
"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"
],
"Reminders": [
"Don't move to Done until you verified it works",
"After you move to Done, commit all the changes, use the task name as the commit message"
],
"Notes": [
"The task tools were really great to use!"
]
}
}
YAML(.yml
) - 适合配置
groups:
"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
Reminders:
- Don't move to Done until you verified it works
- After you move to Done, commit all the changes, use the task name as the commit message
🖥️ 服务器使用方法
mcp-tasks --help
mcp-tasks
TRANSPORT=http mcp-tasks
TRANSPORT=http PORT=8080 mcp-tasks
STATUS_WIP="Working" AUTO_WIP=false mcp-tasks
💻 CLI使用方法
你也可以将 mcp-tasks
(或 npx mcp-tasks
)作为命令行工具,进行快速任务管理:
mcp-tasks setup tasks.md $PWD
mcp-tasks add "Implement authentication"
mcp-tasks add "Write tests" "Backlog"
mcp-tasks add "Fix critical bug" "In Progress" 0
mcp-tasks search
mcp-tasks search "" "auth,login"
mcp-tasks search "To Do,Done" ""
mcp-tasks search "In Progress" "bug"
mcp-tasks update m3Qw,p9Lx Done
mcp-tasks summary
mcp-tasks add "Don't move to Done until you verified it works" Reminders
CLI特性
- 可以直接访问所有MCP工具的功能。
- 以JSON格式输出,便于解析和脚本编写。
- 与MCP工具具有相同的可靠性和重复任务预防功能。
- 非常适合自动化脚本和CI/CD管道。
🧪 开发
git clone https://github.com/flesler/mcp-tasks
cd mcp-tasks
npm install
npm run dev
npm run dev:http
npm run build
npm run lint
npm run lint:full
🛠️ 故障排除
要求
- Node.js ≥20 - 此包需要Node.js 20或更高版本。
常见问题
运行 npx-tasks
时出现 ERR_MODULE_NOT_FOUND
错误
- 问题:运行
npx mcp-tasks
时出现类似 Cannot find module '@modelcontextprotocol/sdk/dist/esm/server/index.js'
的错误。
- 原因:npx缓存损坏或不完整,导致无法正确解析依赖项。
- 解决方案:清除npx缓存并重新尝试:
npx clear-npx-cache
npx mcp-tasks
- 注意:此问题在Node.js v20和v22上都可能出现,清除缓存可以解决该问题。
我的任务存储在哪里?
- 任务存储在你通过AI在
tasks_setup
中指定的文件路径中。
- 绝对路径会在每个工具调用的响应中以
source.path
的形式返回。
- 如果你忘记了存储位置,可以查看任何工具的响应,或要求AI显示给你。
Markdown文件中的内容丢失
- ⚠️ 工具会重写整个文件,仅保留识别状态部分下的任务。
- 当工具修改文件时,非任务内容(备注、文档)可能会丢失。
- 建议使用专门的任务文件,而不是将任务与其他内容混合。
为什么不让AI直接编辑任务文件?
- 文件解析复杂性:AI需要读取整个文件,解析Markdown结构,并理解当前状态,这既昂贵又容易出错。
- 多步骤操作:将任务从“进行中”移动到“已完成”需要多次调用
read_file
、grep_search
、sed
来定位和修改正确的部分。
- 上下文丢失:由于令牌限制,大型任务文件会迫使AI处理不完整的文件块,从而失去对整体结构的跟踪。
- 状态理解:当AI读取碎片化的文件部分时,很难理解项目的真实状态 - 哪些任务实际上正在进行中?
- 编辑精度:手动编辑可能会破坏Markdown格式,丢失任务,或意外修改错误的部分。
- 并发编辑冲突:当AI直接编辑文件时,人类无法安全地进行手动更改,否则会产生冲突或覆盖。
- 令牌效率低下:读取+解析+编辑循环消耗的令牌比具有清晰输入/输出的结构化工具调用要多得多。
- 安全性:AI在直接编辑文件时可能会意外更改或删除任务,但使用这些工具时,它无法重写或删除你的任务。
🤝 贡献代码
我们欢迎贡献!请按照以下步骤进行:
- 分叉仓库
- 创建一个功能分支:
git checkout -b feature-name
- 进行更改并编写测试
- 运行:
npm run lint:full
- 提交拉取请求
📄 许可证
本项目采用MIT许可证 - 详情请参阅 LICENSE 文件。
🔗 链接