Skip to main content
Glama
README.md
<p align="center">
  <img src="logo.png" width="128" alt="TickTick MCP Logo">
</p>

# 滴答清单 MCP 服务器

[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)

[English Version is Here!](README_en.md)

这是一个基于滴答清单官方API的本地MCP服务,能让用户通过LLM和Agent应用轻松管理待办事项

🔗 **API 文档**: [滴答清单官方 OpenAPI](https://developer.dida365.com/docs#/openapi)

---

## 📢 Update

- **2026-07-04** 新增任务移动、已完成任务查询、项目更新、习惯管理模块 — 共 9 个新工具(move_tasks、get_completed_tasks、update_projects,以及习惯模块的 get_all_habits、get_habit、create_habits、update_habits、checkin_habits、get_habit_checkins)。
- **2026-07-02** 重构认证系统 — 移除环境变量配置,改为运行时 `login` 工具直接传入 OAuth 凭据,支持中国版/国际版一键切换。
- **2026-05-12** 提取工具描述 — 将所有工具的 Prompt 提取为独立 `.txt` 文件,便于维护和修改。
- **2026-05-09** 新增提醒参数 — 创建和更新任务时支持 `reminders`,可设置到期前推送提醒。
- **2026-01-29** 项目结构重构 — 迁移到 `src` 目录布局,代码组织更规范。
- **2026-01-17** 日志系统升级 — 改为基于会话的纯文件日志,交互追踪更清晰。
- **2026-01-12** 全面重构 — 实现无缝本地 OAuth 回调认证、统一日志追踪、移除 python-dotenv 依赖。
- **2025-12-07** 修复时区处理问题。
- **2025-10-17** 优化优先级参数自然语言映射及认证流程。

## ✨ 功能特性

- **🤖 让 AI Agent 管理你的任务**:通过自然语言指令创建、查询、更新和完成任务
- **🔑 运行时 OAuth 认证**:通过 `login` 工具直接传入凭据,浏览器自动打开授权页面,无需配置环境变量
- **📅 任务管理**:支持创建任务、项目、子任务,以及复杂的查询功能
- **🔍 高级查询**:按日期范围、优先级、关键词等多维度筛选任务

## 🚀 安装与使用

### 前置条件

- **Python 版本**:3.10 或更高
- **LLM 客户端**(如 Claude Desktop、OpenCode 等)

### 安装步骤

```bash
# 克隆项目
git clone https://github.com/Code-MonkeyZhang/ticktick-mcp-enhanced.git
cd ticktick-mcp-enhanced

# 创建虚拟环境并安装
uv venv
source .venv/bin/activate  # macOS/Linux
# .venv\Scripts\activate   # Windows

uv pip install -e .
```

### 配置 LLM 客户端

在 Claude Desktop 或其他 LLM 应用的配置文件中添加:

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "ticktick": {
      "command": ["/path/to/ticktick-mcp-enhanced/.venv/bin/ticktick-mcp"],
      "enabled": true
    }
  }
}
```

> **注意**:将 `/path/to/ticktick-mcp-enhanced` 替换为项目的实际绝对路径。Windows 用户请使用双反斜杠 `\\` 或正斜杠 `/`。

### 🔑 获取 API 凭证

在 [滴答清单开发者中心](https://developer.dida365.com/manage)(国内账号)或 [TickTick Developer Center](https://developer.ticktick.com/manage)(国外账号)注册一个应用。

1. 点击 **"New App"**
2. 设置 **Redirect URI** 为 `http://localhost:8000/callback`
3. 保存你的 **Client ID** 和 **Client Secret**

### 使用方法

1. **重启 LLM 客户端**
2. **登录滴答清单**
   - 在对话中输入:"帮我登录滴答清单",并提供你的 Client ID 和 Client Secret
   - AI 会调用 `login` 工具,浏览器自动打开滴答清单授权页
   - 在浏览器中点击允许,完成授权
   - 登录状态保存在本地,后续使用无需重复登录
3. **开始使用**
   - 查看任务:"查看我今天的任务"
   - 创建任务:"创建一个任务:明天下午3点开会"
   - 查询项目:"查看所有清单"

## 🧰 可用工具

