A Model Context Protocol server that gives LLMs full access to TickTick. Tasks, projects, habits, focus timers, tags, filters, calendar — all of it.
Overview
A Model Context Protocol server that gives LLMs full access to TickTick. Tasks, projects, habits, focus timers, tags, filters, calendar — all of it. Then add it to your AI client of choice: Add to ~/Library/Application Support/Claude/claude_desktop_config.json: Then set the environment variables in your shell. Add to ~/.codeium/windsurf/mcp_config.json: "Add a task to my Shopping list due tomorrow" "Check in my meditation habit for today" "Show me what I focused on this week" "Move all tasks tagged #backlog to the Archive project" Plus 4 read-only : ticktick://profile · ticktick://settings · ticktick://projects · ticktick://tags By default every client starts its own stdio process. To run one long-lived server that many clients share:
README
Quick Start
pip install mcp-ticktick
Then add it to your AI client of choice:
What Can It Do?
“Add a task to my Shopping list due tomorrow”
“Check in my meditation habit for today”
“Show me what I focused on this week”
“Move all tasks tagged #backlog to the Archive project”
| Domain | Tools | Highlights |
|---|---|---|
| Tasks | 10 | Create, edit, complete, delete, move, subtasks, trash |
| Projects | 5 | CRUD with fuzzy name matching |
| Tags | 6 | Create, rename, merge, hierarchies |
| Folders | 4 | Group projects into folders |
| Habits | 8 | Track, check in, streaks, sections |
| Filters | 4 | Saved custom filters |
| Focus | 5 | Pomodoro records, stats, session history |
| Calendar | 3 | Connected calendars and events |
Plus 4 read-only resources: ticktick://profile · ticktick://settings · ticktick://projects · ticktick://tags
Shared HTTP server
By default every client starts its own stdio process. To run one long-lived server that many clients share:
TICKTICK_MCP_TRANSPORT=http TICKTICK_MCP_PORT=8502 mcp-ticktick
{
"mcpServers": {
"ticktick": { "type": "http", "url": "http://127.0.0.1:8502/mcp" }
}
}
The endpoint has no authentication: anything that can connect to it can use every tool with your TickTick credentials, including deleting projects. So:
- The server only binds to loopback (
TICKTICK_MCP_HOSTmust be127.0.0.1,localhost, or::1). Any local process can still connect, so only use HTTP mode on a machine where every local user and process is trusted with your TickTick account. - It always turns on FastMCP’s Host/Origin protection, which FastMCP leaves off by default. That check only stops DNS-rebinding attacks from web pages. It does not authenticate anyone.
- To reach it from another machine, put it behind a reverse proxy that controls who can connect: a bearer token, mTLS, an IP allowlist on a private network, or similar. Then add the proxy’s hostname to
FASTMCP_HTTP_ALLOWED_HOSTS, e.g.FASTMCP_HTTP_ALLOWED_HOSTS='["mcp.example.com"]'. If a browser-based client will call it, also add that client’s origin toFASTMCP_HTTP_ALLOWED_ORIGINS, e.g.'["https://mcp.example.com"]'. Never expose the port or the proxy publicly without access control.
Authentication
You need a TickTick OAuth app (free to create).
| Variable | Required | Description |
|---|---|---|
TICKTICK_ACCESS_TOKEN |
Yes | OAuth access token |
TICKTICK_CLIENT_ID |
No | OAuth client ID (for token refresh) |
TICKTICK_CLIENT_SECRET |
No | OAuth client secret (for token refresh) |
TICKTICK_REFRESH_TOKEN |
No | OAuth refresh token |
TICKTICK_V2_SESSION_TOKEN |
No | Browser t cookie for v2 features |
v1 vs v2: The access token covers tasks and projects. For tags, folders, filters, habits, focus, and calendar you also need a v2 session token — grab the
tcookie from your browser while logged into ticktick.com.
Development
git clone https://github.com/karbassi/mcp-ticktick.git
cd ticktick-mcp
uv sync --all-extras
uv run ruff check src/ tests/
uv run pytest
License
Install
This server does not publish a one-line install command.
Open the repository installation guide New to MCP? Start with the mcpskill.org guide →Configuration
{
"mcpServers": {
"ticktick": {
"command": "mcp-ticktick",
"env": {
"TICKTICK_ACCESS_TOKEN": "your-access-token",
"TICKTICK_V2_SESSION_TOKEN": "your-session-cookie"
}
}
}
}