Sponsored by Deepsite.site

TickTick MCP Server

Created By
Alex Arevalo8 months ago
A Model Context Protocol (MCP) server designed to integrate with the TickTick task management platform, enabling intelligent context-aware task operations and automation.
Content

TickTick MCP Server

MCP Server for the TickTick API, enabling task management, project organization, habit tracking, and more.

Features

  • Task Management: Create, read, update, and delete tasks with all available properties
  • 📊 Project Management: Create, read, update, and delete projects with customizable views
  • 📋 Subtask Support: Full support for managing subtasks within parent tasks
  • 🔄 Complete Task Control: Set priorities, due dates, reminders, and recurring rules
  • 🔐 OAuth Authentication: Full OAuth2 implementation for secure API access
  • ⚠️ Comprehensive Error Handling: Clear error messages for common issues

Tools

  1. get_task_by_ids

    • Get a specific task by project ID and task ID
    • Inputs:
      • projectId (string): Project identifier
      • taskId (string): Task identifier
    • Returns: Task object matching TickTickTaskSchema
  2. create_task

    • Create a new task in a project
    • Inputs:
      • title (string): Task title
      • projectId (string): Project id
      • content (optional string): Task content
      • desc (optional string): Task description
      • isAllDay (optional boolean): Is all day task
      • startDate (optional string): Task start date in "yyyy-MM-dd'T'HH:mm:ssZ" format
      • dueDate (optional string): Task due date in "yyyy-MM-dd'T'HH:mm:ssZ" format
      • timeZone (optional string): Task time zone (e.g., "America/Los_Angeles")
      • reminders (optional string[]): List of reminder triggers in iCalendar format
      • repeatFlag (optional string): Task repeat flag in iCalendar format
      • priority (optional number): Task priority (None: 0, Low: 1, Medium: 3, High: 5)
      • sortOrder (optional string): Task sort order
      • items (optional array): List of subtasks with:
        • title (string): Subtask item title
        • startDate (optional string): Subtask date in "yyyy-MM-dd'T'HH:mm:ssZ" format
        • isAllDay (optional boolean): Is all day subtask item
        • sortOrder (optional number): Subtask item sort order
        • timeZone (optional string): Subtask timezone
        • status (optional number): Completion status (Normal: 0, Completed: 1)
        • completedTime (optional string): Completion time in "yyyy-MM-dd'T'HH:mm:ssZ" format
    • Returns: Created task object matching TickTickTaskSchema
  3. update_task

    • Update an existing task
    • Inputs:
      • taskId (string): Task identifier - Path
      • id (string): Task identifier - Body
      • projectId (string): Project id
      • All optional fields from create_task
    • Returns: Updated task object matching TickTickTaskSchema
  4. complete_task

    • Mark a task as completed
    • Inputs:
      • taskId (string): Task identifier
      • projectId (string): Project identifier
    • Returns: void
  5. delete_task

    • Delete a task from a project
    • Inputs:
      • taskId (string): Task identifier
      • projectId (string): Project identifier
    • Returns: void
  6. get_user_projects

    • Get all projects for the authenticated user
    • Inputs: None
    • Returns: Array of project objects matching TickTickProjectSchema
  7. get_project_by_id

    • Get a specific project by ID
    • Inputs:
      • projectId (string): Project identifier
    • Returns: Project object matching TickTickProjectSchema
  8. get_project_with_data

    • Get project details along with tasks and columns
    • Inputs:
      • projectId (string): Project identifier
    • Returns: Object containing:
      • project: Project object matching TickTickProjectSchema
      • tasks: Array of task objects matching TickTickTaskSchema
      • columns: Optional array of column objects with:
        • id (optional string)
        • projectId (optional string)
        • name (optional string)
        • sortOrder (optional number)
  9. create_project

    • Create a new project
    • Inputs:
      • name (string): Project name
      • color (optional string): Project color (default: '#4772FA')
      • viewMode (optional string): View mode ('list', 'kanban', 'timeline') (default: 'list')
      • kind (optional string): Project kind ('TASK', 'NOTE') (default: 'TASK')
    • Returns: Created project object matching TickTickProjectSchema
  10. update_project

    • Update an existing project
    • Inputs:
      • projectId (string): Project identifier
      • name (optional string): Project name
      • color (optional string): Project color
      • sortOrder (optional number): Project sort order
      • viewMode (optional string): View mode ('list', 'kanban', 'timeline')
      • kind (optional string): Project kind ('TASK', 'NOTE')
    • Returns: Updated project object matching TickTickProjectSchema
  11. delete_project

    • Delete a project
    • Inputs:
      • projectId (string): Project identifier
    • Returns: void

Schema References

  • TickTickTaskSchema: Defines the structure for task objects including:

    • Basic task properties (id, title, description)
    • Dates and time settings
    • Priority and status
    • Checklist items and subtasks
  • TickTickProjectSchema: Defines the structure for project objects including:

    • Project identification and naming
    • Display settings (color, view mode)
    • Permissions and organization

Tasks Properties

