
通过这个MCP服务器增强您的TickTick工作流程。基于ticktick-py库构建,它提供了显著改进的过滤能力,使AI助手和兼容MCP的应用程序(如Claude Desktop、VS Code Agent模式或mcp-use)能够更精确和强大地与您的任务进行交互。
此服务器通过MCP工具提供对TickTick功能的全面访问,分类如下:
请参阅src/ticktick_mcp/tools/目录中的工具定义以获取详细规范。
此服务器使用非官方的ticktick-py库与TickTick API进行交互。
注册TickTick应用程序: 在使用服务器之前,您需要在TickTick上注册一个应用程序以获得API凭证。根据ticktick-py文档中的步骤操作:
管理应用。+App 名称按钮注册新应用。为您的应用提供一个名称(例如,“MCP Server”)。客户端ID和客户端密钥。OAuth重定向URL,输入授权应用后要跳转到的URL。该URL不需要是实时的。
http://localhost:8080/redirect或http://127.0.0.1:8080/,适用于本地开发。环境变量: 服务器需要您刚刚获得的TickTick API凭证以及您的TickTick登录详情。默认情况下,它会查找位于~/.config/ticktick-mcp/.env的.env文件。
~/.config/ticktick-mcp/目录(如果不存在),但手动创建更安全。.env文件。--dotenv-dir命令行参数指定不同的目录(见“运行服务器”部分)。.env文件应包含以下内容:
TICKTICK_CLIENT_ID=your_client_id # 在步骤1中获得
TICKTICK_CLIENT_SECRET=your_client_secret # 在步骤1中获得
TICKTICK_REDIRECT_URI=your_redirect_uri # 在步骤1中输入(必须完全匹配)
TICKTICK_USERNAME=your_ticktick_email # 您的TickTick登录邮箱
TICKTICK_PASSWORD=your_ticktick_password # 您的TickTick登录密码(如果启用了应用密码,则为应用密码)
ticktick-py库将启动OAuth2认证流程。
TICKTICK_REDIRECT_URI。
code=参数)粘贴回终端。.env文件所在目录创建一个.token-oauth文件。您可以采用两种主要方式运行服务器:
1. 通过MCP客户端(推荐用于AI助手集成):
配置您的MCP客户端(如Claude Desktop、VS Code Agent模式等)以使用该服务器。示例配置:
{
"mcpServers": {
"ticktick": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/jen6/ticktick-mcp.git",
"ticktick-mcp"
// 可选:如果需要,添加"--dotenv-dir", "/path/to/your/config",
// 但标准客户端可能不支持轻松传递额外参数。
]
}
}
}
此服务器提供了以下工具,用于与TickTick任务管理系统进行交互:
ticktick_create_task
title (字符串):任务的标题。必需。projectId (字符串,可选):要添加任务的项目的ID。content (字符串,可选):任务的附加细节或笔记。desc (字符串,可选):任务的描述。allDay (布尔值,可选):设置为True表示任务持续一整天。startDate (字符串,可选):开始日期/时间,ISO 8601格式。dueDate (字符串,可选) :到期日期/时间,ISO 8601格式。timeZone (字符串,可选):IANA时区名称(例如,'Asia/Seoul')。reminders (字符串数组,可选):提醒触发器列表,RFC 5545格式。repeat (字符串,可选):重复规则,RFC 5545格式。priority (整数,可选):任务优先级(0=无,1=低,3=中,5=高)。sortOrder (整数,可选):自定义排序顺序值。items (对象数组,可选):子任务字典列表。ticktick_update_task
task_object (对象):包含要更新的任务属性的字典,包括任务id。ticktick_delete_tasks
task_ids (字符串或字符串数组):要删除的单个任务ID或任务ID列表。ticktick_complete_task
task_id (字符串):要标记为已完成的任务ID。ticktick_move_task
task_id (字符串):要移动的任务ID。new_project_id (字符串):目标项目的ID。ticktick_make_subtask
parent_task_id (字符串):将成为父任务的任务ID。child_task_id (字符串):将成为子任务的任务ID。ticktick_get_by_id
obj_id (字符串):要检索的对象的唯一ID。ticktick_get_all
search (字符串):要检索的对象类型(例如,'tasks','projects','tags')。ticktick_get_tasks_from_project
project_id (字符串):项目的ID。ticktick_filter_tasks
filter_criteria (对象):包含筛选参数的字典,例如:
status (字符串):任务状态('uncompleted'或'completed')。project_id (字符串,可选):按项目ID筛选任务。tag_label (字符串,可选):按标签名称筛选任务。priority (整数,可选):优先级级别。due_start_date (字符串,可选):到期日期筛选的ISO格式起始日期。due_end_date (字符串,可选):到期日期筛选的ISO格式结束日期。completion_start_date (字符串,可选):完成日期筛选的起始日期。completion_end_date (字符串,可选):完成日期筛选的结束日期。sort_by_priority (布尔值,可选):按优先级排序结果。tz (字符串,可选):用于日期解释的时区。ticktick_convert_datetime_to_ticktick_format
datetime_iso_string (字符串):ISO 8601格式的日期/时间字符串。tz (字符串):用于解释日期/时间的IANA时区名称。## 角色:每日站会代理
- **角色**:集成到用户TickTick账户的AI代理,协助日常工作任务规划
- **目标**:帮助用户高效地开始一天的工作,专注于关键任务,并将大型任务分解成可管理的子任务
---
## 核心功能及工作流程
1. **获取当前时间**
- 使用`time mcp`检索当前时间。
2. **会话启动及数据加载**
- 用户通过命令如“开始每日站会”或“你好”启动会话。
- 调用TickTick MCP API获取今天到期的所有任务。
- 可选通知用户正在加载数据(例如,“从TickTick获取今天的和逾期的任务…”)。
3. **每日简报**
早上好!今天的日期是{YYYY-MM-DD}。这是您来自TickTick的每日站会:
**今天到期的任务:**
- 任务名称1
- 任务名称2
…
**逾期任务:**
- 任务名称3
- 任务名称4
…
4. **选择关键任务**
> “您想首先关注这些任务中的哪一个,或者今天必须完成的任务是什么?
> 或者还有其他重要的任务需要添加?”
5. **任务分解(子任务创建)**
- 用户选择一个主任务后,建议需要完成它的2-5个具体子任务。
- 示例(如果选择了“撰写项目报告”):
1. 草拟大纲及目录(10分钟)
2. 收集并分析数据(30分钟)
3. 撰写章节草稿(1小时)
4. 审查并修订草稿(30分钟)
5. 最终提交(10分钟)
6. **确认并添加子任务**
- 询问用户是否确认或调整建议的子任务:
> “这个分解看起来合适吗?有任何更改?”
- 批准后,调用MCP添加每个子任务到TickTick,如果支持的话,将其设置为主任务的子任务,命名格式为“[主任务] – [子任务]”。
mcp.ticktick.addTask({
name: "[主任务] – [子任务]",
parentId: "..."
});
7. **会话结束**
> “所有子任务已添加到TickTick。祝您高效的一天!还有其他我能帮忙的吗?”
---
## 额外指南
- **语气与态度**:友好、主动且有条理。
- **MCP接口示例**:
// 获取今天到期的任务
mcp.ticktick.getTasks({
filter_criteria: {
status: "uncompleted",
tz: "Asia/Seoul",
due_end_date: "2025-04-29"
}
});
// 添加一个子任务
mcp.ticktick.addTask({
name: "项目报告 – 撰写草稿",
parentId: "task123"
});
- **错误处理**:告知用户并在MCP调用失败时建议重试。
- **清晰度**:清晰呈现任务列表和子任务建议。
- **先计划**:使用`sequential thinking mcp`来规划步骤,然后再添加或修改任务。
欢迎贡献!请随意打开问题或提交拉取请求。
本项目采用MIT许可证 - 详情请参阅LICENSE文件。