返回市场
滴答-MCP服务器

滴答-MCP服务器

作者:zhongwencool4 星标更新:2025-11-18

项目介绍

Dida MCP Server

与TickTick/Dida365任务管理服务交互的模型上下文协议(MCP)服务器。此服务器通过TickTick API提供了管理任务、项目和标签的工具。

License: ISC

概述

Dida MCP Server 基于 Model Context Protocol 框架构建,使AI助手能够与您的TickTick/Dida365账户进行交互。它提供了一整套任务和项目管理工具,允许AI助手根据GTD(Getting Things Done)原则帮助您组织任务。

特性

  • 认证:基于OAuth的TickTick/Dida365 API认证
  • 任务管理:创建、读取、更新、删除和移动任务
  • 项目管理:创建、读取、更新和删除项目
  • 批量操作:高效地管理多个任务
  • GTD助手:内置系统提示,用于基于GTD的任务组织
  • 缓存数据:高效缓存项目和标签数据

预备条件

  • Node.js(v16或更高)
  • npm(v7或更高)
  • TickTick/Dida365账户
  • Dida365开发者中心获取的客户端ID和客户端密钥(用于OAuth认证)

安装

方案1:从npm安装(推荐)

# 全局安装
npm install -g dida-mcp-server

# 或在项目中本地安装
npm install dida-mcp-server

方案2:从源码安装

# 克隆仓库
git clone https://github.com/zhongwencool/dida-mcp-server.git
cd dida-mcp-server

# 安装依赖
npm install

# 构建项目
npm run build

认证

在使用服务器之前,您需要与TickTick/Dida365进行认证。服务器支持两种认证方法:

  1. OAuth认证(V1 API):使用Dida365开放API和OAuth令牌
  2. 用户名/密码认证(V2 API):使用内部API和会话令牌

使用get-access-token

get-access-token脚本处理两个API版本的认证过程。要使用它:

# 如果全局安装
dida-get-token

# 如果本地安装或从源码安装
npm run get-token

该脚本将:

  1. 提示您输入TickTick/Dida365用户名和密码(针对V2 API)
  2. 提示您输入客户端ID和客户端密钥(针对V1 API OAuth)
  3. 在端口3000启动一个本地服务器以处理OAuth回调
  4. 打开浏览器以授权应用程序
  5. 将授权码交换为访问令牌
  6. 将令牌存储在配置文件~/.dida-mcp-config.json
  7. 显示成功页面,其中包含令牌信息和MCP服务器配置

OAuth认证预备条件

要使用OAuth认证,您需要:

  1. 在Dida365开发者中心注册您的应用
  2. 设置您的重定向URI为http://localhost:3000/oauth/callback
  3. 获取客户端ID和客户端密钥

配置文件

认证过程会在~/.dida-mcp-config.json创建一个配置文件,其结构如下:

{
  "access_token": "your-v1-oauth-token",
  "refresh_token": "your-refresh-token",
  "expires_at": 1234567890000,
  "token_type": "bearer",
  "v2_access_token": "your-v2-session-token",
  "inboxId": "your-inbox-project-id"
}

当服务器启动时,会自动检测并使用此文件中的配置。

使用

启动服务器

# 如果全局安装
dida-mcp-server

# 如果本地安装或从源码安装
npm start

服务器将尝试使用存储的令牌进行自动认证,并显示认证状态。

连接到MCP客户端

您可以使用任何兼容MCP的客户端连接到服务器。服务器提供了一个可以添加到您的MCP客户端配置中的配置:

{
  "mcpServers": {
    "dida": {
      "command": "dida-mcp-server"
    }
  }
}

或者如果您是本地安装的:

{
  "mcpServers": {
    "dida": {
      "command": "node",
      "args": [
        "/path/to/node_modules/dida-mcp-server/dist/index.js"
      ]
    }
  }
}

可用工具

认证工具

  • check-auth-status:检查当前认证状态

项目管理工具

  • list-projects:获取所有项目
  • create-project:创建新项目
  • update-project:更新现有项目
  • delete-project:删除项目
  • refresh-project-cache:手动刷新项目缓存

任务管理工具

  • list-tasks:从项目中获取任务(默认为收件箱)
  • create-task:创建新任务
  • get-task:通过ID获取特定任务
  • update-task:更新任务
  • batch-update-tasks:一次更新多个任务
  • complete-task:标记任务为已完成
  • delete-task:删除任务
  • batch-delete-tasks:一次删除多个任务
  • move-task:将任务移动到不同项目
  • batch-move-tasks:将多个任务移动到不同项目

数据查询工具

  • list-cached-data:查看缓存的项目和标签数据

系统提示

服务器包括两个内置提示:

  1. GTD助手提示:一个系统提示,提供使用工具实现GTD方法论的指导
  2. 处理收件箱提示:一个用户级别的提示,帮助根据GTD原则组织收件箱中的任务

开发

在开发模式下运行

npm run dev

这将以监视模式启动服务器,当更改发生时会自动重新编译和重启。

运行测试

npm test

或者以监视模式运行测试:

npm run test:watch

项目结构

├── dist/              # 编译后的JavaScript文件
├── src/
│   ├── auth/           # 与认证相关的代码
│   ├── projects/       # 项目管理工具
│   ├── resources/      # 资源定义(缓存数据)
│   ├── tasks/          # 任务管理工具
│   ├── types/          # TypeScript类型定义
│   ├── utils/          # 工具函数
│   ├── config.ts       # 配置管理
│   ├── get-access-token.ts  # 令牌获取脚本
│   ├── index.ts        # 主服务器入口点
│   └── systemPrompt.ts # GTD助手系统提示
├── tests/              # 测试文件
├── package.json        # 项目元数据和依赖项
├── LICENSE             # ISC许可证文件
└── tsconfig.json      # TypeScript配置

API文档

该项目使用Dida365开放API。更多信息,请参阅Dida365开放API文档

许可证

ISC

发布到NPM

要将包发布到NPM,请遵循以下步骤:

# 登录到npm(如果尚未登录)
npm login

# 构建项目
npm run build

# 测试包
npm test

# 发布到npm
npm publish

要更新包:

  1. 更新package.json中的版本
  2. 运行npm publish

贡献

欢迎贡献!请随时提交Pull Request。

致谢