Skip to main content
Glama
ZH1754629545

TickTick/Dida365 MCP Server

by ZH1754629545
README.md
# 滴答清单 MCP 服务

这是一个为滴答清单(TickTick/Dida365)开发的 Model Context Protocol (MCP) 服务器,使用 TypeScript 编写。该服务允许 AI 助手通过标准化接口与滴答清单 API 进行交互。

## 功能特性

- ✅ 创建、读取、更新、删除任务
- ✅ 管理项目和项目列表
- ✅ 支持任务优先级和截止日期
- ✅ 通过环境变量安全配置 API Token
- ✅ 完整的 TypeScript 类型支持
- ✅ 错误处理和API响应验证

## 快速开始

### 使用MCP (Node版本)

#### DIDA官方获取token

[OpenAPI - API Doc](https://developer.dida365.com/docs/index.html#/openapi?id=get-access-token)

#### 下载

```
npm i dida365-mcp-servers
```

##### 配置json文件

```json
    "dida365": {
      "command": "node",
      "args": [
 			//your download path ; example:C:\\nvm4w\\nodejs\\node_modules\\dida365-mcp-servers\\dist
      ],
      "env": {
        "DIDA365_TOKEN": your TOKEN
      }
    }
```



### 使用本地

### 1. 安装依赖

```bash
npm install
```

### 2. 配置环境变量

复制示例环境变量文件:

```bash
cp .env.example .env
```

编辑 `.env` 文件,添加你的滴答清单 API Token:

```bash
DIDA365_TOKEN=Bearer your_token_here
```

### 3. 获取 API Token

1. 访问 [滴答清单开放平台](https://developer.dida365.com/)
2. 登录你的滴答清单账号
3. 创建新应用
4. 获取访问令牌(Access Token)
5. 将令牌添加到 `.env` 文件中

### 4. 构建和运行

开发模式:

```bash
npm run dev
```

生产模式:

```bash
npm run build
npm start
```

## 可用工具

### 任务管理

#### `create_task` - 创建新任务
- **参数**:
  - `title` (string, 必需): 任务标题
  - `projectId` (string, 必需): 项目ID
  - `content` (string): 任务内容描述
  - `dueDate` (string): 截止日期 (ISO 8601格式)
  - `priority` (number): 优先级 (0-5)

#### `get_task_by_projectId_and_taskId` - 通过项目ID和任务ID获取任务
- **参数**:
  - `projectId` (string, 必需): 项目ID
  - `taskId` (string, 必需): 任务ID

#### `get_tasks_by_projectId` - 通过项目ID获取项目中的任务列表
- **参数**:
  - `projectId` (string, 必需): 项目ID

#### `update_task` - 更新任务
- **参数**:
  - `taskId` (string, 必需): 任务ID
  - `title` (string): 任务标题
  - `content` (string): 任务内容
  - `dueDate` (string): 截止日期
  - `priority` (number): 优先级
  - `status` (number): 任务状态 (0: 未完成, 1: 已完成)

#### `delete_task` - 删除任务
- **参数**:
  - `taskId` (string, 必需): 任务ID
  - `projectId` (string, 必需): 项目ID

#### `complete_task` - 完成任务
- **参数**:
  - `taskId` (string, 必需): 任务ID
  - `projectId` (string, 必需): 项目ID

### 项目管理

#### `get_projects` - 获取项目列表
- **参数**: 无

#### `get_project_by_projectId` - 根据项目ID获取项目
- **参数**:
  - `projectId` (string, 必需): 项目ID

#### `create_project` - 创建新项目
- **参数**:
  - `name` (string, 必需): 项目名称
  - `color` (string): 项目颜色, 例如 "#F18181"
  - `sortOrder` (integer): 排序值, 默认为0
  - `viewMode` (string): 视图模式 ("list", "kanban", "timeline")
  - `kind` (string): 项目类型 ("TASK", "NOTE")

#### `update_project_by_projectID` - 根据projectId更新项目
- **参数**:
  - `projectId` (string, 必需): 项目ID
  - `name` (string): 项目名称
  - `color` (string): 项目颜色
  - `sortOrder` (integer): 排序值, 默认为0
  - `viewMode` (string): 视图模式 ("list", "kanban", "timeline")
  - `kind` (string): 项目类型 ("TASK", "NOTE")

#### `update_project_by_projectID` - 根据projectId删除项目
- **参数**:
  - `projectId` (string, 必需): 项目ID

## 可用资源

### `dida365://tasks`

获取所有任务的JSON格式概览

### `dida365://projects`

获取所有项目的JSON格式概览

## 项目结构

```
├── src/
│   └── index.ts          # 主服务器文件
├── dist/                 # 编译输出目录
├── .env.example          # 环境变量示例
├── package.json          # 项目配置
├── tsconfig.json        # TypeScript 配置
└── README.md            # 项目文档
```

## API 接口说明

本服务使用滴答清单官方 API:

- 基础URL: `https://api.dida365.com/open/v1`
- 认证方式: Bearer Token
- 请求格式: JSON
- 官方文档: https://developer.dida365.com/api#/openap

## 错误处理

服务包含完整的错误处理机制:

- API 调用失败时返回详细错误信息
- 网络错误和超时处理
- 参数验证和类型检查
- Token 验证

## 开发说明

## 贡献

欢迎提交 Issue 和 Pull Request!

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a distinct purpose with clear boundaries: 'complete_task' marks completion, 'create_project' and 'create_task' handle creation, 'delete_project_by_projectID' and 'delete_task' handle deletion, 'get_project_by_projectId' and 'get_task_by_projectId_and_taskId' retrieve specific items, 'get_projects' and 'get_tasks_by_projectId' list items, and 'update_project_by_projectID' and 'update_task' handle updates. No overlap or ambiguity exists between tools.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., 'create_project', 'delete_task', 'update_project_by_projectID'), but there are minor deviations: 'get_project_by_projectId' uses 'Id' inconsistently (camelCase) while others use 'ID', and 'get_task_by_projectId_and_taskId' has a longer, less standard format. Overall, naming is highly readable and predictable.

Tool Count5/5

With 11 tools, the count is well-scoped for a task management server, covering core operations like CRUD for projects and tasks, plus specific actions like completing tasks. Each tool serves a clear purpose without redundancy, fitting typical expectations for such a domain.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for both projects and tasks in Dida365: creation, retrieval (specific and list), updating, and deletion are all supported, along with task completion. No obvious gaps exist; agents can perform all essential operations without dead ends.

Maintenance

ActivityInactive
ResponsivenessUnresponsive