使用说明
TickTick MCP服务器
将AI助手连接到TickTick。
TickTick MCP是一种 模型上下文协议(MCP) 服务器 TickTick。它允许Claude和其他MCP客户端从聊天中读取项目、查找任务、创建任务和完成工作。
你能做什么
- 问今天要交什么。
- 查找过期或高优先级的任务。
- 创建任务和检查表项。
- 更新、完成或删除任务。
- 管理TickTick项目。
特征
项目管理
- 📁 获取项目 -列出您的所有TickTick项目/列表
- 📁 按ID获取项目 -获取具体项目详细信息
- 📁 使用数据获取项目 -获取包含所有任务和看板列的项目
- ➕ 创建项目 -使用自定义颜色和视图模式创建新项目
- ✏️ 更新项目 -修改项目设置
- 🗑️ 删除项目 -删除项目
任务查询
- ✅ 获取任务 -从所有项目或特定项目中检索任务
- 📅 今天的任务 -获取今天到期的任务
- ⚠️ 逾期任务 -让任务超过截止日期
- 🎯 优先级筛选器 -获得高/中优先级任务
- 🏷️ 按标签筛选 -获取带有特定标签的任务
- 🏷️ 获取所有标签 -列出所有唯一标签
任务管理
- ➕ 创建任务 -添加带有标题、优先级和截止日期的新任务
- ➕ 使用子任务创建 -添加带有检查表项目的任务
- ➕ 添加子任务 -将子任务添加到现有任务中
- ✔️ 完成任务 -将任务标记为已完成
- ✏️ 更新任务 -修改现有任务
- 🗑️ 删除任务 -删除任务
安装
选项1:pip安装(推荐)
pip install ticktick-mcp
选项2:来源
git clone https://github.com/ainishanov/ticktick-mcp.git
cd ticktick-mcp
pip install -e .
设置
1.获取TickTick API访问令牌
- 首选 TickTick开发者门户
- 创建新应用程序
- 完成OAuth2流程以获取您的访问令牌
- 复制访问令牌
2.配置环境
创建一个 .env 项目目录中的文件:
cp .env.example .env
编辑 .env 并添加您的令牌:
TICKTICK_ACCESS_TOKEN=your_access_token_here
3.配置MCP客户端
pip install 添加 ticktick-mcp 到你的Python环境,所以 cwd 通常不需要。
对于源代码签出,请设置 cwd 到 /path/to/ticktick-mcp/src 因此Python可以导入 ticktick_mcp 来自本地源代码树。
3a。克劳德桌面
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\Claude Desktop\claude_desktop_config.json
{
"mcpServers": {
"ticktick": {
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
如果从源代码运行:
{
"mcpServers": {
"ticktick": {
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"cwd": "/path/to/ticktick-mcp/src",
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
3b。克劳德代码(CLI)
添加 ~/.mcp.json (macOS/Linux)或 %USERPROFILE%\.mcp.json (Windows):
{
"mcpServers": {
"ticktick": {
"type": "stdio",
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
来源:
{
"mcpServers": {
"ticktick": {
"type": "stdio",
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"cwd": "/path/to/ticktick-mcp/src",
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
3c。光标
在Cursor的配置中添加新的MCP条目(通常 ~/.cursor/mcp.json):
{
"mcpServers": {
"ticktick": {
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
3d。继续
添加到Continue的MCP配置文件(例如, ~/.continue/config.json):
{
"mcpServers": {
"ticktick": {
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"cwd": "/path/to/ticktick-mcp/src",
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
3e。通用stdio兼容MCP配置
大多数MCP客户端接受类似的形状。使用相同的块格式并将其放置在 您客户的MCP服务器配置区域:
{
"mcpServers": {
"ticktick": {
"type": "stdio",
"command": "python",
"args": ["-m", "ticktick_mcp.server"],
"cwd": "/path/to/ticktick-mcp/src",
"env": {
"TICKTICK_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}
4.重新启动MCP客户端
配置后,重新启动MCP客户端以加载服务器。
如果工具未出现或服务器报告身份验证错误,请参阅 故障排除.
使用示例
配置后,您可以询问Claude:
- “我今天有什么任务?”
- “显示所有高优先级任务”
- “创建一个任务‘审查PR#123’,该任务具有明天到期的高优先级”
- “将项目yyy中的任务ID xxx标记为已完成”
- “TickTick中有哪些项目?”
可用工具
项目工具
| 工具 | 说明 |
|---|---|
get_projects |
列出所有TickTick项目 |
get_project_by_id |
按ID获取特定项目 |
get_project_with_data |
获取包含任务和列的项目 |
create_project |
创建新项目 |
update_project |
更新项目设置 |
delete_project |
删除项目 |
任务查询工具
| 工具 | 说明 |
|---|---|
get_tasks |
获取任务(全部或按项目) |
get_today_tasks |
获取今天到期的任务 |
get_overdue_tasks |
获取过期任务 |
get_high_priority_tasks |
获得高/中优先级任务 |
get_tasks_by_tag |
按标签获取任务 |
get_all_tags |
列出所有唯一标签 |
任务管理工具
| 工具 | 说明 |
|---|---|
create_task |
创建新任务 |
create_task_with_subtasks |
使用检查表创建任务 |
add_subtask |
将子任务添加到现有任务中 |
complete_task |
将任务标记为已完成 |
update_task |
更新任务详细信息 |
delete_task |
删除任务 |
优先级
| 值 | 级别 | 表情符号 |
|---|---|---|
| 0 | 无 | ⚪ |
| 1 | 低 | 🔵 |
| 3 | 中等 | 🟡 |
| 5 | 高 | 🔴 |
发展
# Clone repo
git clone https://github.com/ainishanov/ticktick-mcp.git
cd ticktick-mcp
# Create virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint
ruff check .
OAuth2令牌生成
如果你需要以编程方式生成访问令牌,这里有一个辅助脚本:
import httpx
CLIENT_ID = "your_client_id"
CLIENT_SECRET = "your_client_secret"
REDIRECT_URI = "http://localhost:8080/callback"
# Step 1: Get authorization URL
auth_url = f"https://ticktick.com/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=tasks:read tasks:write"
print(f"Open this URL in browser:\n{auth_url}")
# Step 2: After redirect, exchange code for token
code = input("Enter the code from redirect URL: ")
response = httpx.post(
"https://ticktick.com/oauth/token",
data={
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"code": code,
"grant_type": "authorization_code",
"redirect_uri": REDIRECT_URI,
},
)
print(response.json())
# Save the access_token to your .env file
贡献
欢迎捐款。从...开始 贡献.md 并避免提交访问令牌、OAuth秘密等, .env 文件或私有任务数据。
好的第一个贡献是小测试,文档改进,重点错误消息改进,或模拟TickTick API固定装置。
发布新版本的维护人员应遵循 发布清单.
安全
不要使用凭据或私有任务数据打开公共问题。看 安全.md.
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
