ticktick-mcp
TickTick MCPサーバー -- Claudeのための完全なTickTick統合
28個のツール。完全なCRUD。スマートクエリ。複数条件フィルター。バッチ操作。GTDサポート。Dida365互換。
ClaudeをTickTickアカウントに接続し、自然な会話を通じてタスクシステム全体を管理しましょう。タスクの作成、プロジェクトを横断した検索、期限切れタスクの確認、アイテムのバッチ作成など、アプリを開くことなく整理された状態を保てます。
「期限切れのタスクは?」 --> すべてのプロジェクトにわたる期限切れのタスクを即座に表示します。
なぜこれを使うのか?
機能 | このサーバー | TickTick公式MCP | jacepark12 |
ツール数 | 28 | 22 | ~20 |
複数条件フィルター | あり (優先度 + タグ + 日付 + プロジェクト) | あり | なし |
プロジェクト間のタスク移動 | あり | あり | なし |
一括完了 | あり (最大20件) | あり (最大20件) | なし |
バッチ更新 | あり | あり | なし |
完了済みタスクの表示 | あり | あり | なし |
プロジェクト横断検索 | 全文検索 | あり | あり |
サブタスク | あり | なし | なし |
GTDフォーカスビュー | あり (高優先度 + 期限内 + 期限切れ) | なし | 部分的 |
Dida365サポート | あり (ベースURL設定可能) | なし | あり |
非同期 (httpx) | あり | N/A | なし (同期リクエスト) |
Pydanticバリデーション | あり (型付き入力) | N/A | なし |
MCPアノテーション | あり (readOnly, destructiveヒント) | N/A | なし |
セルフホスト / オープンソース | あり | なし (ホスト型サービス) | あり |
プライバシー | 100%ローカル、トークンのみ | TickTickサーバーを経由 | 100%ローカル |
Related MCP server: mcp-server-asana
クイックスタート
前提条件
TickTick アカウント
Python 3.10+
Claude Code または Claude Desktop
ステップ 1 -- クローンとインストール
git clone https://github.com/Salen-Project/ticktick-mcp
cd ticktick-mcp
python3 -m venv .venv
.venv/bin/pip install -r requirements.txtステップ 2 -- TickTick開発者アプリの登録
developer.ticktick.com にアクセスします
New App をクリックし、任意の名前を入力します
OAuth Redirect URL を
http://localhost:8080/callbackに設定しますClient ID と Client Secret をコピーします
ステップ 3 -- 認証
TICKTICK_CLIENT_ID=your_id TICKTICK_CLIENT_SECRET=your_secret .venv/bin/python3 setup_auth.pyブラウザが開き、アプリの承認を求められます。Allow をクリックしてください。トークンは ~/.ticktick_mcp/tokens.json に保存され、自動的に更新されます。
ステップ 4 -- Claude Codeへの登録
claude mcp add ticktick \
-e TICKTICK_CLIENT_ID=your_id \
-e TICKTICK_CLIENT_SECRET=your_secret \
-- /path/to/ticktick-mcp/.venv/bin/python3 /path/to/ticktick-mcp/server.pyClaude Desktopの場合
claude_desktop_config.json に以下を追加します:
{
"mcpServers": {
"ticktick": {
"type": "stdio",
"command": "/path/to/ticktick-mcp/.venv/bin/python3",
"args": ["/path/to/ticktick-mcp/server.py"],
"env": {
"TICKTICK_CLIENT_ID": "your_id",
"TICKTICK_CLIENT_SECRET": "your_secret"
}
}
}
}ステップ 5 -- 生産性スキルを追加する(オプション)
mkdir -p ~/.claude/skills/ticktick
cp skills/ticktick/SKILL.md ~/.claude/skills/ticktick/Dida365のサポート
Dida365(TickTickの中国版)を使用する場合は、以下の環境変数を設定してください:
TICKTICK_BASE_URL=https://api.dida365.com/open/v1
TICKTICK_TOKEN_URL=https://dida365.com/oauth/token使用例
発言内容 | 実行されるアクション |
「金曜日に歯医者に電話するようリマインドして」 | 期限付きタスクを作成 |
「『Q1レポートの確認』をWorkプロジェクトに高優先度で追加して」 | Workプロジェクトに優先度5のタスクを作成 |
「期限切れのタスクは?」 | 全プロジェクトの期限切れタスクを表示 |
「何に集中すべき?」 | GTDビュー:高優先度 + 今日の期限 + 期限切れ |
「『予算』に関するものを検索して」 | 全プロジェクトを対象に全文検索 |
「高優先度のタスクをすべて見せて」 | プロジェクトを横断して優先度=5でフィルタリング |
「今週が期限のものは?」 | 今後7日以内に期限が来るタスクを表示 |
「タスクを作成:牛乳を買う、ジョンに電話、レポート提出」 | 3つのタスクをバッチ作成 |
「『休暇の計画』というプロジェクトを作成して」 | 新しいプロジェクトを作成 |
「休暇タスクの下にサブタスク『日焼け止めを買う』を追加して」 | サブタスクを作成 |
「歯医者のタスクを完了した」 | タスクを完了済みにマーク |
「古いSprintプロジェクトを削除して」 | プロジェクトとすべてのタスクを削除 |
MCPツールリファレンス
プロジェクト (5ツール)
ツール | 説明 |
| ID、名前、色を含む全プロジェクトを一覧表示 |
| 特定のプロジェクトの詳細を取得 |
| プロジェクト詳細と未完了タスクを一度に取得 |
| 新しいプロジェクトを作成 (名前、色、表示モード) |
| プロジェクトの名前、色、表示モードを更新 |
| プロジェクトを完全に削除 |
タスク -- 基本CRUD (7ツール)
ツール | 説明 |
| 特定プロジェクトの全タスクを一覧表示 |
| タスクを作成 (タイトル、期限、優先度、プロジェクト、タグ) |
| 特定タスクの詳細を取得 |
| タイトル、内容、日付、優先度を更新 |
| タスクを完了済みにマーク |
| タスクを完全に削除 |
| 親タスクの下にサブタスクを作成 |
タスク -- スマートクエリ (7ツール)
ツール | 説明 |
| すべてのアクティブなプロジェクトから全タスクを取得 |
| タイトル、内容、サブタスクを対象に全文検索 |
| 優先度でフィルタリング (なし/低/中/高) |
| 全プロジェクトの今日が期限のタスク |
| 全プロジェクトの期限切れタスク |
| 今後7日以内に期限が来るタスク |
| 指定した日数後に期限が来るタスク |
タスク -- バッチ & 生産性 (5ツール)
ツール | 説明 |
| 複数のタスクを一度に作成 |
| 複数のタスクを一度に更新 |
| 最大20件のタスクを一度に完了済みにマーク |
| タスクを別のプロジェクトへ移動 |
| GTDフォーカスビュー:高優先度 + 今日の期限 + 期限切れ |
タスク -- 高度なフィルター (2ツール)
ツール | 説明 |
| 複数条件フィルター:優先度 + タグ + 日付範囲 + プロジェクト + ステータス |
| プロジェクト内の完了済みタスクを表示 |
ユーザー (1ツール)
ツール | 説明 |
| ユーザー設定を取得 (タイムゾーン、週の開始日など) |
アーキテクチャ
server.py # 20 MCP tools, async httpx, Pydantic validation
setup_auth.py # One-time OAuth 2.0 setup (browser-based)
~/.ticktick_mcp/ # Token storage (auto-refreshed)
skills/ticktick/ # Claude skill for natural task language設計上の選択:
完全非同期 -- ブロックしないAPI呼び出しのために
httpx.AsyncClientを使用Pydantic入力モデル -- 明確なエラーメッセージを備えた型安全で検証済みの入力
MCPアノテーション -- より安全なツール使用のための
readOnlyHint、destructiveHint自動トークン更新 -- 60秒のバッファを持ってトークンを透過的に更新
トラブルシューティング
「Given client ID does not match」 -- developer.ticktick.com で Client ID を再確認してください。
ポート 8080 が既に使用中 -- lsof -ti:8080 | xargs kill -9 を実行してから再試行してください。
トークンの期限切れ -- setup_auth.py を再実行して新しいトークンを取得してください。
Claudeがツールを認識しない -- claude mcp list を実行して登録を確認してください。
貢献
貢献を歓迎します!変更したい内容がある場合は、まずIssueを作成して議論してください。
git clone https://github.com/Salen-Project/ticktick-mcp
cd ticktick-mcp
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
# Make your changes to server.py
# Test: python3 -c "from server import mcp; print(len(mcp._tool_manager._tools), 'tools')"リンク
ライセンス
MIT (c) Salen-Project
Latest Blog Posts
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/abdulhamid-n/ticktick-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server