focustodo-mcp
MCP Server for Focus To-Do (專注清單) — Control your Pomodoro timer & tasks via AI
Install / Use
claude mcp add gyozalab -- npx -y github:gyozalab/focustodo-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of focustodo-mcp
focustodo-mcp scores 72/100 on our quality scale, 3789th of 4,623 Development & Engineering skills we index.
Its MCP Server is 4.3 KB long, well organised into 14 sections with 4 code examples: a solid amount of guidance for an agent.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 2 months ago, so focustodo-mcp is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 87/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
focustodo-mcp compared with similar skills
All 4 of these similar skills score higher than focustodo-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| focustodo-mcp (this skill)by gyozalab | 72 | 3 | 2mo ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 91.8k | 20d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.5k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
| ai-job-searchby MadsLorentzen | 100 | 45.0k | today | CLAUDE.md |
Frequently asked questions
- How do I install focustodo-mcp?
- Run
claude mcp add gyozalab -- npx -y github:gyozalab/focustodo-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does focustodo-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is focustodo-mcp safe to use?
- It is MIT-licensed and scores 87/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is focustodo-mcp still maintained?
- The repository was last updated about 2 months ago, so focustodo-mcp is actively maintained.
Skill content
View source on GitHubFocus To-Do MCP Server
繁體中文 | English
為 Focus To-Do(專注清單) 打造的 MCP(Model Context Protocol)伺服器,讓 AI 助理(Claude Code、Claude Desktop 等)可以用自然語言操作你的番茄鐘任務。
起心動念: Focus To-Do 一直沒有開放公開 API,所以我自己逆向工程做了這個 MCP,讓 AI 助理也能串接它。本專案與 Focus To-Do 官方無關,亦未獲其授權。
⚡ 快速設定
需要 Node.js 20.12 以上。
步驟一:Clone 並安裝
git clone https://github.com/gyozalab/focustodo-mcp.git
cd focustodo-mcp
npm install
npm run build
步驟二:加入 MCP 設定檔
將以下內容加入 Claude Code 的 .mcp.json 或 Claude Desktop 的設定檔:
{
"mcpServers": {
"focustodo": {
"command": "node",
"args": ["/your/path/to/focustodo-mcp/dist/index.js"],
"env": {
"FOCUSTODO_ACCOUNT": "your-email@example.com",
"FOCUSTODO_PASSWORD": "your-password"
}
}
}
}
將
/your/path/to/focustodo-mcp換成你實際的路徑,帳密填入你的 Focus To-Do 登入資訊。
完成後重啟 Claude,就可以開始用了。
使用範例
設定完成後,直接這樣問 AI:
- 「列出我的部落格清單任務」
- 「幫我加一個任務到寫作清單:寫 AI 工具評測文章,3 顆番茄」
- 「把這五件事一次加到寫作清單」
- 「這週我花最多時間在哪個清單?」
- 「今天我專注了多久?」
- 「剛剛專注了 45 分鐘在寫文章那個任務,幫我補記」
功能列表
查詢
| 工具 | 說明 |
|------|------|
| focustodo_list_projects | 列出所有清單與標籤 |
| focustodo_list_tasks | 列出任務(可依清單、標籤、優先度、狀態、到期日篩選)|
| focustodo_search_tasks | 依關鍵字搜尋名稱、標籤、備註 |
| focustodo_get_task_detail | 查看任務詳情(含子任務與番茄鐘紀錄)|
| focustodo_get_today_focus | 今日總覽:已專注時間 + 今天到期 + 逾期未完成 |
| focustodo_get_stats | 專注統計,含清單分佈與每日長條圖 |
| focustodo_refresh | 強制重新同步(快取預設 60 秒自動更新)|
寫入
| 工具 | 說明 |
|------|------|
| focustodo_create_task | 建立任務,支援 tasks 陣列批次建立 |
| focustodo_update_task | 改名稱/優先級/到期日/提醒/標籤/所屬清單/備註/番茄長度 |
| focustodo_complete_task | 標記完成,支援批次,uncomplete 可反向 |
| focustodo_delete_task | 軟刪除,支援批次 |
| focustodo_log_pomodoro | 補記已完成的專注時段,同步累加任務番茄計數 |
| focustodo_delete_pomodoro | 刪除番茄鐘記錄(記錯時用),任務計數跟著扣回 |
| focustodo_create_subtask | 新增子任務(自動標記父任務 hasSubtask)|
| focustodo_update_subtask | 子任務改名/完成/刪除/改預估番茄數 |
| focustodo_create_project | 建立新清單或標籤 |
| focustodo_update_project | 清單/標籤改名、換顏色 |
| focustodo_delete_project | 刪除清單/標籤(內含孤兒防護,見下)|
所有寫入完成後會用獨立 clientId 跑一次 delta sync 向 server 確認,回 ✅ 才代表真的持久化了。批次操作是一次推送、一次驗證,耗時與筆數幾乎無關。
遠端部署(HTTP 模式)
設定 PORT 環境變數就會改跑 HTTP 模式(提供 /health 與 /mcp),可部署到 Zeabur 之類的平台,供 Claude.ai 網頁版連接。
⚠️ HTTP 模式必須同時設定 MCP_AUTH_TOKEN,否則會拒絕啟動。/mcp 能讀寫整個帳號的任務,而部署網址並非秘密(TLS 憑證透明度日誌會登記),沒有這道門等於把任務庫對公網全開。Client 端需帶 Authorization: Bearer <token>。
node -e "console.log(require('crypto').randomUUID())" # 產一個 token
另外,時區跟著執行環境走(「今天」的判定與日期顯示都是),容器預設為 UTC,所以 Dockerfile 設了 TZ。部署到其他時區的機器時記得跟著調整。
技術說明
- API Base:
https://app.hk1.focustodo.net/ - 驗證方式:Email + 密碼登入 → Cookie-based Session,過期自動重登
- 同步機制:
POST /v64/sync雙向全量同步;timestamp是 epoch ms,帶入即取該時點後的 delta- 寫入只收完整物件。送
{id, name}這種 partial 會被整批拒收(status=-9),且拒絕是原子的、不留半套狀態。所以更新一律是「讀出來 → 改欄位 → 整包送回」 status:0=成功、-1/-2=session 失效(自動重登重試)、-9=資料被拒收
- 寫入只收完整物件。送
- 資料模型:
type=1000→ 一般清單type=3000→ 標籤(任務的tags欄位存的是這些清單的 ID,不是文字;本 server 自動做名稱↔ID 轉換)type=4xxx / 5xxx→ App 內建的智慧清單(PRJ_DEADLINE_OVERDUE、PRJ_PRIORITY_HIGH等),是動態篩選視圖不是容器,本 server 一律濾掉——把任務建進去會變成 App 看不到的卡片state:0=正常、-1=已刪除deadline:當地時區當天 23:59:59.999,傳'2026-08-05'會正確轉換
- 快取:60 秒 TTL,過期自動拉 delta。讀-改-寫的操作會先強制刷新,避免用舊值蓋掉你剛在 App 改的內容
收件匣與孤兒卡
沒指定清單的任務會落在收件匣(magic id id-task-tasks),App 看得到。
⚠️ 收件匣不是一個真的 project,/v64/sync 的 projects 陣列裡沒有它。本 server 在 enrich 時特別補上名稱,也接受用「收件匣 / 收件箱 / inbox」查詢。
⚠️ 若 projectId 是空字串會變成「真孤兒」:server 上存在,但 App 任何視圖都不顯示。因此 create_task 一律 fallback 到收件匣,列表與搜尋也預設濾掉歷史殘留的孤兒卡。
同樣要注意,刪除任務不會刪掉它的番茄鐘記錄——那些專注時間會繼續留在統計裡,「今日專注」甚至會顯示已刪任務的名稱。要真正移除得用 delete_pomodoro。
同樣的道理,刪除清單時 server 不會處理裡面的任務——它們的 projectId 會繼續指向已刪清單,變成看不到也救不回的孤兒。所以 delete_project 在清單非空時會要求用 moveTasksTo 指定任務去處,搬移全部成功才會刪清單。
關於寫入驗證
早期版本曾因為「推送後等 1.5 秒沒在 delta 看到」就判定 server 拒絕寫入,據此在文件裡寫下並不存在的「anti-tampering 鎖」。事後查證,那些被判定為遭拒的寫入其實全部都成功持久化了,只是 server 當時的寫入可見性延遲比較長。
現在的驗證改成退避重試(600ms → 1.8s → 5.4s),窮盡重試後的措辭是「無法確認」而非「被拒絕」,本地快取也只標記失效、不臆測結果。「還沒看到」不等於「被拒絕」,這是這個專案學到最貴的一課。
開發
npm run dev # 用 tsx 直接跑(讀 .env)
npm run selftest # 純函式斷言 + 對真實帳號的建→改→刪循環 + HTTP 模式迴歸
自測會在收件匣建立 [MCP自測] 開頭的卡片,跑完自動刪除(中途失敗也會在收尾統一清理)。需要在 .env 填入 FOCUSTODO_ACCOUNT 與 FOCUSTODO_PASSWORD。
授權
MIT
Related Skills
Agent-Reach
91.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
ai-job-search
45.0kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