此 MCP 向你的 LLM 客户端公开以下工具。

| 类别     | 工具名称                | 功能描述                                       |
| :------- | :---------------------- | :--------------------------------------------- |
| **认证** | `ticktick_status`       | 检查当前的连接和授权状态。                     |
|          | `login`                 | 传入 OAuth 凭据,启动浏览器授权流程并完成登录。 |
| **清单** | `get_all_projects`      | 获取所有清单列表。                             |
|          | `get_project_info`      | 查看特定清单及其中的任务。                     |
|          | `create_project`        | 创建一个新的项目。                             |
|          | `update_projects`       | 原地修改项目名称、颜色、视图或类型(支持批量)。 |
|          | `delete_projects`       | 删除项目。                                     |
| **任务** | `create_tasks`          | 创建任务(支持智能时间识别)。                 |
|          | `update_tasks`          | 修改任务标题、内容、日期或优先级。             |
|          | `complete_tasks`        | 将任务标记为完成。                             |
|          | `delete_tasks`          | 批量删除任务。                                 |
|          | `create_subtasks`       | 为任务添加子任务。                             |
|          | `move_tasks`            | 在不同项目之间移动任务(支持批量)。           |
| **查询** | `query_tasks`           | 高级清单查询(支持日期范围、优先级、搜索词)。 |
|          | `get_completed_tasks`   | 按项目和时间范围查询已完成的任务。             |
| **习惯** | `get_all_habits`        | 获取所有习惯列表。                             |
|          | `get_habit`             | 按 ID 查看单个习惯。                           |
|          | `create_habits`         | 创建习惯(支持批量)。                         |
|          | `update_habits`         | 原地修改习惯属性(支持批量)。                 |
|          | `checkin_habits`        | 给习惯打卡,默认今天(支持批量与补打)。       |
|          | `get_habit_checkins`    | 按日期范围查询习惯的打卡记录。                 |

## 📂 项目结构

```text
ticktick-mcp-enhanced/
├── src/
│   └── ticktick_mcp/
│       ├── __init__.py          # 包入口
│       ├── server.py            # MCP 服务入口
│       ├── auth.py              # OAuth 逻辑与回调服务器
│       ├── client_manager.py    # 客户端管理
│       ├── log.py               # 日志配置
│       ├── ticktick_client.py   # TickTick API 客户端
│       ├── tools/               # 各类工具实现
│       │   ├── project_tools.py # 清单工具
│       │   ├── task_tools.py    # 任务工具
│       │   ├── query_tools.py   # 查询工具
│       │   ├── habit_tools.py   # 习惯工具
│       │   └── prompts/         # 工具描述 (.txt)
│       └── utils/               # 格式化与校验工具
├── pyproject.toml              # 项目配置与依赖
└── README.md                  # 本文档
```

## 📄 许可证

MIT License - 详见 [LICENSE](LICENSE) 文件

## 🙏 致谢

- [Model Context Protocol](https://modelcontextprotocol.io/)
- [滴答清单 Open API](https://developer.dida365.com/docs#/openapi)
- [FastMCP](https://github.com/jlowin/fastmcp)

TDQS

A3.9/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target a distinct resource and action (create/update/delete/query per entity), and descriptions are detailed enough to separate them. Minor overlap exists between get_project_info and query_tasks (both return tasks within a project) and between create_tasks' items parameter and the dedicated create_subtasks tool.

Naming Consistency4/5

The overwhelming majority follow a clear verb_noun pattern (create_tasks, update_projects, get_all_habits, checkin_habits), making the convention predictable. Minor deviations: ticktick_status and login break the pattern by being noun-style and bare-verb respectively.

Tool Count3/5

At 21 tools, this sits in the heavy range, though each tool maps to a genuine operation across three resource types (projects, tasks, habits) plus auth. The count is defensible for a full-featured task manager, but an agent faces a large surface to navigate.

Completeness3/5

Projects and tasks have thorough lifecycle coverage (create/read/update/delete/complete/move/query), and habits have get/create/update/checkin coverage. However, there is no delete_habits tool, leaving habits without a deletion path, and subtasks only support creation with no dedicated update/delete operations.

Maintenance

ActivityStale
ResponsivenessUnresponsive