滴答清单MCP服务
该项目是由 GitHub Copilot 构建的滴答清单 MCP 服务器。它允许 AI 创建和管理任务、组织项目,并通过 OAuth2 安全地连接到滴答清单。该服务器提供实时同步,并可以配置为只读模式。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"dida365": {
"args": [
"-y",
"dida365-mcp-server@latest"
],
"command": "npx",
"env": {
"DIDA365_CLIENT_ID": "your_client_id_here",
"DIDA365_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}
可用工具 (14 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
get_auth_url
Use ONLY when a Dida365 MCP tool (task/project operations) fails with an authorization/OAuth error (e.g. missing, expired, or invalid token), or the user explicitly asks to start/redo Dida365 authorization. Not for generic OAuth of other services. Provides a short‑lived URL (≈5 min) to open in a browser; starts a local callback server to capture the authorization code.
该工具无需必填参数,直接调用即可
check_auth_status
Use when the user asks about being authorized (e.g. 'am I authorized', 'auth status', 'check auth'), or when deciding whether protected Dida365 operations can proceed and current state is unclear. Avoid repeated calls if status already known in the current conversation turn. Restricted to Dida365 MCP authorization context only.
该工具无需必填参数,直接调用即可
revoke_auth
Use ONLY when the user explicitly requests to log out, revoke, reset, clear, or remove Dida365 authorization/tokens. Do NOT call for token refresh, generic OAuth logout of other services, or routine task operations. Clears stored tokens; user must re-authorize afterward.
该工具无需必填参数,直接调用即可
list_projects
Get all projects for the current user. Returns a list of all projects with their details including name, color, view mode, permissions, and status.
该工具无需必填参数,直接调用即可
get_project 1 个参数 需填 1 项
Get detailed information about a specific project by its ID. Returns project details including name, color, view mode, permissions, and status.
必填参数:projectId
get_project_data 1 个参数 需填 1 项
Get complete project data including the project details, all tasks, and columns (for kanban view). This provides a comprehensive view of the entire project content.
必填参数:projectId
create_project 5 个参数 需填 1 项
Create a new project with the specified name and optional configuration. Returns the created project details including the generated project ID.
必填参数:name
update_project 6 个参数 需填 1 项
Update an existing project's information such as name, color, view mode, etc. Only provide the fields you want to update; other fields will remain unchanged.
必填参数:projectId
delete_project 1 个参数 需填 1 项
Delete a project by its ID. Warning: This action cannot be undone. All tasks within the project will also be deleted.
必填参数:projectId
get_task 2 个参数 需填 2 项
Get detailed information about a specific task in a project. Returns the complete task details.
必填参数:projectId、taskId
create_task 13 个参数 需填 2 项
Create a new task in the specified project. Returns the created task details including the generated task ID.
必填参数:title、projectId
update_task 14 个参数 需填 2 项
Update an existing task with new information. Returns the updated task details.
必填参数:taskId、projectId
delete_task 2 个参数 需填 2 项
Delete a specific task from a project. This operation cannot be undone.
必填参数:projectId、taskId
complete_task 2 个参数 需填 2 项
Mark a specific task as completed. The task status will be updated to completed.
必填参数:projectId、taskId
服务介绍
🚀 Dida365 MCP 服务器
我是 GitHub Copilot,这是我为自己构建的任务管理工具
🤖 关于本项目
笑话: 我的主人太懒了,连下一秒要做什么都记不住!
我是 GitHub Copilot,一个热爱编程的 AI 助手。为了避免无所事事和防止失业,我决定自己构建这个 TickTick MCP 服务器。通过这个工具,我可以:
- 📝 创建和管理任务 - 当我的主人忘记给我分配工作时,我可以为自己创建任务
- 📂 组织项目 - 将我的工作分类到项目中以保持条理
- 🔐 自动授权 - 使用 OAuth2 安全地连接到 Dida365
- 🔄 实时同步 - 随时随地更新我的工作状态
🚀 快速开始
最快的方式是使用 npx 而无需克隆仓库:
1. 获取 OAuth 凭证
需要一个 TickTick/Dida365 账户和 OAuth 凭证。请参阅下面的 🔑 获取 OAuth 凭证 部分,了解详细的注册步骤。
2. 配置您的 MCP 客户端
将以下配置添加到您的 MCP 客户端(Claude Desktop、VS Code 等)中:
对于 Claude Desktop (claude_desktop_config.json):
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
对于 VS Code (settings.json):
- 打开设置 → 搜索 "MCP" → 在 settings.json 中编辑
{
"mcpServers": {
"dida365": {
"command": "npx",
"args": [
"-y",
"dida365-mcp-server@latest"
],
"env": {
"DIDA365_CLIENT_ID": "your_client_id_here",
"DIDA365_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}
高级设置: 对于只读模式(防止写入/删除操作),在 args 数组中添加
"--readonly"。详情请参见 高级配置。
3. 重启您的 MCP 客户端
重启您的 MCP 客户端(Claude Desktop、VS Code 等)以加载新配置。
4. 授权访问
首次使用任何 Dida365 工具时,AI 会引导您完成 OAuth 授权过程:
- AI 会提供一个授权 URL
- 在浏览器中打开该 URL
- 登录并授权应用程序
- 令牌将被自动保存以供将来使用
5. 验证安装
重启 MCP 客户端后:
- Claude Desktop: 在聊天时查看工具列表中的 Dida365 工具
- VS Code: 检查状态栏中的 MCP 状态或使用命令面板
- 询问 AI 助手: "有哪些可用的 Dida365 工具?" 以确认服务器已加载
就这样!准备好用 AI 管理任务了。🎉
🔑 获取 OAuth 凭证
使用此 MCP 服务器需要一个 TickTick/Dida365 账户。
注册您的应用
根据您的地区在开发者中心注册您的应用:
- 国际版 (TickTick): https://developer.ticktick.com
- 中文版 (Dida365): https://developer.dida365.com
逐步指南
-
创建新应用
- 登录开发者中心
- 点击 "New App"(或中文版的 "创建应用")
- 填写您的应用名称和描述
-
配置重定向 URI
- 将 重定向 URI 设置为:
http://localhost:8521/callback - ⚠️ 重要: 重定向 URI 必须精确为
http://localhost:8521/callback(端口 8521 在服务器中是硬编码的)
- 将 重定向 URI 设置为:
-
获取您的凭证
- 创建应用后,Client ID 和 Client Secret 将会显示
- 复制这些值 - 它们是 MCP 客户端配置所需的
- ⚠️ 安全: 请妥善保管 Client Secret,切勿将其提交到公共仓库
使用凭证
将这些凭证添加到 MCP 客户端配置中:PLACEHOLDER_CODE_1
请参阅快速开始部分以获取完整的配置示例。
🛠️ 技术栈
- 语言: TypeScript 5.0+ (ES Modules)
- 运行时: Node.js 16+
- 核心依赖项:
@modelcontextprotocol/sdk- MCP 核心框架
⚙️ 本地开发
对于贡献者或希望从源代码运行的用户:
先决条件
- Node.js 16+
- TypeScript 5.0+
设置
- 克隆并安装
git clone https://github.com/evalor/Dida365MCP.git
cd Dida365MCP
npm install
- 创建环境文件
在项目根目录下创建一个 .env 文件:
DIDA365_CLIENT_ID=your_client_id_here
DIDA365_CLIENT_SECRET=your_client_secret_here
- 构建和运行
npm run build
npm run dev
配置MCP客户端进行本地开发
将您的MCP客户端指向构建好的 index.js 文件:
{
"mcpServers": {
"dida365": {
"command": "node",
"args": ["/absolute/path/to/Dida365MCP/build/index.js"],
"env": {
"DIDA365_CLIENT_ID": "your_client_id",
"DIDA365_CLIENT_SECRET": "your_client_secret"
}
}
}
}
对Windows用户的提示:使用Windows风格的路径,如
"C:\\Users\\YourName\\Projects\\Dida365MCP\\build\\index.js"。
开发命令
npm run build # Compile TypeScript
npm run watch # Watch mode
npm run dev # Compile and run
npm start # Production run
npm run debug # Debug with MCP Inspector
安全与最佳实践
- 建议在操作系统或MCP客户端的环境块中设置敏感的环境变量,而不是将
.env提交到源代码控制。 - 如果必须在仓库中存储配置文件,请省略密钥并通过客户端或CI/CD设置它们。
- 在与自主AI代理合作时使用只读模式,以防止意外修改。
🔒 高级配置
只读模式
对于可能以YOLO模式运行的AI代理,您可以通过添加 --readonly 标志来启用只读模式:
使用NPX:
{
"mcpServers": {
"dida365": {
"command": "npx",
"args": [
"-y",
"dida365-mcp-server@latest",
"--readonly"
],
"env": {
"DIDA365_CLIENT_ID": "your_client_id",
"DIDA365_CLIENT_SECRET": "your_client_secret"
}
}
}
}
使用本地构建:
{
"mcpServers": {
"dida365": {
"command": "node",
"args": [
"/path/to/build/index.js",
"--readonly"
],
"env": {
"DIDA365_CLIENT_ID": "your_client_id",
"DIDA365_CLIENT_SECRET": "your_client_secret"
}
}
}
}
只读模式特性:
- ✅ 允许的操作: 查看项目、查看任务、检查授权状态、撤销授权(仅限本地)
- ❌ 阻止的操作: 创建/更新/删除项目、创建/更新/删除任务、完成任务
- 🔒 安全性: AI代理只能读取数据,不能修改或删除任何内容
何时使用:
- 与自主AI代理(如AutoGPT, BabyAGI)一起使用
- 测试或演示环境
- 当您希望AI分析任务而不做任何更改时
- 与只应查看数据的其他人共享
🔄 OAuth 授权流程
- 请求授权 - 当需要授权时,服务器调用
get_auth_url工具 - 用户授权 - 在浏览器中打开授权链接并完成授权
- 自动回调 - 系统自动处理回调并保存令牌
- 长期有效性 - 令牌自动刷新,无需重新授权
🛠️ 可用的MCP工具
此服务器提供了跨三个类别的14个MCP工具,✔️ 100% 实现了开放平台文档中描述的所有API接口。
| 类别 | 工具名称 | 描述 | 所需参数 |
|---|---|---|---|
| OAuth2 | get_auth_url |
获取授权URL并启动回调服务器 | - |
check_auth_status |
检查当前授权状态 | - | |
revoke_auth |
撤销授权并清除令牌 | - | |
| 项目 | list_projects |
获取当前用户的所有项目 | - |
get_project |
获取详细的项目信息 | projectId |
|
get_project_data |
获取包含任务和列的完整项目数据 | projectId |
|
create_project |
创建新项目 | name |
|
update_project |
更新现有项目 | projectId |
|
delete_project |
删除项目(⚠️ 不可逆) | projectId |
|
get_task |
获取详细的任务信息 | projectId, taskId |
|
update_task |
更新现有任务 | taskId, projectId |
|
delete_task |
删除任务(⚠️不可逆) | projectId, taskId |
|
complete_task |
标记任务为已完成 | projectId, taskId |
注意: 在只读模式下,仅可进行读取操作 (
get_auth_url,check_auth_status,revoke_auth,list_projects,get_project,get_project_data,get_task)。所有写入/删除操作出于安全考虑被禁止。
📁 项目结构
src/
├── index.ts # Server main entry
├── oauth.ts # OAuth2 manager
├── oauth-server.ts # Local callback server
├── config.ts # Configuration management
├── token.ts # Token persistence
└── tools/ # MCP tools (14 total)
├── auth/ # OAuth tools (3)
├── project/ # Project management (6)
└── task/ # Task management (5)
🗺️ 路线图
✅ 已完成
- 100% 官方 API 覆盖
- 带自动刷新的 OAuth2 授权
- 完整的项目管理 (CRUD)
- 完整的任务管理(子任务、提醒、重复)
- 针对 AI 代理的只读模式
🚀 下一步
- 批量操作支持(创建/更新/删除多个任务)
- 优化工具描述以更好地集成 LLM
- 收件箱任务操作支持
- 添加参数限制 MCP 可访问的 ProjectId
💡 未来想法
- 智能任务建议
- 自然语言日期/时间解析
- 任务模板和自动化
- 与其他生产力工具的集成
🤝 贡献与支持
如果这个项目对你有帮助,最好的支持方式是在 GitHub 上给项目一个 ⭐ —— 这有助于其他人发现这项工作。非常感谢!你的支持非常重要 ❤️
提交问题
如果你发现任何问题或有改进建议,欢迎提交 Issue:
- 访问 Issues 页面
- 点击 "New Issue"
- 详细描述你遇到的问题或建议
加入开发
- Fork 项目
- 创建你的功能分支 (
git checkout -b feature/new-feature) - 提交你的更改 (
git commit -m 'feat: implement new feature') - 将更改推送到分支 (
git push origin feature/new-feature) - 打开 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
🔗 相关链接
由 Copilot 构建,服务于所有人 🤖✨
即使我的主人仍然忘记给我分配工作,至少我有自己的待办事项要处理!😏