ticktick-mcp
An MCP server that connects AI assistants to TickTick, enabling project and task management through natural language, including reading projects, finding tasks, creating tasks, and completing work.
README
TickTick MCP Server
Connect AI assistants to TickTick.
TickTick MCP is a Model Context Protocol (MCP) server for TickTick. It lets Claude and other MCP clients read projects, find tasks, create tasks, and complete work from chat.
What You Can Do
- Ask what is due today.
- Find overdue or high-priority tasks.
- Create tasks and checklist items.
- Update, complete, or delete tasks.
- Manage TickTick projects.
Features
Project Management
- 📁 Get Projects - List all your TickTick projects/lists
- 📁 Get Project by ID - Get specific project details
- 📁 Get Project with Data - Get project with all tasks and kanban columns
- ➕ Create Project - Create new projects with custom colors and view modes
- ✏️ Update Project - Modify project settings
- 🗑️ Delete Project - Remove projects
Task Queries
- ✅ Get Tasks - Retrieve tasks from all projects or a specific one
- 📅 Today's Tasks - Get tasks due today
- ⚠️ Overdue Tasks - Get tasks past their due date
- 🎯 Priority Filter - Get high/medium priority tasks
- 🏷️ Filter by Tag - Get tasks with specific tags
- 🏷️ Get All Tags - List all unique tags
Task Management
- ➕ Create Tasks - Add new tasks with title, priority, due date
- ➕ Create with Subtasks - Add tasks with checklist items
- ➕ Add Subtask - Add subtask to existing task
- ✔️ Complete Tasks - Mark tasks as done
- ✏️ Update Tasks - Modify existing tasks
- 🗑️ Delete Tasks - Remove tasks
Installation
Option 1: pip install (recommended)
pip install ticktick-mcp
Option 2: From source
git clone https://github.com/ainishanov/ticktick-mcp.git
cd ticktick-mcp
pip install -e .
Setup
1. Get TickTick API Access Token
- Go to TickTick Developer Portal
- Create a new application
- Complete OAuth2 flow to get your access token
- Copy the access token
2. Configure Environment
Create a .env file in the project directory:
cp .env.example .env
Edit .env and add your token:
TICKTICK_ACCESS_TOKEN=your_access_token_here
3. Configure MCP clients
pip install adds ticktick-mcp to your Python environment, so cwd is typically not required.
For source checkouts, set cwd to /path/to/ticktick-mcp/src so Python can import ticktick_mcp from the local source tree.
3a. Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\Claude Desktop\claude_desktop_config.json
{
"mcpServers": {
"ticktick": {
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
If you run from source:
{
"mcpServers": {
"ticktick": {
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"cwd": "/path/to/ticktick-mcp/src",
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
3b. Claude Code (CLI)
Add to ~/.mcp.json (macOS/Linux) or %USERPROFILE%\.mcp.json (Windows):
{
"mcpServers": {
"ticktick": {
"type": "stdio",
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
From source:
{
"mcpServers": {
"ticktick": {
"type": "stdio",
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"cwd": "/path/to/ticktick-mcp/src",
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
3c. Cursor
Add a new MCP entry to Cursor’s config (often ~/.cursor/mcp.json):
{
"mcpServers": {
"ticktick": {
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
3d. Continue
Add to Continue’s MCP config file (for example, ~/.continue/config.json):
{
"mcpServers": {
"ticktick": {
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"cwd": "/path/to/ticktick-mcp/src",
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
3e. Generic stdio-compatible MCP config
Most MCP clients accept a similar shape. Use the same block format and place it in your client’s MCP server configuration area:
{
"mcpServers": {
"ticktick": {
"type": "stdio",
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"cwd": "/path/to/ticktick-mcp/src",
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
4. Restart your MCP client
After configuration, restart the MCP client to load the server.
If the tools do not appear or the server reports an auth error, see Troubleshooting.
Usage Examples
Once configured, you can ask Claude:
- "What tasks do I have today?"
- "Show me all high priority tasks"
- "Create a task 'Review PR #123' with high priority due tomorrow"
- "Mark task ID xxx in project yyy as complete"
- "What projects do I have in TickTick?"
Available Tools
Project Tools
| Tool | Description |
|---|---|
get_projects |
List all TickTick projects |
get_project_by_id |
Get specific project by ID |
get_project_with_data |
Get project with tasks and columns |
create_project |
Create a new project |
update_project |
Update project settings |
delete_project |
Delete a project |
Task Query Tools
| Tool | Description |
|---|---|
get_tasks |
Get tasks (all or by project) |
get_today_tasks |
Get tasks due today |
get_overdue_tasks |
Get tasks past due date |
get_high_priority_tasks |
Get high/medium priority tasks |
get_tasks_by_tag |
Get tasks by tag |
get_all_tags |
List all unique tags |
Task Management Tools
| Tool | Description |
|---|---|
create_task |
Create a new task |
create_task_with_subtasks |
Create task with checklist |
add_subtask |
Add subtask to existing task |
complete_task |
Mark task as complete |
update_task |
Update task details |
delete_task |
Delete a task |
Priority Levels
| Value | Level | Emoji |
|---|---|---|
| 0 | None | ⚪ |
| 1 | Low | 🔵 |
| 3 | Medium | 🟡 |
| 5 | High | 🔴 |
Development
# Clone repo
git clone https://github.com/ainishanov/ticktick-mcp.git
cd ticktick-mcp
# Create virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint
ruff check .
OAuth2 Token Generation
If you need to generate an access token programmatically, here's a helper script:
import httpx
CLIENT_ID = "your_client_id"
CLIENT_SECRET = "your_client_secret"
REDIRECT_URI = "http://localhost:8080/callback"
# Step 1: Get authorization URL
auth_url = f"https://ticktick.com/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=tasks:read tasks:write"
print(f"Open this URL in browser:\n{auth_url}")
# Step 2: After redirect, exchange code for token
code = input("Enter the code from redirect URL: ")
response = httpx.post(
"https://ticktick.com/oauth/token",
data={
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"code": code,
"grant_type": "authorization_code",
"redirect_uri": REDIRECT_URI,
},
)
print(response.json())
# Save the access_token to your .env file
Contributing
Contributions are welcome. Start with CONTRIBUTING.md and avoid committing access tokens, OAuth secrets, .env files, or private task data.
Good first contributions are small tests, docs improvements, focused error-message improvements, or mocked TickTick API fixtures.
Security
Do not open public issues with credentials or private task data. See SECURITY.md.
License
MIT License - see LICENSE file for details.
Acknowledgments
- Model Context Protocol by Anthropic
- TickTick for their API
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.