任务管理协议服务器

一个基于Model Context Protocol (MCP)的TickTick任务管理系统服务器,支持通过Claude等MCP客户端直接管理任务。

  • by jacepark12
  • Python
  • 本地部署
  • 299 星标
  • 更新于
在 GitHub 查看 jacepark12/ticktick-mcp

使用说明

TickTick MCP服务器

A. 模型上下文协议(MCP) TickTick服务器,允许直接通过Claude和其他MCP客户端与您的TickTick任务管理系统进行交互。

特性

  • 📋 查看您的所有TickTick项目和任务
  • ✏️ 通过自然语言创建新项目和任务
  • 🔄 更新现有任务详细信息(标题、内容、日期、优先级)
  • ✅ 将任务标记为已完成
  • 🗑️ 删除任务和项目
  • 🔄 与TickTick的开放式API完全集成
  • 🔌 与Claude和其他MCP客户无缝集成

先决条件

  • Python 3.10或更高版本
  • 紫外线 -快速Python包安装程序和解析器
  • 具有API访问权限的TickTick帐户
  • TickTick API凭据(客户端ID、客户端机密、访问令牌)

安装

  1. 克隆此存储库:

    git clone https://github.com/jacepark12/ticktick-mcp.git
    cd ticktick-mcp
    
  2. 使用uv进行安装:

    # Install uv if you don't have it already
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # Create a virtual environment
    uv venv
    
    # Activate the virtual environment
    # On macOS/Linux:
    source .venv/bin/activate
    # On Windows:
    .venv\Scripts\activate
    
    # Install the package
    uv pip install -e .
    
  3. 使用TickTick进行身份验证:

    # Run the authentication flow
    uv run -m ticktick_mcp.cli auth
    

    这将:

    • 询问您的TickTick客户端ID和客户端密码
    • 打开浏览器窗口,让您登录TickTick
    • 自动将您的访问令牌保存到 .env 文件
  4. 测试您的配置:

    uv run test_server.py
    

    这将验证您的TickTick凭据是否正常工作。

使用TickTick进行身份验证

此服务器使用OAuth2通过TickTick进行身份验证。设置过程很简单:

  1. 在以下网址注册您的申请 TickTick开发者中心

    • 将重定向URI设置为 http://localhost:8000/callback
    • 记下您的客户端ID和客户端密码
  2. 运行身份验证命令:

    uv run -m ticktick_mcp.cli auth
    
  3. 按照提示输入您的客户端ID和客户端密码

  4. 浏览器窗口将打开,供您使用TickTick帐户授权应用程序

  5. 授权后,您将被重定向回应用程序,您的访问令牌将自动保存到 .env 文件

服务器会自动处理令牌刷新,因此除非您撤销访问权限或删除您的 .env 文件。

使用Dida365进行身份验证

滴答清单 - Dida365 是TickTick的中国版本,认证过程与TickTick相似。按照以下步骤设置Dida365身份验证:

  1. 在以下网址注册您的申请 Dida365开发者中心

    • 将重定向URI设置为 http://localhost:8000/callback
    • 记下您的客户端ID和客户端密码
  2. 将环境变量添加到您的 .env 文件:

    TICKTICK_BASE_URL='https://api.dida365.com/open/v1'
    TICKTICK_AUTH_URL='https://dida365.com/oauth/authorize'
    TICKTICK_TOKEN_URL='https://dida365.com/oauth/token'
    
  3. 遵循与TickTick相同的身份验证步骤

使用Claude for Desktop

  1. 安装 Claude桌面版

  2. 编辑您的Claude for Desktop配置文件:

    macOS:

    nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
    

    视窗:

    notepad %APPDATA%\Claude\claude_desktop_config.json
    
  3. 使用绝对路径添加TickTick MCP服务器配置:

    {
       "mcpServers": {
          "ticktick": {
             "command": "<absolute path to uv>",
             "args": ["run", "--directory", "<absolute path to ticktick-mcp directory>", "-m", "ticktick_mcp.cli", "run"]
          }
       }
    }
    
  4. 重新启动桌面版的Claude

连接后,您将看到Claude中可用的TickTick MCP服务器工具,如🔨 (工具)图标。

可用的MCP工具

