A local MCP server that gives Claude access to your TickTick tasks. Built with Node.js/TypeScript, using TickTick's official Open API.
- Node.js v18 or later (v25 is fine)
- A TickTick account
cd ticktick-mcp-server
npm install
npm run build- Go to https://developer.ticktick.com/manage and sign in.
- Click + App Name and give it any name (e.g. "Claude MCP").
- Set the OAuth Redirect URL to exactly:
http://localhost:8080/callback - Save. Note the Client ID and Client Secret.
Run the auth CLI once. It will open a browser, handle the OAuth callback, and save tokens to ~/.config/ticktick-mcp/tokens.json.
npm run auth
# or: node dist/auth-cli.jsFollow the prompts. At the end it prints the exact JSON block you need for the next step.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) and add the ticktick block inside mcpServers. Use the full absolute path to this directory.
{
"mcpServers": {
"ticktick": {
"command": "node",
"args": ["/full/path/to/ticktick-mcp-server/dist/index.js"],
"env": {
"TICKTICK_CLIENT_ID": "your-client-id",
"TICKTICK_CLIENT_SECRET": "your-client-secret"
}
}
}
}Restart Claude Desktop. You should see the hammer (🔨) icon indicating tools are available.
| Tool | Description |
|---|---|
ticktick_get_today_tasks |
All tasks due today plus any overdue, sorted by priority |
ticktick_get_project_tasks |
All incomplete tasks in a given project |
ticktick_create_task |
Create a task (title, project, due date, priority, notes) |
ticktick_update_task |
Update an existing task's details |
ticktick_complete_task |
Mark a task as complete |
ticktick_get_completed_tasks |
Tasks completed within a date range (defaults to yesterday + today) |
ticktick_filter_tasks |
Search tasks by project, date range, priority, tags, and status |
ticktick_move_task |
Move a task from one project to another |
| Tool | Description |
|---|---|
ticktick_get_projects |
List all projects with their IDs |
ticktick_create_project |
Create a new project (name, colour, view mode, kind) |
- "What's on my TickTick today?"
- "Show me all my TickTick projects."
- "Add a task to call the accountant, high priority, due tomorrow."
- "Mark the 'Send invoice' task as done." (you'll need to tell Claude the task ID, or ask it to find the task first)
- "What did I complete yesterday?"
- "Show me all high-priority tasks this week."
- "Move the 'Update website' task to my Work project."
- "Create a new project called 'Q2 Planning'."
Access tokens expire. The server refreshes them automatically using the stored refresh token and writes the new tokens back to ~/.config/ticktick-mcp/tokens.json. You should not need to re-run the auth CLI unless you revoke access from the TickTick developer portal.
The project is designed to be iterated on. To add new tools:
- Add methods to
src/services/ticktick-client.tsfor any new API calls. - Add tool registrations in
src/tools/tasks.tsor create a new file insrc/tools/. - Register the new file in
src/index.ts. - Run
npm run build.
TickTick's Open API reference: https://developer.ticktick.com/api
| File | Purpose |
|---|---|
~/.config/ticktick-mcp/tokens.json |
OAuth tokens (mode 600 — readable only by you) |
dist/index.js |
MCP server (run by Claude Desktop) |
dist/auth-cli.js |
One-shot auth setup |