Skip to main content

TickTick MCP Server

License: MIT Python 3.10+

A Model Context Protocol (MCP) server for TickTick task management. This enables AI assistants like Claude to interact with your TickTick tasks.

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

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

  1. Go to TickTick Developer Portal
  2. Create a new application
  3. Complete OAuth2 flow to get your access token
  4. 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 Claude Desktop

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "ticktick": {
      "command": "python",
      "args": ["-m", "ticktick_mcp.server"],
      "env": {
        "TICKTICK_ACCESS_TOKEN": "your_access_token_here"
      }
    }
  }
}

Or if installed from source:

{
  "mcpServers": {
    "ticktick": {
      "command": "python",
      "args": ["C:/Users/yourname/mcp-servers/ticktick/src/ticktick_mcp/server.py"]
    }
  }
}

4. Restart Claude Desktop

After configuration, restart Claude Desktop to load the MCP server.

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! Please feel free to submit a Pull Request.

License

MIT License - see LICENSE file for details.

Acknowledgments

Metadata

Release files for ticktick-mcp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ticktick-mcp 0.2.0
File Size Uploaded Provenance
ticktick_mcp-0.2.0.tar.gz 13.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ticktick-mcp 0.2.0
File Interpreter ABI Platform
ticktick_mcp-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 25.3 kB

Release files / ticktick_mcp-0.2.0.tar.gz

Download URL ticktick_mcp-0.2.0.tar.gz
Size 13.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9b9564a98fbfccbd70531ecd65b1b0381edf6db3fdd2f2f246fef09085032dee
BLAKE2b-256 checksum
How to use checksums
d39c93b5874df9f86f146082fcd0a332235288212c65c4dac7a2eb2ebb7d4ec2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / ticktick_mcp-0.2.0-py3-none-any.whl

Download URL ticktick_mcp-0.2.0-py3-none-any.whl
Size 12.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eff8af1675a3bf90433c1b7f784d91d5c868127a477d8ac3cda98bb12e16bcbc
BLAKE2b-256 checksum
How to use checksums
b38b2d579d4edbf3c2871572c084a26127b74fb2f923f1099c07c242f8ec47fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Security for ticktick-mcp 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page