工具 说明 参数
get_projects 列出您的所有TickTick项目 无
get_project 获取特定项目的详细信息 project_id
get_project_tasks 列出项目中的所有任务 project_id
get_task 获取特定任务的详细信息 project_id, task_id
create_task 创建新任务 title, project_id, content (可选), start_date (可选), due_date (可选), priority (可选)
update_task 更新现有任务 task_id, project_id, title (可选), content (可选), start_date (可选), due_date (可选), priority (可选)
complete_task 将任务标记为已完成 project_id, task_id
delete_task 删除任务 project_id, task_id
create_project 创建新项目 name, color (可选), view_mode (可选)
delete_project 删除项目 project_id

特定任务的MCP工具

任务检索和搜索

工具 说明 参数
get_all_tasks 从所有项目中获取所有任务 无
get_tasks_by_priority 按优先级筛选任务 priority_id (0:无,1:低,3:中,5:高)
search_tasks 按标题、内容或子任务搜索任务 search_term

基于日期的任务检索

工具 说明 参数
get_tasks_due_today 获取今天到期的所有任务 无
get_tasks_due_tomorrow 获取明天到期的所有任务 无
get_tasks_due_in_days 在X天内完成任务 days (0=今天,1=明天,以此类推)
get_tasks_due_this_week 获取未来7天内到期的任务 无
get_overdue_tasks 获取所有逾期任务 无

完成工作(GTD)框架

工具 说明 参数
get_engaged_tasks 获得“参与”任务(高优先级或逾期) 无
get_next_tasks 获取“下一个”任务(中等优先级或明天到期) 无
batch_create_tasks 一次创建多个任务 tasks (任务字典列表)

克劳德提示示例

以下是连接TickTick MCP服务器后与Claude一起使用的一些示例提示:

将军

  • “显示我的所有TickTick项目”
  • “在我的工作项目中以高优先级创建一个名为“完成MCP服务器文档”的新任务”
  • “列出我个人项目中的所有任务”
  • “将“购买杂货”任务标记为已完成”
  • “创建一个名为“假期计划”的蓝色新项目”
  • “我在TickTick的下一个截止日期是什么时候?”

任务筛选查询

  • “我今天有什么任务要交?”
  • “让我看看所有过期的东西”
  • “显示本周到期的所有任务”
  • “搜索有关‘project alpha’的任务”
  • “显示标题或描述中带有“客户端”的所有任务”
  • “显示我的所有高优先级任务”

GTD工作流程

遵循David Allen的“完成任务”框架,管理参与度和下一步行动。

  • Engaged将检索今天到期或逾期的高优先级任务。
  • Next将检索中等优先级或明天到期。
  • 使用batch_creation将复杂操作分解为较小的操作

例如:

  • “从下午2点到8点,用我的待办事项列表中的项目来安排我一天的剩余时间”
  • “引导我完成下一步行动,并帮助我确定明天应该关注什么?”
  • “将此项目分解为5个较小的可操作任务”

发展

项目结构

ticktick-mcp/
├── .env.template          # Template for environment variables
├── README.md              # Project documentation
├── requirements.txt       # Project dependencies
├── setup.py               # Package setup file
├── test_server.py         # Test script for server configuration
└── ticktick_mcp/          # Main package
    ├── __init__.py        # Package initialization
    ├── authenticate.py    # OAuth authentication utility
    ├── cli.py             # Command-line interface
    └── src/               # Source code
        ├── __init__.py    # Module initialization
        ├── auth.py        # OAuth authentication implementation
        ├── server.py      # MCP server implementation
        └── ticktick_client.py  # TickTick API client

身份验证流程

该项目为TickTick实现了完整的OAuth 2.0流程:

  1. 初始设置:用户提供TickTick API客户端ID和机密
  2. 浏览器授权:用户被重定向到TickTick以授予访问权限
  3. 代币接收:本地服务器接收带有授权码的OAuth回调
  4. 代币交换:代码用于交换访问和刷新令牌
  5. 令牌存储:令牌安全地存储在本地 .env 文件
  6. 令牌刷新:客户端在访问令牌过期时自动刷新访问令牌

这通过以编程方式处理整个OAuth流简化了用户体验。

贡献

欢迎投稿!请随时提交拉取请求。

  1. 复刻仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。