🚀 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 文件。
🔗 鏈接