DoneTick MCP Server
🚀 DoneTick MCP Server (Model Context Protocol SSE)
DoneTick(セルフホスト型の家事・タスク管理)向けの、本番環境で使用可能な完全な Model Context Protocol (MCP) サーバーで、HTTP Server-Sent Events (SSE) を実装しています。
Mistral Le Chat、Claude Desktop、LibreChat、n8n、Open WebUI、およびあらゆる MCP クライアントと互換性があります。
📋 機能
このサーバーは、DoneTick API をカバーする 57 の専門的な MCP ツール を提供します。完了履歴や時間追跡も含みます。すべてのエンドポイントは、npm run smoke によって実インスタンスに対して検証されています。
1. 📝 家事とタスク(donetick_*)
donetick_list_chores: タスクをフィルタ付きで一覧表示(検索、プロジェクト、ステータス)。donetick_get_chore: タスクの完全な詳細 — 繰り返し、担当者、サブタスク、ラベル、トリガー — に加えて、lastCompletedDate、lastCompletedBy、timeSpentSecondsも含みます。donetick_create_chore: 期日、繰り返し、優先度、ポイント、プロジェクト、サブタスク、ラベル、通知、承認、センサートリガーを指定して家事を作成。donetick_update_chore: 部分更新または完全更新。家事を先に読み取れない場合は、盲目的に書き込むのではなく中止します。donetick_complete_chore: 家事を完了し、次の繰り返しをスケジュールします。donetick_undo_chore: 最後の完了を元に戻します。donetick_delete_chore: 家事を完全に削除(アーカイブを推奨)。donetick_set_due_date: 期日を設定、変更、または クリア します。donetick_set_priority: 優先度を設定 — 1 が最高(P1)、4 が最低、0 はなし。donetick_skip_chore: 現在の繰り返しをスキップします。donetick_nudge_chore: 担当者にリマインダーの通知を送信します。donetick_set_chore_notifications: リマインダーを設定(期日、期日前、しつこい通知、完了)。donetick_set_chore_project、donetick_set_chore_assignee: 家事を再割り当てします。
2. 📊 完了履歴(donetick_*)
donetick_get_chore_history: 1 つの家事のすべての完了、スキップ、再スケジュール、未完了を、読みやすいstatusNameと要約付きで表示します。これは「完了」と「編集」を確実に区別する唯一の方法です —updatedAtは両方を混同します。donetick_get_history: サークル全体のアクティビティ。日付範囲とステータスでフィルタ可能。donetick_modify_history_entry: 完了が記録された日時やメモを修正します。donetick_delete_history_entry: 誤ったエントリを削除します。
3. ⏱️ 時間追跡(donetick_*)
donetick_start_chore/donetick_pause_chore: 家事ごとのタイマーを実行します。donetick_get_chore_timer: 合計作業時間と各作業セッションを表示します。donetick_reset_chore_timer: 蓄積された時間をクリアします。donetick_adjust_time_session/donetick_delete_time_session: 後から履歴を修正します。
4. 🧩 サブタスク(donetick_*)
donetick_set_subtasks: リスト全体を置き換えます。破壊的ですが、名前の一致によって ID と完了状態を保持します。donetick_add_subtask: 1 つのサブタスクを追加し、他はそのままにします。donetick_complete_subtask/donetick_uncomplete_subtask: ID または名前で 1 つのサブタスクをチェックします。donetick_remove_subtask: リストを書き換えずに 1 つのサブタスクを削除します。
注: 繰り返しの家事を完了すると、サブタスクはチェックされるのではなく クリア されます。これは DoneTick 自身の動作であり、次の発生に備えます。
5. 🗄️ アーカイブと承認(donetick_*)
donetick_list_archived_chores、donetick_archive_chore、donetick_unarchive_chore: 削除に代わる元に戻せる方法。donetick_approve_chore、donetick_reject_chore:requireApprovalが設定された家事の完了をレビューします。
6. 🏷️ ラベルとタグ(donetick_*)
donetick_list_labels: ラベルを一覧表示し、家事から抽出するフォールバックもあります。donetick_create_label、donetick_update_label、donetick_delete_label: 以下の制限を参照 — これらには JWT が必要です。donetick_set_chore_labels、donetick_add_chore_label: 家事にラベルを添付します。
7. ⚡ スマートシングとイベントトリガー(donetick_*)
donetick_list_things、donetick_create_thing、donetick_update_thing、donetick_delete_thing。donetick_set_thing_state: センサーまたはカウンターを更新し、リンクされたタスクを自動的にトリガーします。donetick_get_thing_history: シングが保持してきたすべての状態とその時刻。donetick_link_thing_chore/donetick_unlink_thing_chore: トリガー条件(eq、neq、gt、lt、gte、lte)。
8. 📁 プロジェクト(donetick_*)
donetick_list_projects、donetick_create_project、donetick_update_project、donetick_delete_project。
9. 👥 サークル、メンバー、フィルター(donetick_*)
donetick_get_circle_info、donetick_list_members、donetick_list_filters。
Related MCP server: Deferno MCP Server
📅 日付と優先度
日付。 DoneTick はすべての日付を Go の time.Time にバインドするため、RFC3339 のみを受け付けます。コネクタはさらに YYYY-MM-DD と YYYY-MM-DD HH:mm も受け付け、DONETICK_TIMEZONE(デフォルト UTC)の DONETICK_DEFAULT_DUE_TIME(デフォルト 18:00)で解決します。「明日が期限」を UTC の真夜中ではなく、意味のある現地時間にしたい場合は、両方を設定してください。
優先度。 DoneTick は 下向きに 数えます。1 が最優先で、Web UI では赤い P1 として表示され、4 が最低です。0 は優先度なしを意味します。2.0.0 より前のバージョンではこれが逆に文書化されていたため、古い説明を通じて書き込まれた家事には逆の値が含まれている可能性があります。
⚠️ 既知の制限
API キーではラベルを作成または編集できません。 DoneTick は
/api/v1/labelsを他のすべてのルートとは異なり、JWT 専用ミドルウェアの背後にマウントしています。読み取りは家事からラベルを抽出するフォールバックに依存します。Web UI で管理してください。任意の時間を記録することはできません。
POST /chores/{id}/doは所要時間の値を受け付けず、DoneTick の手動時間ハンドラーは定義されていますがルーティングされていません。開始/一時停止を使用するか、後でセッションの境界を調整してください。履歴ウィンドウは日数単位です。 DoneTick の
limitは行数ではなく日数です。since/untilはフェッチ後にクライアント側で適用されます。
🔒 セキュリティと OWASP ハードニング
OWASP A01 および A07(アクセス制御とタイミング攻撃): 認証トークンの定数時間検証(
crypto.timingSafeEqual)。OWASP A02(暗号化の失敗と情報漏えい): ログでのシークレットの秘匿化と、資格情報を含まない安全な
/healthテレメトリ。OWASP A03(インジェクションと SSRF): 厳格なプロトコルサニタイズ(
http:、https:)により、プロトコルインジェクションや SSRF(file://、gopher://)を防止。OWASP A04(サービス拒否): JSON ボディのペイロード制限(
1mb)と、接続のプルーニングを伴うアクティブな SSE セッション数の上限。OWASP A05(セキュリティ設定の誤り): 強化された HTTP ヘッダー(
X-Content-Type-Options: nosniff、X-Frame-Options: DENY、X-XSS-Protection: 0、Referrer-Policy: no-referrer、X-Powered-By無効)。非 root での Docker 実行(USER node)。
🐳 Docker によるクイックスタート
1. docker-compose.yml を作成
services:
mcp-donetick:
image: ghcr.io/bibiwan/mcp_donetick:latest
container_name: mcp-donetick
restart: unless-stopped
ports:
- "3000:3000"
environment:
- PORT=3000
- HOST=0.0.0.0
- DONETICK_URL=http://donetick:2021
- DONETICK_TOKEN=
# Resolves date-only inputs such as "2026-08-30" to a local hour
- DONETICK_TIMEZONE=Europe/Paris
- DONETICK_DEFAULT_DUE_TIME=18:00
- MCP_AUTH_TOKEN=
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"]
interval: 30s
timeout: 5s
retries: 32. コンテナを起動
docker compose up -d🤖 Mistral Le Chat との接続
Mistral Le Chat で、設定 ➔ ツールと MCP(または コネクタ)に移動します。
「MCP サーバーを追加」 をクリックします。
接続設定を入力します:
名前:
DoneTickURL:
https://<your-server-host>:3000/sse認証:
Bearer Tokenトークン:
<Your DoneTick API Token>(DoneTick ➔ 設定 ➔ API トークンで生成)
保存してチャットを開始!
プロンプトの例:
「期限切れまたは今日が期限の家事はどれですか?」
「来週の日曜日に、優先度が高く、サブタスクとして「グループヘッドのバックフラッシュ」と「ボイラーのスケール除去」を含む家事「エスプレッソマシンの掃除」を作成してください。」
「家事 #21 を私のコーヒーカウンター(シング #11)にリンクして、カウンターが 100 以上になったらトリガーするようにしてください。」
「タスク #5 を 20 ポイントで完了としてマークしてください。」
🧪 開発とテスト
# Install dependencies
npm install
# Run the test suite with coverage.
# Enforces an 80% floor on statements, branches, functions and lines.
npm test
# Build TypeScript
npm run build
# Start local server
npm startライブスモークテスト
ユニットスイートは axios をモックするため、ペイロードが意図した形であることを証明します — DoneTick がそれを受け入れることを証明するわけではありません。リリースにタグを付ける前に、実インスタンスに対してスモークテストを実行してください:
DONETICK_URL=https://donetick.example DONETICK_TOKEN=xxx npm run smoke[mcp-test] プレフィックスが付いたオブジェクトのみを作成し、コネクタが使用するすべてのエンドポイントを実行し、作成したものを削除し、そのプレフィックスがないものは削除を拒否します。既存の家事は決して変更されません。
📄 ライセンス
MIT ライセンス。自由に使用、変更、配布できます。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables management of TickTick tasks and projects through the Model Context Protocol, supporting deployment on Vercel with SSE capabilities. Users can list, create, update, and complete tasks directly within AI clients like Claude.1
- AlicenseBqualityBmaintenanceExposes the Deferno task-manager backend to AI agents, enabling them to read, create, update, and manage tasks, habits, chores, events, and daily plans.81MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage TickTick tasks, projects, habits, and focus sessions through the MCP server.140MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Yandex Tracker tasks with tools for creating, reading, updating, and transitioning issues via a Streamable HTTP endpoint.
Related MCP Connectors
Hosted NeuroDock — stateless communication and planning tools over OAuth-secured Streamable HTTP.
16 AI-native tools with dual SSE + streamable-http transport. Free tier available.
Create, test, publish, and manage Dreamlit notification workflows from AI clients.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bibiwan/mcp_donetick'
If you have feedback or need assistance with the MCP directory API, please join our Discord server