Skip to main content
Glama

ticktick-mcp-server

A Model Context Protocol (MCP) server that connects AI assistants to your TickTick tasks. Create, read, update, complete, and move tasks — all through natural language.

Platform: macOS only. Token storage uses the macOS Keychain. Linux and Windows support is planned.

How It Works

This server implements the Model Context Protocol, allowing AI assistants like Claude to manage your TickTick tasks through natural conversation. Once configured, you can say things like "create a task to buy groceries due Friday" or "show me all my tasks tagged @work."

Related MCP server: TickTick/Dida365 MCP Server

Prerequisites

  • Node.js 18 or later

  • A TickTick account

  • A TickTick OAuth app:

    1. Go to developer.ticktick.com/manage

    2. Create a new app

    3. Set the Redirect URI to http://localhost:19876/callback

    4. Copy your Client ID and Client Secret

Setup

1. Authorize

Run once to connect the server to your TickTick account:

TICKTICK_CLIENT_ID=your_client_id \
TICKTICK_CLIENT_SECRET=your_client_secret \
npx ticktick-mcp-server-auth

This opens your browser for OAuth consent and stores tokens securely in the macOS Keychain.

2. Configure Your MCP Client

Add to your MCP client config (e.g. Claude Desktop, Claude Code):

{
  "mcpServers": {
    "ticktick": {
      "command": "npx",
      "args": ["-y", "ticktick-mcp-server"],
      "env": {
        "TICKTICK_CLIENT_ID": "your_client_id"
      }
    }
  }
}

Available Tools

Tool

Description

ticktick_create_task

Create a new task (title required; content, project, tags, priority, dates, recurrence optional)

ticktick_get_task

Get full details of a single task

ticktick_get_tasks

List tasks with optional filters (project, tag, date range, completion status)

ticktick_update_task

Modify an existing task's properties (including recurrence)

ticktick_complete_task

Mark a task as done

ticktick_move_task

Move a task between projects

ticktick_get_projects

List all projects/lists

ticktick_create_project

Create a new project/list

Example Prompts

Once configured, try these with your AI assistant:

  • "Show me my tasks due this week"

  • "Create a task called 'Review PR #42' in my Work project with high priority"

  • "Move the grocery list task to my Personal project"

  • "What projects do I have in TickTick?"

  • "Create a recurring task to pay rent on the 1st of every month"

Troubleshooting

Error

Fix

Authentication failed

Re-run the auth command above to refresh tokens

Rate limited

Wait the indicated number of seconds and retry

Auth command hangs

Ensure port 19876 is not in use by another process

TICKTICK_CLIENT_ID not set

Ensure the env var is set in your MCP client config

Limitations

  • macOS only — uses the macOS Keychain for token storage

  • Moving a task creates a copy in the target project and completes the original; task IDs change

  • Listing all tasks (without a project filter) fetches each project sequentially

  • Subtasks and attachments are not currently supported

License

MIT

Available Tools

8 tools
ticktick_complete_taskB

Use this to mark a task as done. Required: projectId and taskId.

Inputs: projectId (required), taskId (required).

ticktick_create_projectA

Use this to create a new TickTick project/list. Required: name (1-200 characters).

Inputs: name (required).

ticktick_create_taskA

Use this to create a new task in TickTick. Required: title. Optional: content, projectId (omit for Inbox), tags (array of strings), priority (0=none, 1=low, 3=medium, 5=high), dueDate, startDate (ISO 8601 strings), repeatFlag (iCalendar RRULE string).

Inputs: title (required), content, projectId, tags, +4 more.

ticktick_get_projectsA

Use this to list all TickTick projects/lists. Returns an array of projects with id, name, and other metadata. No parameters required.

Inputs: no named parameters.

ticktick_get_taskA

Use this to get a single task with full details. Required: projectId and taskId.

Inputs: projectId (required), taskId (required).

ticktick_get_tasksA

Use this to list tasks with optional filters. Fetches all tasks from a project (or all projects) and filters client-side. Optional: projectId, tag, dueBefore, dueAfter (YYYY-MM-DD strings), includeCompleted (default false).

Inputs: projectId, tag, dueBefore, dueAfter, +1 more.

ticktick_move_taskA

Use this to move a task from one project/list to another. This creates the task in the target project and completes it in the source. Required: sourceProjectId, taskId, targetProjectId.

Inputs: sourceProjectId (required), taskId (required), targetProjectId (required).

ticktick_update_taskA

Use this to modify an existing task. Required: taskId. Optional: title, content, tags, priority, dueDate, startDate, repeatFlag. Only provided fields are updated.

Inputs: taskId (required), title, content, tags, +4 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: creating, reading, updating, completing, and moving tasks and projects. No overlap in functionality.

    Naming Consistency5/5

    All tools follow a consistent 'ticktick_verb_noun' pattern (e.g., create_task, get_tasks, complete_task), making it predictable for agents.

    Tool Count5/5

    With 8 tools, the set is well-scoped for a task management API, covering core operations without unnecessary complexity.

    Completeness3/5

    The set covers create, read, and update for tasks and projects, but missing explicit delete operations (no delete_task or delete_project), which may cause agent failures when cleanup is needed.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers