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

概述
Dida MCP服务器建立在 模型上下文协议 框架,使AI助手能够与您的TickTick/Dida365帐户进行交互。它为任务和项目管理提供了一套全面的工具,允许AI助手根据GTD(完成任务)原则帮助组织任务。
特性
- 认证:O使用TickTick/Dida365 API进行基于作者的身份验证
- 任务管理:创建、读取、更新、删除和移动任务
- 项目管理:创建、读取、更新和删除项目
- 批量操作:同时高效管理多个任务
- GTD助理:基于GTD的任务组织的内置系统提示
- 缓存数据:高效缓存项目和标签数据
先决条件
- Node.js(v16或更高版本)
- npm(v7或更高版本)
- TickTick/Dida365账户
- 来自的客户端ID和客户端密码 Dida365开发者中心 (用于OAuth身份验证)
安装
选项1:从npm安装(推荐)
# Install globally
npm install -g dida-mcp-server
# Or install locally in your project
npm install dida-mcp-server选项2:从源代码安装
# Clone the repository
git clone https://github.com/zhongwencool/dida-mcp-server.git
cd dida-mcp-server
# Install dependencies
npm install
# Build the project
npm run build认证
在使用服务器之前,您需要使用TickTick/Dida365进行身份验证。服务器支持两种身份验证方法:
- OAuth身份验证(V1 API):使用带有OAuth令牌的Dida365 Open API
- 用户名/密码验证(V2 API):使用带有会话令牌的内部API
使用获取访问令牌
这 get-access-token 脚本处理两个API版本的身份验证过程。要使用它:
# If installed globally
dida-get-token
# If installed locally or from source
npm run get-token脚本将:
- 提示您输入TickTick/Dida365用户名和密码(适用于V2 API)
- 提示您 客户端ID和客户端密码 (\[适用于V1 API OAuth\])
- 在端口3000上启动本地服务器以处理OAuth回调
- 打开浏览器以授权应用程序
- 将授权码替换为访问令牌
- 将这两个令牌存储在配置文件中
~/.dida-mcp-config.json - 显示包含令牌信息和MCP服务器配置的成功页面
OAuth身份验证的先决条件
要使用OAuth身份验证,您需要:
- 在Dida365开发者中心注册您的应用程序
- 将重定向URI设置为
http://localhost:3000/oauth/callback - 获取客户端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"
}服务器启动时会自动检测并使用此文件。
用法
启动服务器
# If installed globally
dida-mcp-server
# If installed locally or from source
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:查看缓存的项目和标记数据
系统提示
服务器包括两个内置提示:
- GTD助理提示:系统提示,提供使用工具实施GTD方法的指导
- 处理收件箱提示:一个用户级提示,有助于根据GTD原则组织收件箱中的任务
发展
以开发模式运行
npm run dev这将在监视模式下启动服务器,在进行更改时自动重新编译并重新启动。
运行测试
npm test或者在监视模式下运行测试:
npm run test:watch项目结构
├── dist/ # Compiled JavaScript files
├── src/
│ ├── auth/ # Authentication-related code
│ ├── projects/ # Project management tools
│ ├── resources/ # Resource definitions (cached data)
│ ├── tasks/ # Task management tools
│ ├── types/ # TypeScript type definitions
│ ├── utils/ # Utility functions
│ ├── config.ts # Configuration management
│ ├── get-access-token.ts # Token acquisition script
│ ├── index.ts # Main server entry point
│ └── systemPrompt.ts # GTD assistant system prompt
├── tests/ # Test files
├── package.json # Project metadata and dependencies
├── LICENSE # ISC License file
└── tsconfig.json # TypeScript configurationAPI文档
本项目使用Dida365开放API。有关更多信息,请参阅 Dida365开放式API文档.
许可证
国际协调委员会
向NPM发布
要将包发布到NPM,请执行以下步骤:
# Login to npm (if not already logged in)
npm login
# Build the project
npm run build
# Test the package
npm test
# Publish to npm
npm publish要更新软件包,请执行以下操作:
- 更新中的版本
package.json - 跑
npm publish
贡献
欢迎投稿!请随时提交拉取请求。
致谢
- 模型上下文协议 对于MCP框架
- TickTick/Dida365 用于任务管理服务

