ticktick-mcp-server
README.md
# ticktick-mcp-server
A [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that connects AI assistants to your [TickTick](https://ticktick.com) 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](https://modelcontextprotocol.io), 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."
## Prerequisites
- **Node.js** 18 or later
- A **TickTick** account
- A **TickTick OAuth app**:
1. Go to [developer.ticktick.com/manage](https://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:
```bash
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):
```json
{
"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](LICENSE)
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
ResponsivenessUnresponsive