A powerful Model Context Protocol (MCP) server that enables seamless integration between Claude Desktop and TickTick task management system.
- π Smart Timezone Support - Automatic timezone detection with manual override options
- β‘ Batch Operations - Create/update multiple tasks simultaneously
- π Advanced Search - Find tasks by title, content, or project with filters
- π Analytics & Insights - Project statistics, overdue tracking, productivity metrics
- π Smart Scheduling - Get today's tasks, upcoming deadlines, overdue items
- Full CRUD Operations - Create, read, update, delete tasks and projects
- Priority Management - Set and modify task priorities (None, Low, Medium, High)
- Date & Time Handling - Start dates, due dates with timezone awareness
- Project Organization - Manage multiple projects with different view modes
- Task Completion - Mark tasks as complete with automatic timestamps
- Natural Language Commands - Control TickTick through conversational Claude interface
- Real-time Synchronization - Changes reflect immediately in TickTick apps
- OAuth2 Authentication - Secure, token-based authentication with auto-refresh
- Error Handling - Robust error recovery and user-friendly messages
- Python 3.10+
- uv - Fast Python package manager
- Claude Desktop
- TickTick Account with API access
-
Clone the repository
git clone https://github.com/jacepark12/ticktick-mcp.git cd ticktick-mcp -
Create and activate virtual environment
uv venv # On Windows: .venv\Scripts\activate # On macOS/Linux: source .venv/bin/activate
-
Install dependencies
uv pip install -e . uv pip install tzdata # For timezone support
-
Set up TickTick API credentials
Register your application at TickTick Developer Center:
- Set redirect URI to:
http://localhost:8000/callback - Note your Client ID and Client Secret
- Set redirect URI to:
-
Authenticate with TickTick
uv run -m ticktick_mcp.cli auth
This will:
- Prompt for your Client ID and Client Secret
- Open browser for TickTick authorization
- Automatically save tokens to
.envfile
-
Test the setup
uv run test_server.py
-
Find uv path
# Windows where uv # macOS/Linux which uv
-
Edit Claude Desktop config
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json{ "mcpServers": { "ticktick": { "command": "/path/to/uv", "args": ["run", "--directory", "/path/to/ticktick-mcp", "-m", "ticktick_mcp.cli", "run"] } } } -
Restart Claude Desktop
"Show me all my TickTick projects"
"Create a task 'Buy groceries' in my Personal project"
"List all tasks in my Work project"
"Mark task 'Complete report' as done"
"Create 5 tasks for my morning routine in Personal project"
"Show me all overdue tasks"
"Find all tasks containing 'meeting'"
"What tasks do I have due today?"
"Show statistics for my Work project"
"Get upcoming tasks for next 7 days"
"Create multiple tasks: 'Review code', 'Write tests', 'Deploy to staging' all in Development project"
"Update all overdue tasks to be due tomorrow with high priority"
"Show project statistics for Work"
"Which tasks are overdue across all projects?"
"What's my completion rate this month?"
"Show me upcoming deadlines for next week"
π Task Management
| Tool | Description | Parameters |
|---|---|---|
get_task |
Get specific task details | project_id, task_id |
create_task |
Create new task | title, project_id, content?, start_date?, due_date?, priority? |
update_task |
Update existing task | task_id, project_id, title?, content?, start_date?, due_date?, priority? |
complete_task |
Mark task as complete | project_id, task_id |
delete_task |
Delete task | project_id, task_id |
π Project Management
| Tool | Description | Parameters |
|---|---|---|
get_projects |
List all projects | None |
get_project |
Get specific project | project_id |
get_project_tasks |
Get all tasks in project | project_id |
create_project |
Create new project | name, color?, view_mode? |
delete_project |
Delete project | project_id |
β‘ Batch Operations
| Tool | Description | Parameters |
|---|---|---|
create_multiple_tasks |
Create multiple tasks efficiently | tasks (array of task objects) |
update_task_batch |
Update multiple tasks at once | updates (array of update objects) |
π Search & Analytics
| Tool | Description | Parameters |
|---|---|---|
search_tasks |
Search tasks by content/title | query, project_id?, include_completed? |
get_overdue_tasks |
Get all overdue tasks | project_id? |
get_today_tasks |
Get tasks due today | project_id? |
get_upcoming_tasks |
Get tasks due in next N days | days?, project_id? |
get_project_stats |
Get detailed project statistics | project_id |
Set your timezone in .env file:
TICKTICK_USER_TIMEZONE=America/New_York # Eastern Time
TICKTICK_USER_TIMEZONE=Europe/London # GMT
TICKTICK_USER_TIMEZONE=Asia/Tokyo # JSTAuto-detection: If not set, the system will attempt to detect your timezone automatically.
For users of Dida365 (Chinese version of TickTick):
- Register at Dida365 Developer Center
- Add to your
.envfile:TICKTICK_BASE_URL=https://api.dida365.com/open/v1 TICKTICK_AUTH_URL=https://dida365.com/oauth/authorize TICKTICK_TOKEN_URL=https://dida365.com/oauth/token
"Server disconnected" in Claude Desktop
Solutions:
- Check uv path:
where uv(Windows) orwhich uv(macOS/Linux) - Verify config file uses correct absolute paths
- Use forward slashes
/in JSON paths - Completely restart Claude Desktop
- Check logs: Click "Open Logs Folder" in Claude Desktop
"Access token expired"
Solution:
cd ticktick-mcp
source .venv/bin/activate # or .venv\Scripts\activate on Windows
uv run -m ticktick_mcp.cli auth"ZoneInfoNotFoundError"
Solution:
uv pip install tzdata"No virtual environment found"
Solution:
cd ticktick-mcp
uv venv
.venv\Scripts\activate # Windows
# or
source .venv/bin/activate # macOS/Linux
uv pip install -e .ticktick-mcp/
βββ .env.template # Environment variables template
βββ README.md # This file
βββ requirements.txt # Python dependencies
βββ setup.py # Package setup
βββ test_server.py # Connection test script
βββ ticktick_mcp/ # Main package
βββ __init__.py
βββ authenticate.py # OAuth authentication utility
βββ cli.py # Command-line interface
βββ src/ # Source code
βββ __init__.py
βββ auth.py # OAuth implementation
βββ server.py # MCP server implementation
βββ ticktick_client.py # TickTick API client
- π Enhanced Timezone Support - Smart detection + manual override
- β‘ Batch Operations - Process multiple tasks simultaneously
- π Advanced Search - Find tasks across projects with filters
- π Analytics Dashboard - Project statistics and productivity insights
- π Smart Scheduling - Today's tasks, upcoming deadlines, overdue tracking
- π Improved Error Handling - Better user feedback and recovery
- π Performance Optimizations - Faster task processing and API calls
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Model Context Protocol for the amazing protocol
- TickTick for the robust API
- Claude for the powerful AI integration
- All contributors and users who made this project better
Made with β€οΈ by Jaesung Park & Ilya P