by alexarevalo9
Enables context‑aware task and project operations on the TickTick platform through the Model Context Protocol, supporting OAuth2 authentication and full CRUD capabilities.
TickTick MCP Server provides a set of MCP‑compatible endpoints that allow intelligent, automated interaction with TickTick’s task‑management service. It exposes actions such as creating, reading, updating, and deleting tasks and projects, handling subtasks, priorities, reminders, recurring rules, and more, all secured via OAuth2.
TICKTICK_CLIENT_ID, TICKTICK_CLIENT_SECRET and obtain an TICKTICK_ACCESS_TOKEN (see the OAuth Authentication section).npx command (see serverConfig below).get_task_by_ids, create_task, update_task, complete_task, delete_task, get_user_projects, etc.) with the required parameters.TickTickTaskSchema or TickTickProjectSchema, ready for further processing or display.TASK vs NOTE).npm run start:auth (or the npx command) to open the TickTick login page, grant permissions, and copy the displayed token into TICKTICK_ACCESS_TOKEN..env file) and reuse it until it expires.docker build -t mcp/ticktick -f src/ticktick/Dockerfile . and launch it using the Docker command shown in the README.TICKTICK_CLIENT_ID, TICKTICK_CLIENT_SECRET, and TICKTICK_ACCESS_TOKEN.MCP Server for the TickTick API, enabling task management, project organization, habit tracking, and more.
get_task_by_ids
projectId (string): Project identifiertaskId (string): Task identifierTickTickTaskSchemacreate_task
title (string): Task titleprojectId (string): Project idcontent (optional string): Task contentdesc (optional string): Task descriptionisAllDay (optional boolean): Is all day taskstartDate (optional string): Task start date in "yyyy-MM-dd'T'HH:mm:ssZ" formatdueDate (optional string): Task due date in "yyyy-MM-dd'T'HH:mm:ssZ" formattimeZone (optional string): Task time zone (e.g., "America/Los_Angeles")reminders (optional string[]): List of reminder triggers in iCalendar formatrepeatFlag (optional string): Task repeat flag in iCalendar formatpriority (optional number): Task priority (None: 0, Low: 1, Medium: 3, High: 5)sortOrder (optional string): Task sort orderitems (optional array): List of subtasks with:
title (string): Subtask item titlestartDate (optional string): Subtask date in "yyyy-MM-dd'T'HH:mm:ssZ" formatisAllDay (optional boolean): Is all day subtask itemsortOrder (optional number): Subtask item sort ordertimeZone (optional string): Subtask timezonestatus (optional number): Completion status (Normal: 0, Completed: 1)completedTime (optional string): Completion time in "yyyy-MM-dd'T'HH:mm:ssZ" formatTickTickTaskSchemaupdate_task
taskId (string): Task identifier - Pathid (string): Task identifier - BodyprojectId (string): Project idcreate_taskTickTickTaskSchemacomplete_task
taskId (string): Task identifierprojectId (string): Project identifierdelete_task
taskId (string): Task identifierprojectId (string): Project identifierget_user_projects
TickTickProjectSchemaget_project_by_id
projectId (string): Project identifierTickTickProjectSchemaget_project_with_data
projectId (string): Project identifierproject: Project object matching TickTickProjectSchematasks: Array of task objects matching TickTickTaskSchemacolumns: Optional array of column objects with:
id (optional string)projectId (optional string)name (optional string)sortOrder (optional number)create_project
name (string): Project namecolor (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')TickTickProjectSchemaupdate_project
projectId (string): Project identifiername (optional string): Project namecolor (optional string): Project colorsortOrder (optional number): Project sort orderviewMode (optional string): View mode ('list', 'kanban', 'timeline')kind (optional string): Project kind ('TASK', 'NOTE')TickTickProjectSchemadelete_project
projectId (string): Project identifierTickTickTaskSchema: Defines the structure for task objects including:
TickTickProjectSchema: Defines the structure for project objects including:
When creating or updating tasks, you can include these properties:
0: None1: Low3: Medium5: High0: Normal (not completed)2: Completed["TRIGGER:P0DT9H0M0S", "TRIGGER:PT0S"]"RRULE:FREQ=DAILY;INTERVAL=1""yyyy-MM-dd'T'HH:mm:ssZ""2019-11-13T03:00:00+0000"When creating or updating projects, you can use these properties:
"list": Standard list view"kanban": Kanban board view"timeline": Timeline view"TASK": Task-oriented project"NOTE": Note-oriented projectTo enable OAuth authentication with TickTick, you'll need to register your app and obtain API credentials:
When using the TickTick MCP server for the first time:
When you need to generate a new access token (either for first-time setup or when the token expires), follow these steps:
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:
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>'
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:
Save the access token:
echo "TICKTICK_ACCESS_TOKEN=\"<GENERATED_TOKEN>\"" >> .env
source .env
Security Tips:
- Add
.envto your.gitignorefile- Never commit credentials to version control
- Access tokens expire after 180 days - you'll need to regenerate them
To use this with Claude Desktop, add the following to your claude_desktop_config.json:
{
"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>"
}
}
}
}
{
"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>"
}
}
}
}
To install ticktick-mcp-server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @alexarevalo9/ticktick-mcp-server --client claude
Docker build:
docker build -t mcp/ticktick -f src/ticktick/Dockerfile .
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.
Please log in to share your review and rating for this MCP.
{
"mcpServers": {
"ticktick": {
"command": "npx",
"args": [
"-y",
"@alexarevalo.ia/mcp-server-ticktick"
],
"env": {
"TICKTICK_CLIENT_ID": "<YOUR_CLIENT_ID>",
"TICKTICK_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
"TICKTICK_ACCESS_TOKEN": "<YOUR_ACCESS_TOKEN>"
}
}
}
}claude mcp add ticktick npx -y @alexarevalo.ia/mcp-server-ticktickExplore related MCPs that share similar capabilities and solve comparable challenges
by activepieces
A self‑hosted, open‑source platform that provides a no‑code builder for creating, versioning, and running AI‑driven automation workflows. Pieces are TypeScript‑based plugins that become MCP servers, allowing direct consumption by large language models.
by Skyvern-AI
Automates browser‑based workflows by leveraging large language models and computer‑vision techniques, turning natural‑language prompts into fully functional web interactions without writing custom scripts.
by ahujasid
Enables Claude AI to control Blender for prompt‑assisted 3D modeling, scene creation, and manipulation via a socket‑based Model Context Protocol server.
by PipedreamHQ
Connect APIs quickly with a free, hosted integration platform that enables event‑driven automations across 1,000+ services and supports custom code in Node.js, Python, Go, or Bash.
by elie222
Organizes email inbox, drafts replies in the user's tone, tracks follow‑ups, and provides analytics to achieve inbox zero quickly.
by grab
Enables Cursor AI to read and programmatically modify Figma designs through a Model Context Protocol integration.
by CursorTouch
Enables AI agents to control the Windows operating system, performing file navigation, application launching, UI interaction, QA testing, and other automation tasks through a lightweight server.
by ahujasid
Enables Claude AI to control Ableton Live in real time, allowing AI‑driven creation, editing, and playback of tracks, clips, instruments, and effects through a socket‑based server.
by leonardsellem
Provides tools and resources to enable AI assistants to manage and execute n8n workflows via natural language commands.