When creating or updating tasks, you can include these properties:

  • Priority Levels:
    • 0: None
    • 1: Low
    • 3: Medium
    • 5: High
  • Status Values:
    • 0: Normal (not completed)
    • 2: Completed
  • Reminder Format:
    • Example: ["TRIGGER:P0DT9H0M0S", "TRIGGER:PT0S"]
    • Follows iCalendar TRIGGER format
  • Recurring Rules (repeatFlag):
    • Example: "RRULE:FREQ=DAILY;INTERVAL=1"
    • Uses RFC 5545 recurrence rules
  • Date Format:
    • ISO 8601 format: "yyyy-MM-dd'T'HH:mm:ssZ"
    • Example: "2019-11-13T03:00:00+0000"

Projects Properties

When creating or updating projects, you can use these properties:

  • View Modes:
    • "list": Standard list view
    • "kanban": Kanban board view
    • "timeline": Timeline view
  • Project Kinds:
    • "TASK": Task-oriented project
    • "NOTE": Note-oriented project

Setup

OAuth Authentication

To enable OAuth authentication with TickTick, you'll need to register your app and obtain API credentials:

First-Time Authorization Flow

When using the TickTick MCP server for the first time:

  1. You'll be prompted to authorize the application
  2. A browser window will open with the TickTick login page
  3. After login, you'll be asked to grant permissions
  4. The access token will be displayed in the page
  5. Copy this token and set it as the TICKTICK_ACCESS_TOKEN environment variable

Generate Access Token

When you need to generate a new access token (either for first-time setup or when the token expires), follow these steps:

  1. Configure your credentials using one of these methods:

    Create a .env file in your project root:

    TICKTICK_CLIENT_ID="<YOUR_CLIENT_ID>"
    TICKTICK_CLIENT_SECRET="<YOUR_CLIENT_SECRET>"
    

    Then load it:

    source .env
    

    This method is recommended because:

    • Credentials persist between terminal sessions
    • Easier to manage multiple configurations
    • Less prone to shell history leaks
    • Can be easily backed up (remember to exclude from version control)

    Option 2: Terminal Environment Variables

    Use single quotes if your credentials contain special characters. Note that these variables will only persist in your current terminal session:

    export TICKTICK_CLIENT_ID='<YOUR_CLIENT_ID>'
    export TICKTICK_CLIENT_SECRET='<YOUR_CLIENT_SECRET>'
    
  2. Run the authentication command:

    If using the published package:

    npx @alexarevalo.ia/mcp-server-ticktick ticktick-auth
    

    If running the MCP server locally:

    npm run start:auth
    

    The process will:

    • Launch your default browser
    • Direct you to TickTick's login page
    • Request necessary permissions
    • Generate and display your access token
  3. Save the access token:

    echo "TICKTICK_ACCESS_TOKEN=\"<GENERATED_TOKEN>\"" >> .env
    source .env
    

Security Tips:

  • Add .env to your .gitignore file
  • Never commit credentials to version control
  • Access tokens expire after 180 days - you'll need to regenerate them

Usage with Claude Desktop

To use this with Claude Desktop, add the following to your claude_desktop_config.json:

NPX

{
  "mcpServers": {
    "ticktick": {
      "command": "npx",
      "args": ["-y", "@alexarevalo.ai/mcp-server-ticktick"],
      "env": {
        "TICKTICK_CLIENT_ID": "<YOUR_CLIENT_ID>",
        "TICKTICK_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "TICKTICK_ACCESS_TOKEN": "<YOUR_ACCESS_TOKEN>"
      }
    }
  }
}

Docker

{
  "mcpServers": {
    "ticktick": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "TICKTICK_CLIENT_ID",
        "-e",
        "TICKTICK_CLIENT_SECRET",
        "-e",
        "TICKTICK_ACCESS_TOKEN",
        "mcp/ticktick"
      ],
      "env": {
        "TICKTICK_CLIENT_ID": "<YOUR_CLIENT_ID>",
        "TICKTICK_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "TICKTICK_ACCESS_TOKEN": "<YOUR_ACCESS_TOKEN>"
      }
    }
  }
}

Build

Docker build:

docker build -t mcp/ticktick -f src/ticktick/Dockerfile .

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

Server Config

{
  "mcpServers": {
    "ticktick": {
      "command": "npx",
      "args": [
        "-y",
        "@alexarevalo.ai/mcp-server-ticktick"
      ],
      "env": {
        "TICKTICK_CLIENT_ID": "<YOUR_CLIENT_ID>",
        "TICKTICK_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "TICKTICK_ACCESS_TOKEN": "<YOUR_ACCESS_TOKEN>"
      }
    }
  }
}
Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
Serper MCP ServerA Serper MCP Server
Playwright McpPlaywright MCP server
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
CursorThe AI Code Editor
TimeA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
WindsurfThe new purpose-built IDE to harness magic
Context7Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
Tavily Mcp
ChatWiseThe second fastest AI chatbot™
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
DeepChatYour AI Partner on Desktop
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
Amap Maps高德地图官方 MCP Server